@devchangjun/ctm 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +219 -0
- package/dist/index.js +1191 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# ctm — Colo Ticket Manager
|
|
2
|
+
|
|
3
|
+
Jira 티켓 기반 Git 브랜치 관리 CLI.
|
|
4
|
+
이슈 조회 → 브랜치 생성 → PR 생성까지 터미널에서 한 번에.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 설치
|
|
9
|
+
|
|
10
|
+
### Homebrew (권장)
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
brew tap ckdwns9121/ctm
|
|
14
|
+
brew install ctm
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 업데이트
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
brew upgrade ctm
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 시작하기
|
|
26
|
+
|
|
27
|
+
최초 1회 설정이 필요합니다.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
ctm init
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
아래 정보를 순서대로 입력합니다.
|
|
34
|
+
|
|
35
|
+
| 항목 | 설명 |
|
|
36
|
+
|---|---|
|
|
37
|
+
| Jira base URL | `https://yourcompany.atlassian.net` |
|
|
38
|
+
| Jira email | Atlassian 계정 이메일 |
|
|
39
|
+
| Jira API token | [토큰 발급](https://id.atlassian.com/manage-profile/security/api-tokens) |
|
|
40
|
+
| 기본 프로젝트 | 목록에서 선택 |
|
|
41
|
+
| Base branch | `main` (기본값) |
|
|
42
|
+
|
|
43
|
+
설정은 `~/.config/ctm/config.json`에 저장됩니다.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 명령어
|
|
48
|
+
|
|
49
|
+
### `ctm ls` — 내 이슈 목록
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
ctm ls # 기본 프로젝트의 담당 이슈
|
|
53
|
+
ctm ls --all # 전체 프로젝트
|
|
54
|
+
ctm ls --status "In Progress"
|
|
55
|
+
ctm ls --project CGKR
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
상태별로 그룹화하여 출력합니다.
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
In Progress
|
|
62
|
+
🔴 CGKR-1423 로그인 페이지 버그 수정 [Bug]
|
|
63
|
+
🟡 CGKR-1401 마이페이지 UI 개선 [Story]
|
|
64
|
+
|
|
65
|
+
To Do
|
|
66
|
+
🟢 CGKR-1388 회원가입 이메일 인증 추가 [Task]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### `ctm start [key]` — 브랜치 생성
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
ctm start # 인터랙티브 이슈 선택
|
|
75
|
+
ctm start CGKR-1423 # 특정 이슈 바로 시작
|
|
76
|
+
ctm start 1423 # 숫자만 입력해도 OK (기본 프로젝트 자동 적용)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
1. 이슈를 선택하면 브랜치 타입을 고릅니다: `feat` / `fix` / `refactor` / `qa` / `chore`
|
|
80
|
+
2. Jira 이슈 타입에 따라 자동으로 타입을 추천합니다 (Bug → `fix`, Story → `feat` 등)
|
|
81
|
+
3. 브랜치명을 확인 후 체크아웃
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Branch type › fix
|
|
85
|
+
Branch name › fix/CGKR-1423 (수정 가능)
|
|
86
|
+
|
|
87
|
+
✓ Switched to fix/CGKR-1423
|
|
88
|
+
✓ Jira status → In Progress
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
현재 브랜치에 uncommitted 변경사항이 있으면 stash 여부를 물어봅니다.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### `ctm st` — 현재 상태 확인
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
ctm st
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
현재 브랜치에 연결된 Jira 이슈 정보와 변경 현황을 출력합니다.
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Branch: fix/CGKR-1423
|
|
105
|
+
Ticket: CGKR-1423 — 로그인 페이지 버그 수정
|
|
106
|
+
Status: In Progress
|
|
107
|
+
Priority: 🔴 High
|
|
108
|
+
URL: https://yourcompany.atlassian.net/browse/CGKR-1423
|
|
109
|
+
|
|
110
|
+
Changes: 3 file(s) +42 -7
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### `ctm done [key]` — PR 생성
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
ctm done # 현재 브랜치 기준으로 자동 감지
|
|
119
|
+
ctm done CGKR-1423 # 명시적 지정
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
1. 현재 브랜치를 push
|
|
123
|
+
2. GitHub PR 생성 (`.github/pull_request_template.md`가 있으면 자동 적용)
|
|
124
|
+
3. Jira 이슈에 PR URL 코멘트 추가
|
|
125
|
+
|
|
126
|
+
> **사전 요구사항**: GitHub CLI(`gh`)가 설치되고 인증되어 있어야 합니다.
|
|
127
|
+
> ```bash
|
|
128
|
+
> brew install gh
|
|
129
|
+
> gh auth login
|
|
130
|
+
> ```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### `ctm clean [key]` — 브런치 정리
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
ctm clean # 현재 브런치 삭제
|
|
138
|
+
ctm clean CGKR-1423 # 해당 이슈 브런치 삭제
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
로컈 브런치를 삭제하고, 원격 브런치도 함께 삭제할지 물어뼅니다.
|
|
142
|
+
현재 브런치를 삭제할 경우 base branch로 자동 전환됩니다.
|
|
143
|
+
worktree가 연결되어 있으면 함께 제거할지 자동으로 물어뼅니다.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### `ctm wt` — worktree 관리
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
ctm wt # 현재 레포의 worktree 목록
|
|
151
|
+
ctm wt rm CGKR-1423 # worktree 제거 (브런치 유지)
|
|
152
|
+
ctm wt rm CGKR-1423 --branch # worktree + 브런치 함께 삭제
|
|
153
|
+
ctm wt rm CGKR-1423 --force # 변경사항이 있어도 강제 제거
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
PATH BRANCH HEAD
|
|
158
|
+
/Users/dev/my-app (main) main abc1234
|
|
159
|
+
/Users/dev/my-app--feat-CGKR-1423 feat/CGKR-1423 def5678
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
## 일반적인 워크플로우
|
|
164
|
+
|
|
165
|
+
### 브런치 모드 (simpler)
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
ctm ls # 내 이슈 확인
|
|
169
|
+
ctm start CGKR-1423 # 브런치 생성 + Jira 'In Progress'
|
|
170
|
+
ctm st # 현재 상태 확인
|
|
171
|
+
ctm done # push + PR 생성
|
|
172
|
+
ctm clean # 머지 후 브런치 정리
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### worktree 모드 (병렬 작업)
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
ctm ls # 내 이슈 확인
|
|
179
|
+
ctm start CGKR-1423 --worktree # 별도 디렉토리 생성, 브런치 전환 없음
|
|
180
|
+
cd /path/to/my-app--feat-CGKR-1423
|
|
181
|
+
ctm done # 해당 worktree에서 push + PR
|
|
182
|
+
ctm wt rm CGKR-1423 # 머지 후 worktree 정리
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 브랜치 네이밍 규칙
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
{type}/{ISSUE-KEY}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
| 타입 | 용도 |
|
|
194
|
+
|---|---|
|
|
195
|
+
| `feat` | 신규 기능, Story, Feature |
|
|
196
|
+
| `fix` | 버그 수정 |
|
|
197
|
+
| `refactor` | 리팩토링 |
|
|
198
|
+
| `qa` | QA, 테스트 |
|
|
199
|
+
| `chore` | 기타 작업, Task, Epic |
|
|
200
|
+
|
|
201
|
+
예: `feat/CGKR-1423`, `fix/CGKR-1388`
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 요구사항
|
|
206
|
+
|
|
207
|
+
- macOS (arm64 / x64)
|
|
208
|
+
- Git
|
|
209
|
+
- GitHub CLI (`gh`) — `ctm done` 사용 시 필요
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 설정 파일
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
~/.config/ctm/config.json
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
`ctm init`으로 재설정하면 덮어씁니다.
|