์์
ยท์ค์ต ํ ๋จ๋ GitHub ์ ์ฅ์๋ฅผ GUI์์ ๊ณจ๋ผ ๋ฐฑ์
ยท์์นด์ด๋ธยท์ด๋ฆ ๋ณ๊ฒฝยท์ญ์ ํ๋ ๋ฐ์คํฌํฑ ์ฑ์
๋๋ค.
Windows, macOS, Linux์์ ๋์ํฉ๋๋ค (PySide6).
ํ๋ก์ ํธ: https://github.com/progh2/repomanager
ํํ์ด์ง: https://progh2.github.io/repomanager/ โ ์ด์์ฒด์ ๋ฅผ ์์์ ๊ฐ์งํด ๋ง๋ ํ์ผ์ ๋ฐ๋ก ๋ฐ์ ์ ์์ต๋๋ค.
์ง์ ๊ณ ๋ฅด๋ ค๋ฉด Releases์์ ๋ฐ์ผ์ธ์. ์์ถ ํ์ผ์ด ์๋๋ผ ๋ฐ๋ก ์คํ๋๋ ํ์ผ์ ๋๋ค.
| ํ๋ซํผ | ํ์ผ | ์คํ ๋ฐฉ๋ฒ |
|---|---|---|
| Windows | RepoManager-<๋ฒ์ >-windows-x86_64.exe |
๋๋ธํด๋ฆญ |
| macOS (Apple Silicon) | RepoManager-<๋ฒ์ >-macos-arm64.dmg |
๋๋ธํด๋ฆญ โ Applications๋ก ๋์ด๋๊ธฐ |
| macOS (Intel) | RepoManager-<๋ฒ์ >-macos-x86_64.dmg |
๋๋ธํด๋ฆญ โ Applications๋ก ๋์ด๋๊ธฐ |
| Linux | RepoManager-<๋ฒ์ >-linux-x86_64 |
chmod +x ํ ์คํ |
SHA256SUMS.txt๋ก ๋ฌด๊ฒฐ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค (sha256sum -c SHA256SUMS.txt).
๋ฏธ์๋ช ๋น๋๋ผ ์ฒซ ์คํ ์ ๊ฒฝ๊ณ ๊ฐ ๋์ต๋๋ค.
-
Windows: SmartScreen โ ์ถ๊ฐ ์ ๋ณด โ ์คํ
-
macOS: ์ฑ์ ํ ๋ฒ ์คํํด ์ฐจ๋จ๋นํ ๋ค, ์์คํ ์ค์ โ ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์์ ์ด๊ณ ์๋์ชฝ์ ํ์ธ ์์ด ์ด๊ธฐ๋ฅผ ๋๋ฆ ๋๋ค. (ํฐ๋ฏธ๋์ด ํธํ๋ฉด
xattr -dr com.apple.quarantine /Applications/RepoManager.app)macOS 15(Sequoia)๋ถํฐ ์ฐํด๋ฆญ โ ์ด๊ธฐ ์ฐํ๊ฐ ์ ๊ฑฐ๋์ด ์ ๋ฐฉ๋ฒ์ ์จ์ผ ํฉ๋๋ค. macOS 14 ์ดํ์์๋ ์ฐํด๋ฆญ โ ์ด๊ธฐ โ ์ด๊ธฐ ๋ ๋ฉ๋๋ค.
-
Linux:
chmod +x RepoManager-*-linux-x86_64
์ค์น ํ์๋ ์ฑ์ด ์ค์ค๋ก ์ ๋ฒ์ ์ ํ์ธํ๊ณ ์ ๋ฐ์ดํธํฉ๋๋ค (์๋ ์ฐธ์กฐ).
- ํ์ฑ / ์์นด์ด๋ธ ์ด์ค ๋ชฉ๋ก๊ณผ โ โ ์ด๋
- ๊ฒ์, Owner, ๊ณต๊ฐ๋ฒ์, Pages, Fork, ์ ๋ ฌ(์ด๋ฆ / ์ ๋ฐ์ดํธ / ์์ฑ)
- ์์ฑ์ผยท์ ๋ฐ์ดํธ์ผ, Public/Private, ์ค๋ช , PagesยทFork ์์ด์ฝ
- ๋๋ธํด๋ฆญ ๋๋ ๋ฒํผ์ผ๋ก GitHub / Pages ์ด๊ธฐ
- ๋ก๋ฉ ์คํผ๋ ์ค๋ฒ๋ ์ด, ์์ ์ ์บ์ ๋ชฉ๋ก ์ฆ์ ํ์ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋ก๊ณ ์นจ
- ์ฐฝ ํฌ๊ธฐยทํํฐยท์ ๋ ฌ ์ํ ๊ธฐ์ต
- ์ค๋ช ํธ์ง, AI ์ถ์ฒ ์ค๋ช (GitHub Models / Copilot ๊ถํ ์, UI ์ธ์ด๋ก ์์ฑ)
- ๊ณต๊ฐ/๋น๊ณต๊ฐ ํ ๊ธ
- ์ด๋ฆ ๋ณ๊ฒฝ โ URLยทremoteยทPages ๋ฑ์ด ๊นจ์ง ์ ์๋ค๋ ๊ฒฝ๊ณ +
RENAME์ ๋ ฅ ํ์ธ - ์ ํ ์ ์ฅ์ ์ผ๊ด ์์นด์ด๋ธ / ํ์ฑ ๋ณต์ / ์ญ์
- ์ญ์ ยท์ด๋ฆ ๋ณ๊ฒฝ ์ ํ์ธ ์ฐฝ (
DELETE/RENAME์ ๋ ฅ) - ์ญ์ ์ CSV ๋ด๋ณด๋ด๊ธฐ, ZIP ๋ฐฑ์
git clone --mirror๋ก ๋ชจ๋ ๋ธ๋์นยทํ๊ทธ ํฌํจ- Issues / Pull requests / Milestones๋ฅผ JSON์ผ๋ก ํจ๊ป ์ ์ฅ
- ์์ธ ํจ๋, ์๋จ ZIP ๋ฐฑ์ , ์ญ์ ํ์ธ ์ฐฝ์์ ์คํ
- ๋ก์ปฌ์ Git์ด ์์ผ๋ฉด ๋ฉํ๋ฐ์ดํฐ๋ง ์ ์ฅํ๊ณ ์๋ด
- PAT / GitHub CLI / ์น ๋ก๊ทธ์ธ(OAuth Device Flow)
- ํ ํฐ์ OS ์๊ฒฉ ์ฆ๋ช ์ ์ฅ์(keyring)์ ์ ์ฅ
- ๋ค๊ตญ์ด UI: ํ๊ตญ์ด / English / ๆฅๆฌ่ช (์์คํ ๊ธฐ๋ณธ)
- ๋ผ์ดํธ / ๋คํฌ ํ ๋ง
- ๋จ์ถํค:
F5ยทCtrl+R์๋ก๊ณ ์นจ,Delete์ญ์ ํ์ธ,Ctrl+,์ค์ ,Ctrl+Q์ข ๋ฃ - API rate limit ํ์, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ปค๋ก UI ๋ฉ์ถค ๋ฐฉ์ง
- ์๋ ์ ๋ฐ์ดํธ โ ์ ๋ฆด๋ฆฌ์ค๋ฅผ ํ์ธํด ๋ด๋ ค๋ฐ๊ณ ์ค์ค๋ก ๊ต์ฒด ํ ์ฌ์์
- ์คํํ์ผ๋ก ์ธ ๋๋ Python์ด ํ์ ์์ต๋๋ค.
- ์์ค์์ ์คํํ ๋: Python 3.11+
- GitHub ๊ณ์ (์ฑ์์ ๋ก๊ทธ์ธ ๋ฒํผ์ผ๋ก ์ฐ๊ฒฐ โ ํ ํฐ์ ์ง์ ๋ง๋ค ํ์ ์์)
ghCLI: ๋ถํ์ (์ค์น๋ผ ์์ผ๋ฉด ํ ํฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ ํธ์ ๊ธฐ๋ฅ์ผ ๋ฟ)git: ZIP ๋ฐฑ์ ์ ๋ธ๋์นยท์ปค๋ฐ๊น์ง ๋ด๊ณ ์ถ์ ๋๋ง ํ์. ์์ผ๋ฉด ์ด์ยท๋ง์ผ์คํค ๋ฉํ๋ฐ์ดํฐ๋ง ๋ฐฑ์ ํฉ๋๋ค.
# Windows โ ๋๋ธํด๋ฆญ ๋๋ ํฐ๋ฏธ๋
run.bat
# macOS / Linux
./run.sh์ฒซ ์คํ ์ .venv ์์ฑ๊ณผ ์์กด์ฑ ์ค์น๋ฅผ ์๋์ผ๋ก ํฉ๋๋ค.
์์กด์ฑ๋ง ๋ค์ ์ค์น: run.bat --update / ./run.sh --update
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -r requirements.txt
# ๋๋: pip install -e ".[dev]"
python -m repomanager์ ํ์ ์ผ๋ก .env์ ํ ํฐ์ ๋ ์ ์์ต๋๋ค (copy / cp .env.example .env).
GITHUB_TOKEN=ghp_your_token_here
GITHUB_OAUTH_CLIENT_ID=Iv1... # ์น ๋ก๊ทธ์ธ์ฉ(์ ํ)ํ์ผ โ ์ค์ (Ctrl+,) โ GitHub ์น์ผ๋ก ๋ก๊ทธ์ธ
๋ฒํผ์ ๋๋ฅด๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฆฝ๋๋ค. ํ๋ฉด์ ๋์จ ์ฝ๋๋ฅผ ์
๋ ฅํ๊ณ Authorize๋ฅผ ๋๋ฅด๋ฉด ๋์
๋๋ค.
ํ ํฐ์ ์ง์ ๋ง๋ค ํ์๋, gh CLI๋ฅผ ์ค์นํ ํ์๋ ์์ต๋๋ค.
์์ฒญ ๊ถํ์ repo, delete_repo, read:org์
๋๋ค.
์ฑ์ RepoManager์ OAuth App Client ID๊ฐ ๋ด์ฅ๋ผ ์์ต๋๋ค. Device Flow์ Client ID๋ ๊ณต๊ฐ ์ ๋ณด๋ผ(Client Secret์ ์ฐ์ง ์์ต๋๋ค) ์์ค์ ํฌํจํด๋ ์์ ํฉ๋๋ค. ์ง์ ๋ง๋ OAuth App์ ์ฐ๊ณ ์ถ๋ค๋ฉด ์ค์ ์์ ๋ด๊ฐ ๋ง๋ OAuth App ์ฌ์ฉ์ ์ฒดํฌํ์ธ์.
์ค์ ์ฐฝ์์ Personal Access Token์ ๋ถ์ฌ๋ฃ๊ฑฐ๋, GitHub CLI์์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ธ ์ ์์ต๋๋ค.
gh CLI๋ ์ ํ ์ฌํญ์
๋๋ค โ ์ค์น๋ผ ์์ง ์์๋ ์ฑ์ ์ ์ ๋์ํฉ๋๋ค.
ํ ํฐ ์ฐ์ ์์: ํ๊ฒฝ๋ณ์(.env) โ ์ค์ ์ ์ ์ฅํ ํ ํฐ โ GitHub CLI(gh).
ํ ํฐ์ Windows Credential Manager / macOS Keychain / Linux Secret Service์ keyring์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
keyring์ ์ธ ์ ์์ผ๋ฉด Qt QSettings๋ก ๋์ฒด๋ฉ๋๋ค.
| ์์ | ํ์ ๊ถํ |
|---|---|
| ๋ชฉ๋กยท์์นด์ด๋ธยท์ค๋ช ยท์ด๋ฆ ๋ณ๊ฒฝ | repo |
| ์ญ์ | delete_repo (๋ณ๋) |
| ์กฐ์ง ์ ์ฅ์ | read:org (ํ์ ์) |
Fine-grained PAT๋ ๋์ ์ ์ฅ์์ Administration: Read and write(์ญ์ ยท์ด๋ฆ ๋ณ๊ฒฝ ๋ฑ)๊ฐ ํ์ํ ์ ์์ต๋๋ค.
gh auth refresh -h github.com -s delete_repo์ดํ ์ค์ ์์ CLI ํ ํฐ์ ๋ค์ ๊ฐ์ ธ์ค์ธ์. ์ญ์ ๊ฐ 403์ด๋ฉด ๋์๋ง โ ์ญ์ ๊ถํ ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ด์ฅ Client ID ๋์ ์๊ธฐ ๊ฒ์ ์ฐ๋ ค๋ฉด:
- https://github.com/settings/developers โ New OAuth App
- Callback:
http://127.0.0.1, ์์ฑ ํ Enable device flow ์ฒดํฌ - ์ค์ ์์ ๋ด๊ฐ ๋ง๋ OAuth App ์ฌ์ฉ์ ์ผ๊ณ Client ID๋ง ์ ๋ ฅ (Client Secret์ ๋ฃ์ง ๋ง์ธ์)
- ์ฑ ์คํ โ ํ ํฐ์ด ์์ผ๋ฉด ์ค์ ์๋ด (์บ์๊ฐ ์์ผ๋ฉด ๋ชฉ๋ก์ด ๋ฐ๋ก ํ์๋จ)
- ํ์ผ โ ์ค์ ์์ ์ธ์ฆยท์ธ์ดยทํ ๋ง ๊ตฌ์ฑ
- ์๋ก๊ณ ์นจ (
F5)์ผ๋ก ์ต์ ๋ชฉ๋ก ๋ก๋ - ํํฐยท์ ๋ ฌ๋ก ๋์ ์ขํ๊ธฐ (์: Fork๋ง, Pages ์์, ์ค๋๋ ์ ๋ฐ์ดํธ์)
- ์ผ์ชฝ(ํ์ฑ) / ์ค๋ฅธ์ชฝ(์์นด์ด๋ธ)์์ ์ ํ โ โ / โ ๋ก ์ด๋
- ์๋ ํจ๋์์ ์ค๋ช ยท๊ณต๊ฐ์ฌ๋ถยท์ด๋ฆ ๋ณ๊ฒฝยทPagesยทZIP ๋ฐฑ์
- ์ญ์ ์ : ZIP ๋ฐฑ์
๋๋ CSV ๋ด๋ณด๋ด๊ธฐ โ
DELETE์ ๋ ฅ ํ ์ญ์ - ์ ๋ฒ์ ์ด ๋์ค๋ฉด ์์ ์ ์๋ฆผ โ ๋์๋ง โ ์ ๋ฐ์ดํธ ํ์ธ์ผ๋ก ์ง์ ํ์ธ๋ ๊ฐ๋ฅ
owner-repo-backup-YYYYMMDD-HHMMSS.zip
โโโ README.md
โโโ repository.git/ # bare mirror (์ ์ฒด ๋ธ๋์นยทํ๊ทธ)
โ โโโ ...
โโโ metadata/
โโโ repository.json
โโโ issues.json # issues + PRs
โโโ milestones.json
โโโ README.md
๋ณต์ ์:
git clone repository.git restored-folder- ์ญ์ ๋ ๋๋๋ฆด ์ ์์ต๋๋ค. ์ญ์ ์ ์ ZIP ๋ฐฑ์ ์ ๊ถ์ฅํฉ๋๋ค.
- ์ด๋ฆ ๋ณ๊ฒฝ ์ GitHub URL, git remote, Pages, ๋ถ๋งํฌ, ๋ค๋ฅธ ์ ์ฅ์์ ์ฐธ์กฐ๊ฐ ๊นจ์ง ์ ์์ต๋๋ค.
- ์์นด์ด๋ธ๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ฉฐ ๋์ค์ ํ์ฑ์ผ๋ก ๋๋๋ฆด ์ ์์ต๋๋ค.
- ์ด ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด ๋ฐ์ํ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ์ฑ ์์ ๋๋ค. (์ฑ ๋์๋ง โ ์ ๋ณด)
์คํํ์ผ๋ก ์ค์นํ ๊ฒฝ์ฐ ์ฑ์ด ์ค์ค๋ก ์ต์ ๋ฆด๋ฆฌ์ค๋ก ๊ฐ์ํ๋๋ค.
- ์๋ ํ์ธ โ ์์ ํ ์ ์ ๋ค, ํ๋ฃจ์ ํ ๋ฒ GitHub Releases๋ฅผ ํ์ธํฉ๋๋ค.
- ์๋ ํ์ธ โ ๋์๋ง โ ์ ๋ฐ์ดํธ ํ์ธ
- ๋๊ธฐ โ ๋์๋ง โ ์์ํ ๋ ์๋์ผ๋ก ํ์ธ ์ฒดํฌ ํด์
- ์
๋ฐ์ดํธ ์ฐฝ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ๋ค์ด๋ก๋ ํ ์ค์น๋ฅผ ๋๋ฅด๋ฉด
๋ด๋ ค๋ฐ๊ธฐ โ
SHA256SUMS.txt๊ฒ์ฆ โ ์ฑ ์ข ๋ฃ โ ๊ต์ฒด โ ์๋ ์ฌ์์ ์์ผ๋ก ์งํ๋ฉ๋๋ค. - ํน์ ๋ฒ์ ์ ๋๊ธฐ๋ ค๋ฉด ์ด ๋ฒ์ ๊ฑด๋๋ฐ๊ธฐ๋ฅผ ๋๋ฅด์ธ์ (์๋ ํ์ธ์์๋ง ๋ฌด์).
ํ๋ซํผ๋ณ ๊ต์ฒด ๋ฐฉ์:
| ํ๋ซํผ | ๊ต์ฒด ๋์ |
|---|---|
| Windows | ์คํ ์ค์ด๋ .exe๋ฅผ ์ ํ์ผ๋ก ๋ฎ์ด์ |
| macOS | .dmg๋ฅผ ๋ง์ดํธํด RepoManager.app ๋ฒ๋ค์ ๊ต์ฒดํ๊ณ quarantine ์์ฑ ์ ๊ฑฐ |
| Linux | ์คํ ํ์ผ์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ๋ฐ์ ์์์ ์ผ๋ก ๊ต์ฒด |
์์ค์์ ์คํ ์ค์ด๊ฑฐ๋ ์ค์น ์์น์ ์ฐ๊ธฐ ๊ถํ์ด ์์ผ๋ฉด ์ค์น ๋ฒํผ ๋์
๋ฆด๋ฆฌ์ค ํ์ด์ง ๋งํฌ๊ฐ ํ์๋ฉ๋๋ค. (git pull๋ก ์
๋ฐ์ดํธํ์ธ์.)
ํ๋ซํผ๋ณ ์คํํ์ผ์ GitHub Actions์์ ๋ง๋๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ๋๋ค. ํฌ๋ก์ค ์ปดํ์ผ์ด ์ ๋๋ฏ๋ก ๋ก์ปฌ ๋น๋๋ ํด๋น OS์์๋ง, ํ์ธ์ฉ์ผ๋ก ์๋๋ค.
๋ก์ปฌ์ WindowsยทmacOSยทLinux๋ฅผ ๋ค ๊ฐ์ถ ํ์ ์์ด
.github/workflows/release.yml์ด 4๊ฐ ํ๋ซํผ์ GitHub ๋ฌ๋์์ ๋น๋ํฉ๋๋ค
(ubuntu-22.04, windows-latest, macos-15, macos-15-intel).
Linux๋ glibc ํธํ ๋ฒ์๋ฅผ ๋ํ๋ ค๊ณ ์ผ๋ถ๋ฌ ์ค๋๋ ์ด๋ฏธ์ง๋ฅผ ์๋๋ค.
์๋ ์
๋ฐ์ดํธ๊ฐ ์ด ๋ฆด๋ฆฌ์ค๋ฅผ ์ฝ์ต๋๋ค.
์ด ์ ์ฅ์๋ Actions ์คํ ๋ฒ์๊ฐ local_only(์ ์ฅ์ ์์ฒด ์ก์
๋ง ํ์ฉ)๋ก
์ ํ๋ผ ์์ด, ๊ทธ๋๋ก ๋๋ฉด actions/checkout์กฐ์ฐจ ์ฐจ๋จ๋ฉ๋๋ค.
Settings โ Actions โ General โ Actions permissions์์
Allow progh2, and select non-progh2, actions and reusable workflows โ โ Allow actions created by GitHub
๋ฅผ ์ผ์ฃผ์ธ์. ์ํฌํ๋ก๊ฐ ์ฐ๋ ์ก์
์ ์ ๋ถ GitHub ๊ณต์(actions/*)์ด๋ผ
์ด๊ฒ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์๋ํํฐ ๋ง์ผํ๋ ์ด์ค ์ก์
์ ์ฐ์ง ์์ต๋๋ค
(๋ฆด๋ฆฌ์ค ๋ฐํ๋ ๋ฌ๋์ ๊ธฐ๋ณธ ์ค์น๋ gh CLI๋ก ํฉ๋๋ค).
ํํ์ด์ง๋ฅผ ์ฐ๋ ค๋ฉด Settings โ Pages โ Source: GitHub Actions๋ ํ ๋ฒ ์ผ์ผ ํฉ๋๋ค.
Actions ํญ์์ ์คํ โ ๋ก์ปฌ ์์ ์์
-
๋จผ์
src/repomanager/__init__.py์__version__๊ณผpyproject.toml์version์ ์ฌ๋ ค pushํฉ๋๋ค. -
GitHub โ Actions โ Release โ Run workflow
-
์ต์ ์ ๊ณ ๋ฅด๊ณ ์คํํฉ๋๋ค.
์ ๋ ฅ ๋ป publish์ฒดํฌํ๋ฉด Release๊น์ง ์์ฑ. ํด์ ํ๋ฉด ๋น๋ ์ํฐํฉํธ๋ง tag๋น์๋๋ฉด v<__version__>์ฌ์ฉdraft์ด์์ผ๋ก ๋ง๋ค๊ธฐ prereleaseํ๋ฆฌ๋ฆด๋ฆฌ์ค๋ก ํ์ publish๋ฅผ ์ฒดํฌํ๋ฉด ํ๊ทธ๋ฅผ ๋ก์ปฌ์์ ๋ง๋ค ํ์ ์์ด ํด๋น ์ปค๋ฐ์ ํ๊ทธ๊ฐ ์์ฑ๋๊ณ Release๊ฐ ์ฌ๋ผ๊ฐ๋๋ค. ์ฒดํฌํ์ง ์์ผ๋ฉด 4์ข ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ํฐํฉํธ๋ก๋ง ๋ฐ์ ํ์ธํ ์ ์์ต๋๋ค(14์ผ ๋ณด๊ด).
ํ๊ทธ push
git tag v0.4.1
git push origin v0.4.1 # ๋น๋ + ๋ฐฐํฌ๊ฐ ์๋ ์คํ์ด๋ ์ชฝ์ด๋ ํ๊ทธ๊ฐ __version__๊ณผ ๋ค๋ฅด๋ฉด ๋ฐฐํฌ๋ฅผ ์ค๋จํ๊ณ ,
4๊ฐ ํ๋ซํผ ์ค ํ๋๋ผ๋ ๋น ์ง๋ฉด ๋ถ๋ถ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
์ธ ํ๋ซํผ ๋ชจ๋ ์
๋ก๋ ์ ์ --selftest๋ก ์ค์ ๊ธฐ๋์ ํ์ธํฉ๋๋ค
(UI๋ฅผ ์ ๋ถ ๋ง๋ค๊ณ ์ข
๋ฃ ์ฝ๋๋ก ์ฑ๊ณต/์คํจ๋ฅผ ์๋ฆฝ๋๋ค).
์์
์ด๋ฆ์ RepoManager-<๋ฒ์ >-<ํ๋ซํผ>-<์ํคํ
์ฒ> ํ์์ ์ง์ผ์ผ ํฉ๋๋ค.
์
๋ฐ์ดํฐ๊ฐ ์ด ์ด๋ฆ์ผ๋ก ์๊ธฐ ํ๋ซํผ์ฉ ํ์ผ์ ๊ณ ๋ฆ
๋๋ค.
pip install -r requirements.txt
pip install "pyinstaller>=6.6" "pillow>=10.0" # ๋๋: pip install -e ".[build]"
python packaging/build.py๊ฒฐ๊ณผ๋ฌผ์ dist/release/์ ์๊น๋๋ค.
dist/release/
โโโ RepoManager-0.4.1-linux-x86_64 # ๋๋ -windows-x86_64.exe / -macos-arm64.dmg
โโโ SHA256SUMS.txt
packaging/repomanager.specโ PyInstaller ์ค์ (์์ด์ฝ, ๋ฐ์ดํฐ ํ์ผ, Qt ๋ชจ๋ ์ ์ธ)packaging/build.pyโ ์์ด์ฝ ์์ฑ โ PyInstaller ์คํ โ ์ด๋ฆ ์ ๋ฆฌ โ ์ฒดํฌ์ฌpackaging/make_icons.pyโicon.pngโ.ico/.icns
- ํ ํฐ์ ๋ฐ์ด๋๋ฆฌ์ ๋ฃ์ง ๋ง์ธ์.
- ๋น๋๋ ์๋ช ๋์ง ์์ต๋๋ค. Windows SmartScreen / macOS Gatekeeper ๊ฒฝ๊ณ ๋ ์ ๋ด๋ ค๋ฐ๊ธฐ ์ ์ ์๋ด๋๋ก ๋์ด๊ฐ ์ ์์ต๋๋ค.
- ๋ฆด๋ฆฌ์ค๋ฅผ ์๋ก ์ฌ๋ฆฌ๋ฉด ๊ธฐ์กด ์ฌ์ฉ์์๊ฒ๋ ํ๋ฃจ ์์ ์ ๋ฐ์ดํธ ์๋ฆผ์ด ๋น๋๋ค.
pip install -r requirements.txt
pytestํค๋๋ฆฌ์ค ํ๊ฒฝ(์๋ฒยท์ปจํ ์ด๋)์์๋ Qt ํ๋ซํผ ํ๋ฌ๊ทธ์ธ์ ์คํ์คํฌ๋ฆฐ์ผ๋ก ์ง์ ํฉ๋๋ค.
QT_QPA_PLATFORM=offscreen pytest.github/workflows/ci.yml์ด pushยทPR๋ง๋ค Linux / Windows / macOS์์ ๊ฐ์ ํ
์คํธ๋ฅผ ๋๋ฆฝ๋๋ค.
docs/๊ฐ ๊ณง ํํ์ด์ง์
๋๋ค (https://progh2.github.io/repomanager/).
๋น๋ ๋๊ตฌ ์๋ ์ ์ HTML/CSS/JS๋ผ ํ์ผ์ ๊ทธ๋๋ก ์ด์ด์ ํ์ธํ ์ ์์ต๋๋ค.
python -m http.server -d docs 8000 # http://localhost:8000download.js๊ฐ GitHub Releases API๋ก ์ต์ ์์ฐ์ ์ฐพ์ ๋ฐฉ๋ฌธ์ OS์ ๋ง๋ ๋ค์ด๋ก๋ ๋ฒํผ์ ๋ง๋ญ๋๋ค. API ํธ์ถ์ด ์คํจํ๋ฉด Releases ํ์ด์ง ๋งํฌ๋ก ๋์ฒด๋ฉ๋๋ค.- ๋ฆด๋ฆฌ์ค ์์ฐ ์ด๋ฆ ๊ท์น(
RepoManager-<๋ฒ์ >-<ํ๋ซํผ>-<์ํคํ ์ฒ>)์ ์์กดํ๋ฏ๋ก ์ด๋ฆ์ ๋ฐ๊พธ๋ฉดdocs/download.js์TARGETS๋ ํจ๊ป ๊ณ ์ณ์ผ ํฉ๋๋ค. docs/**๊ฐ ๋ฐ๋๋ฉด.github/workflows/pages.yml์ด ์๋ ๋ฐฐํฌํฉ๋๋ค. ์ต์ด 1ํ๋ง ์ ์ฅ์ Settings โ Pages โ Source: GitHub Actions ์ค์ ์ด ํ์ํฉ๋๋ค (Actions ์คํ ํ์ฉ ๋ฒ์๋ ํจ๊ป ์ด์ด์ผ ํฉ๋๋ค โ ์ ์ต์ด 1ํ ์ ์ฅ์ ์ค์ ์ฐธ๊ณ ).- ๋ง์ค์ฝํธ(
mascot.svg)๋ ์ง์ ๊ทธ๋ฆฐ ์ค๋ฆฌ์ง๋ ์บ๋ฆญํฐ์ ๋๋ค. GitHub์ Octocat ์ด๋ฏธ์ง๋ ์ํ๋ผ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
- PRD.md โ ์ ํ ์๊ตฌ์ฌํญยท๋ฒ์ยท๋ง์ผ์คํค
- GitHub Milestones / Issues โ ๋จ๊ณ๋ณ ๊ณผ์ (M1โM9)
src/repomanager/
__main__.py # python -m repomanager
app.py # QApplication ๋ถํธ์คํธ๋ฉ
config.py # ํ ํฐ / keyring / QSettings / ์
๋ฐ์ดํธ ์ค์
i18n.py # ko / en / ja
models/repository.py
services/
github_client.py # PyGithub ๋ํผ, rate limit
repo_backup.py # ZIP mirror + issues/milestones
repo_cache.py # ์์ ์ ์ฆ์ ํ์์ฉ ๋ชฉ๋ก ์บ์
oauth_device.py # OAuth Device Flow
ai_assist.py # GitHub Models ์ค๋ช
์ถ์ฒ
updater.py # ๋ฆด๋ฆฌ์ค ํ์ธ / ๋ค์ด๋ก๋ / ์๊ธฐ ๊ต์ฒด
workers/ # QRunnable โ UI ์ค๋ ๋ ๋ฐ์์ ์คํ
api_worker.py
update_worker.py
ui/
main_window.py # ๋ฉ๋ดยทํด๋ฐยท์ํ๋ฐ, ์์ปค ๋ฐฐ์
dual_repo_lists.py # ํ์ฑ/์์นด์ด๋ธ ์ด์ค ๋ชฉ๋ก, ํํฐยท์ ๋ ฌ
repo_item_delegate.py # ๋ฆฌ์คํธ ์์ดํ
์ปค์คํ
๊ทธ๋ฆฌ๊ธฐ
repo_detail_panel.py # ์ค๋ช
ยท๊ณต๊ฐ์ฌ๋ถยท์ด๋ฆ ๋ณ๊ฒฝยท๋ฐฑ์
confirm_dialog.py # DELETE ์
๋ ฅ, CSV ๋ด๋ณด๋ด๊ธฐ
rename_dialog.py # RENAME ์
๋ ฅ
settings_dialog.py # ํ ํฐยท์ธ์ดยทํ
๋ง
update_dialog.py # ๋ณ๊ฒฝ ์ฌํญยท๋ค์ด๋ก๋ยท์ค์น
about_dialog.py
loading_overlay.py
theme.py # ๋ผ์ดํธ/๋คํฌ ์ ํ
styles.qss / styles_dark.qss
assets/icon.png # .ico / .icns ์ ์๋ณธ
packaging/
build.py # ์์ด์ฝ โ PyInstaller โ ์ด๋ฆ ์ ๋ฆฌ โ ์ฒดํฌ์ฌ
repomanager.spec # PyInstaller ์ค์
make_icons.py # icon.png โ .ico / .icns
docs/ # ํํ์ด์ง (GitHub Pages)
index.html
style.css
download.js # OS ๊ฐ์ง + ์ต์ ๋ฆด๋ฆฌ์ค ์์ฐ ๋งํฌ
mascot.svg
.github/workflows/
ci.yml # 3๊ฐ OS ํ
์คํธ
release.yml # 4๊ฐ ํ๋ซํผ ๋น๋ยท๋ฐฐํฌ
pages.yml # docs/ ๋ฅผ GitHub Pages ๋ก ๋ฐฐํฌ
tests/ # pytest โ ์๋น์คยท์์ปคยท๋ค์ด์ผ๋ก๊ทธ ๋จ์ ํ
์คํธ
MIT โ LICENSE
