@getsolaris/copse 1.0.0 → 1.0.1
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.ko.md +180 -180
- package/README.md +180 -180
- package/dist/{cop.js → copse.js} +60 -60
- package/package.json +13 -5
package/README.ko.md
CHANGED
|
@@ -12,35 +12,35 @@ Git worktree를 쉽게 관리하세요. 설정 기반 자동화, 모노레포
|
|
|
12
12
|
|
|
13
13
|
## 주요 기능
|
|
14
14
|
|
|
15
|
-
- **TUI 모드** — 인터랙티브 터미널 UI (`
|
|
16
|
-
- **CLI 모드** — 스크립트에서 사용 가능한 커맨드 (`
|
|
15
|
+
- **TUI 모드** — 인터랙티브 터미널 UI (`copse`)
|
|
16
|
+
- **CLI 모드** — 스크립트에서 사용 가능한 커맨드 (`copse add`, `copse list` 등)
|
|
17
17
|
- **설정 기반** — 레포별 훅, 파일 복사, 심볼릭 링크
|
|
18
18
|
- **모노레포 지원** — 패키지 자동 감지, 패키지별 훅, 포커스 추적
|
|
19
|
-
- **헬스 체크** — `
|
|
19
|
+
- **헬스 체크** — `copse doctor`로 worktree 문제 진단
|
|
20
20
|
- **중앙 집중식 worktree** — 기본적으로 `~/.copse/worktrees/`에 모든 worktree 관리
|
|
21
21
|
- **스마트 정리** — 머지된 worktree 자동 감지 및 제거
|
|
22
22
|
- **테마** — 9가지 내장 컬러 테마 (OpenCode, Tokyo Night, Dracula, Nord, Catppuccin, GitHub Dark, One Dark, Monokai, GitHub Light)
|
|
23
|
-
- **템플릿** — 재사용 가능한 worktree 프리셋 (`
|
|
24
|
-
- **크로스 worktree 실행** — 모든 worktree에서 명령 실행 (`
|
|
25
|
-
- **GitHub PR 연동** — PR에서 worktree 생성 (`
|
|
23
|
+
- **템플릿** — 재사용 가능한 worktree 프리셋 (`copse add --template review`)
|
|
24
|
+
- **크로스 worktree 실행** — 모든 worktree에서 명령 실행 (`copse exec "bun test"`)
|
|
25
|
+
- **GitHub PR 연동** — PR에서 worktree 생성 (`copse add --pr 123`)
|
|
26
26
|
- **퍼지 브랜치 피커** — TUI에서 타이핑하면 브랜치 자동완성
|
|
27
27
|
- **라이프사이클 관리** — 비활성/머지된 worktree 자동 감지, 제한 설정
|
|
28
28
|
- **의존성 공유** — `node_modules` 등을 하드링크/심볼릭으로 디스크 절약
|
|
29
|
-
- **Worktree 비교** — worktree 간 변경사항 비교 (`
|
|
30
|
-
- **핀 보호** — worktree를 자동 정리에서 보호 (`
|
|
31
|
-
- **활동 로그** — 생성/삭제/전환/리네임/아카이브/임포트 이벤트 추적 (`
|
|
32
|
-
- **아카이브** — 제거 전 worktree 변경사항을 패치로 보존 (`
|
|
33
|
-
- **브랜치 리네임** — 메타데이터 마이그레이션과 함께 worktree 브랜치 이름 변경 (`
|
|
34
|
-
- **클론 및 초기화** —
|
|
35
|
-
- **Worktree 임포트** — 수동 생성된 worktree 채택 (`
|
|
29
|
+
- **Worktree 비교** — worktree 간 변경사항 비교 (`copse diff feature/a feature/b`)
|
|
30
|
+
- **핀 보호** — worktree를 자동 정리에서 보호 (`copse pin`)
|
|
31
|
+
- **활동 로그** — 생성/삭제/전환/리네임/아카이브/임포트 이벤트 추적 (`copse log`)
|
|
32
|
+
- **아카이브** — 제거 전 worktree 변경사항을 패치로 보존 (`copse archive`)
|
|
33
|
+
- **브랜치 리네임** — 메타데이터 마이그레이션과 함께 worktree 브랜치 이름 변경 (`copse rename`)
|
|
34
|
+
- **클론 및 초기화** — copse 설정과 함께 레포 클론 (`copse clone`)
|
|
35
|
+
- **Worktree 임포트** — 수동 생성된 worktree 채택 (`copse import`)
|
|
36
36
|
- **상세 뷰** — 커밋 히스토리, diff 통계, upstream 상태 확인 (TUI)
|
|
37
37
|
- **일괄 작업** — 다중 선택 및 배치 작업 (TUI)
|
|
38
38
|
- **토스트 알림** — 비동기 작업 결과 알림 (TUI)
|
|
39
|
-
- **셸 자동완성** — bash/zsh/fish 탭 자동완성 (`
|
|
40
|
-
- **설정 프로필** — 설정 세트 전환 (`
|
|
41
|
-
- **Tmux 세션** — worktree별 tmux 세션 자동 생성/종료, 레이아웃 템플릿 (`
|
|
39
|
+
- **셸 자동완성** — bash/zsh/fish 탭 자동완성 (`copse shell-init --completions`)
|
|
40
|
+
- **설정 프로필** — 설정 세트 전환 (`copse config --profiles`)
|
|
41
|
+
- **Tmux 세션** — worktree별 tmux 세션 자동 생성/종료, 레이아웃 템플릿 (`copse session`)
|
|
42
42
|
- **워크스페이스** — 부모 디렉토리 아래의 git repo를 자동 발견하고 워크스페이스별 defaults 적용 (`workspaces` 설정)
|
|
43
|
-
- **AI 에이전트 초기화** — 기본 설정 파일 생성 또는 Claude Code, Codex, OpenCode용 스킬 설치 (`
|
|
43
|
+
- **AI 에이전트 초기화** — 기본 설정 파일 생성 또는 Claude Code, Codex, OpenCode용 스킬 설치 (`copse init`, `copse init --skill`)
|
|
44
44
|
|
|
45
45
|
## 요구사항
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ Git worktree를 쉽게 관리하세요. 설정 기반 자동화, 모노레포
|
|
|
48
48
|
- git 2.17+
|
|
49
49
|
- macOS 또는 Linux
|
|
50
50
|
- [gh CLI](https://cli.github.com) (선택사항, `--pr` 플래그용)
|
|
51
|
-
- [tmux](https://github.com/tmux/tmux) (선택사항, `
|
|
51
|
+
- [tmux](https://github.com/tmux/tmux) (선택사항, `copse session`용)
|
|
52
52
|
|
|
53
53
|
## 설치
|
|
54
54
|
|
|
@@ -76,75 +76,75 @@ npm install -g @getsolaris/copse
|
|
|
76
76
|
|
|
77
77
|
```bash
|
|
78
78
|
# TUI 실행
|
|
79
|
-
|
|
79
|
+
copse
|
|
80
80
|
|
|
81
81
|
# worktree 목록
|
|
82
|
-
|
|
82
|
+
copse list
|
|
83
83
|
|
|
84
84
|
# 새 worktree 생성
|
|
85
|
-
|
|
85
|
+
copse add feature/my-feature
|
|
86
86
|
|
|
87
87
|
# 모노레포 포커스와 함께 생성
|
|
88
|
-
|
|
88
|
+
copse add feature/my-feature --focus apps/web,apps/api
|
|
89
89
|
|
|
90
90
|
# GitHub PR에서 생성
|
|
91
|
-
|
|
91
|
+
copse add --pr 123
|
|
92
92
|
|
|
93
93
|
# 템플릿 사용
|
|
94
|
-
|
|
94
|
+
copse add feature/login --template review
|
|
95
95
|
|
|
96
96
|
# 모든 worktree에서 명령 실행
|
|
97
|
-
|
|
97
|
+
copse exec "bun test"
|
|
98
98
|
|
|
99
99
|
# 두 worktree 비교
|
|
100
|
-
|
|
100
|
+
copse diff feature/a feature/b --stat
|
|
101
101
|
|
|
102
102
|
# 헬스 체크
|
|
103
|
-
|
|
103
|
+
copse doctor
|
|
104
104
|
|
|
105
105
|
# worktree 전환 (셸 통합 필요)
|
|
106
|
-
|
|
106
|
+
copse switch feature/my-feature
|
|
107
107
|
|
|
108
108
|
# worktree 제거
|
|
109
|
-
|
|
109
|
+
copse remove feature/my-feature --yes
|
|
110
110
|
|
|
111
111
|
# 머지된 worktree 정리
|
|
112
|
-
|
|
112
|
+
copse clean --dry-run
|
|
113
113
|
|
|
114
114
|
# worktree 핀 설정 (정리에서 보호)
|
|
115
|
-
|
|
115
|
+
copse pin feature/important --reason "active sprint"
|
|
116
116
|
|
|
117
117
|
# 활동 로그 보기
|
|
118
|
-
|
|
118
|
+
copse log
|
|
119
119
|
|
|
120
120
|
# worktree 아카이브 후 제거
|
|
121
|
-
|
|
121
|
+
copse archive feature/done --yes
|
|
122
122
|
|
|
123
123
|
# worktree 브랜치 리네임
|
|
124
|
-
|
|
124
|
+
copse rename old-name new-name
|
|
125
125
|
|
|
126
|
-
# 레포 클론 및
|
|
127
|
-
|
|
126
|
+
# 레포 클론 및 copse 초기화
|
|
127
|
+
copse clone https://github.com/user/repo.git
|
|
128
128
|
|
|
129
129
|
# 기존 worktree 임포트
|
|
130
|
-
|
|
130
|
+
copse import /path/to/worktree
|
|
131
131
|
|
|
132
132
|
# worktree의 tmux 세션 열기/연결
|
|
133
|
-
|
|
133
|
+
copse session feature/my-feature
|
|
134
134
|
|
|
135
135
|
# tmux 세션과 함께 worktree 생성
|
|
136
|
-
|
|
136
|
+
copse add feature/new --session
|
|
137
137
|
|
|
138
138
|
# 설정 파일 초기화
|
|
139
|
-
|
|
139
|
+
copse init
|
|
140
140
|
|
|
141
141
|
# AI 에이전트 스킬 파일 생성
|
|
142
|
-
|
|
142
|
+
copse init --skill claude-code
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
## TUI 사용법
|
|
146
146
|
|
|
147
|
-
`
|
|
147
|
+
`copse` (인자 없이)로 실행합니다.
|
|
148
148
|
|
|
149
149
|
### 키보드 단축키
|
|
150
150
|
|
|
@@ -253,50 +253,50 @@ cop init --skill claude-code
|
|
|
253
253
|
|
|
254
254
|
| 커맨드 | 설명 |
|
|
255
255
|
|--------|------|
|
|
256
|
-
| `
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
259
|
-
| `
|
|
260
|
-
| `
|
|
261
|
-
| `
|
|
262
|
-
| `
|
|
263
|
-
| `
|
|
264
|
-
| `
|
|
265
|
-
| `
|
|
266
|
-
| `
|
|
267
|
-
| `
|
|
268
|
-
| `
|
|
269
|
-
| `
|
|
270
|
-
| `
|
|
271
|
-
| `
|
|
272
|
-
| `
|
|
273
|
-
| `
|
|
274
|
-
| `
|
|
275
|
-
|
|
276
|
-
### `
|
|
256
|
+
| `copse` | TUI 실행 |
|
|
257
|
+
| `copse list` | 모든 worktree 목록 (포커스 정보 포함) |
|
|
258
|
+
| `copse add <branch>` | worktree 생성 |
|
|
259
|
+
| `copse remove <branch>` | worktree 제거 |
|
|
260
|
+
| `copse switch <branch>` | worktree 전환 |
|
|
261
|
+
| `copse clean` | 머지된 worktree 제거 |
|
|
262
|
+
| `copse doctor` | worktree 헬스 체크 |
|
|
263
|
+
| `copse config` | 설정 관리 |
|
|
264
|
+
| `copse exec <command>` | 각 worktree에서 명령 실행 |
|
|
265
|
+
| `copse diff <ref1> [ref2]` | worktree/브랜치 간 diff |
|
|
266
|
+
| `copse pin <branch>` | worktree 핀/언핀 (정리에서 보호) |
|
|
267
|
+
| `copse log` | worktree 활동 로그 보기 |
|
|
268
|
+
| `copse archive <branch>` | 변경사항 아카이브 후 선택적 제거 |
|
|
269
|
+
| `copse rename <old> <new>` | worktree 브랜치 리네임 |
|
|
270
|
+
| `copse clone <url>` | 레포 클론 및 copse 초기화 |
|
|
271
|
+
| `copse import <path>` | copse 메타데이터로 worktree 채택 |
|
|
272
|
+
| `copse session [branch]` | worktree의 tmux 세션 관리 |
|
|
273
|
+
| `copse open [branch]` | worktree를 에디터로 열기 (focus 인식) |
|
|
274
|
+
| `copse init` | 설정 초기화 또는 AI 에이전트 스킬 설치 |
|
|
275
|
+
|
|
276
|
+
### `copse add`
|
|
277
277
|
|
|
278
278
|
```bash
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
279
|
+
copse add feature/login # 필요하면 브랜치를 만들고 worktree 생성
|
|
280
|
+
copse add feature/login --base main # 새 브랜치는 main에서 시작
|
|
281
|
+
copse add existing-branch # 기존 브랜치로 worktree 생성
|
|
282
282
|
|
|
283
283
|
# 모노레포: 포커스 패키지와 함께 생성
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
copse add feature/login --focus apps/web,apps/api
|
|
285
|
+
copse add feature/login --focus apps/web --focus apps/api
|
|
286
286
|
|
|
287
287
|
# 템플릿 사용
|
|
288
|
-
|
|
288
|
+
copse add feature/login --template review
|
|
289
289
|
|
|
290
290
|
# GitHub PR에서 생성 (gh CLI 필요)
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
copse add --pr 123
|
|
292
|
+
copse add --pr 456 --template review
|
|
293
293
|
```
|
|
294
294
|
|
|
295
|
-
### `
|
|
295
|
+
### `copse doctor`
|
|
296
296
|
|
|
297
297
|
```bash
|
|
298
|
-
|
|
299
|
-
|
|
298
|
+
copse doctor # 사람이 읽기 쉬운 출력
|
|
299
|
+
copse doctor --json # 스크립팅용 JSON 출력
|
|
300
300
|
```
|
|
301
301
|
|
|
302
302
|
종료 코드: 정상이면 `0`, 경고 또는 에러가 있으면 `1`.
|
|
@@ -314,43 +314,43 @@ copse doctor
|
|
|
314
314
|
All checks passed.
|
|
315
315
|
```
|
|
316
316
|
|
|
317
|
-
### `
|
|
317
|
+
### `copse list`
|
|
318
318
|
|
|
319
319
|
```bash
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
320
|
+
copse list # Focus 컬럼이 포함된 테이블
|
|
321
|
+
copse list --json # 포커스 배열이 포함된 JSON
|
|
322
|
+
copse list --porcelain # 머신 판독 가능 형식
|
|
323
323
|
```
|
|
324
324
|
|
|
325
325
|
모노레포 worktree별 포커스 경로를 `Focus` 컬럼에 표시합니다.
|
|
326
326
|
|
|
327
|
-
### `
|
|
327
|
+
### `copse remove`
|
|
328
328
|
|
|
329
329
|
```bash
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
330
|
+
copse remove feature/login # 브랜치명으로 제거
|
|
331
|
+
copse remove feature/login --force # 강제 제거 (더티 worktree)
|
|
332
|
+
copse remove feature/login --yes # 확인 건너뛰기
|
|
333
333
|
```
|
|
334
334
|
|
|
335
|
-
### `
|
|
335
|
+
### `copse clean`
|
|
336
336
|
|
|
337
337
|
```bash
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
copse clean --dry-run # 제거될 항목 미리보기
|
|
339
|
+
copse clean # 머지된 worktree 모두 제거
|
|
340
|
+
copse clean --stale # 비활성 worktree도 표시 (lifecycle 설정 사용)
|
|
341
341
|
```
|
|
342
342
|
|
|
343
|
-
### `
|
|
343
|
+
### `copse exec`
|
|
344
344
|
|
|
345
345
|
모든 비-메인 worktree에서 셸 커맨드를 실행합니다.
|
|
346
346
|
|
|
347
347
|
```bash
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
348
|
+
copse exec "bun test" # 모든 worktree에서 실행 (순차)
|
|
349
|
+
copse exec "bun test" --parallel # 병렬 실행
|
|
350
|
+
copse exec "git pull" --all # 모든 설정된 레포에서 실행
|
|
351
|
+
copse exec "bun install" --dirty # 더티 worktree만
|
|
352
|
+
copse exec "git rebase main" --behind # upstream보다 뒤처진 것만
|
|
353
|
+
copse exec "bun test" --json # JSON 출력
|
|
354
354
|
```
|
|
355
355
|
|
|
356
356
|
| 플래그 | 설명 |
|
|
@@ -362,116 +362,116 @@ cop exec "bun test" --json # JSON 출력
|
|
|
362
362
|
| `--behind` | upstream보다 뒤처진 worktree에서만 실행 |
|
|
363
363
|
| `--json` / `-j` | 결과를 JSON으로 출력 |
|
|
364
364
|
|
|
365
|
-
커맨드에서 사용 가능한 환경변수: `
|
|
365
|
+
커맨드에서 사용 가능한 환경변수: `COPSE_BRANCH`, `COPSE_WORKTREE_PATH`, `COPSE_REPO_PATH`.
|
|
366
366
|
|
|
367
|
-
### `
|
|
367
|
+
### `copse diff`
|
|
368
368
|
|
|
369
369
|
두 worktree 브랜치 간 diff를 보여줍니다.
|
|
370
370
|
|
|
371
371
|
```bash
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
372
|
+
copse diff feature/a feature/b # 전체 diff
|
|
373
|
+
copse diff feature/a feature/b --stat # diffstat 요약
|
|
374
|
+
copse diff feature/a --name-only # 변경된 파일명만
|
|
375
|
+
copse diff feature/a # 현재 HEAD와 비교
|
|
376
376
|
```
|
|
377
377
|
|
|
378
|
-
### `
|
|
378
|
+
### `copse pin`
|
|
379
379
|
|
|
380
380
|
```bash
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
381
|
+
copse pin feature/auth --reason "active sprint" # 사유와 함께 핀
|
|
382
|
+
copse pin --list # 핀된 worktree 목록
|
|
383
|
+
copse pin --list --json # JSON 출력
|
|
384
|
+
copse unpin feature/auth # 언핀
|
|
385
385
|
```
|
|
386
386
|
|
|
387
|
-
핀된 worktree는 `
|
|
387
|
+
핀된 worktree는 `copse clean` 및 라이프사이클 자동 정리에서 제외됩니다.
|
|
388
388
|
|
|
389
|
-
### `
|
|
389
|
+
### `copse log`
|
|
390
390
|
|
|
391
391
|
```bash
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
392
|
+
copse log # 최근 20개 이벤트 표시
|
|
393
|
+
copse log --limit 50 # 최근 50개 이벤트 표시
|
|
394
|
+
copse log --json # JSON 출력
|
|
395
|
+
copse log --clear # 활동 로그 초기화
|
|
396
396
|
```
|
|
397
397
|
|
|
398
398
|
이벤트는 색상으로 구분: 생성(초록), 삭제(빨강), 전환(파랑), 리네임(노랑), 아카이브(자홍), 임포트(시안).
|
|
399
399
|
|
|
400
|
-
### `
|
|
400
|
+
### `copse archive`
|
|
401
401
|
|
|
402
402
|
```bash
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
403
|
+
copse archive feature/done --yes # 아카이브 후 제거
|
|
404
|
+
copse archive feature/wip --keep # 제거 없이 아카이브만
|
|
405
|
+
copse archive --list # 모든 아카이브 목록
|
|
406
|
+
copse archive --list --json # JSON 출력
|
|
407
407
|
```
|
|
408
408
|
|
|
409
409
|
아카이브는 `~/.copse/archives/`에 패치 파일로 저장됩니다.
|
|
410
410
|
|
|
411
|
-
### `
|
|
411
|
+
### `copse rename`
|
|
412
412
|
|
|
413
413
|
```bash
|
|
414
|
-
|
|
415
|
-
|
|
414
|
+
copse rename old-branch new-branch # 브랜치 리네임
|
|
415
|
+
copse rename old-branch new-branch --move-path # worktree 디렉토리도 이동
|
|
416
416
|
```
|
|
417
417
|
|
|
418
|
-
### `
|
|
418
|
+
### `copse clone`
|
|
419
419
|
|
|
420
420
|
```bash
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
421
|
+
copse clone https://github.com/user/repo.git # 클론 및 초기화
|
|
422
|
+
copse clone https://github.com/user/repo.git ./my-dir # 커스텀 대상 경로
|
|
423
|
+
copse clone https://github.com/user/repo.git --template review # 템플릿 적용
|
|
424
|
+
copse clone https://github.com/user/repo.git --no-init-config # 설정 초기화 건너뛰기
|
|
425
425
|
```
|
|
426
426
|
|
|
427
|
-
### `
|
|
427
|
+
### `copse import`
|
|
428
428
|
|
|
429
429
|
```bash
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
430
|
+
copse import /path/to/worktree # worktree 채택
|
|
431
|
+
copse import /path/to/worktree --focus apps/web,apps/api # 포커스와 함께
|
|
432
|
+
copse import /path/to/worktree --pin # 즉시 핀 설정
|
|
433
433
|
```
|
|
434
434
|
|
|
435
|
-
### `
|
|
435
|
+
### `copse session`
|
|
436
436
|
|
|
437
437
|
worktree의 tmux 세션을 관리합니다. tmux가 필요합니다.
|
|
438
438
|
|
|
439
439
|
```bash
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
440
|
+
copse session feature/auth # 세션 열기/연결 (없으면 생성)
|
|
441
|
+
copse session feature/auth --layout api # 설정의 레이아웃 사용
|
|
442
|
+
copse session --list # 활성 copse 세션 목록
|
|
443
|
+
copse session --list --json # JSON 출력
|
|
444
|
+
copse session feature/auth --kill # worktree 세션 종료
|
|
445
|
+
copse session --kill-all # 모든 copse 세션 종료
|
|
446
446
|
```
|
|
447
447
|
|
|
448
448
|
설정에서 `sessions.autoCreate` / `sessions.autoKill`을 활성화하면 세션이 자동 생성/종료됩니다.
|
|
449
449
|
|
|
450
450
|
```bash
|
|
451
451
|
# tmux 세션과 함께 worktree 생성
|
|
452
|
-
|
|
453
|
-
|
|
452
|
+
copse add feature/login --session
|
|
453
|
+
copse add feature/login --session --layout api
|
|
454
454
|
```
|
|
455
455
|
|
|
456
|
-
`sessions.enabled`가 `true`이고 tmux 안에 있으면, `
|
|
456
|
+
`sessions.enabled`가 `true`이고 tmux 안에 있으면, `copse switch`가 대상 worktree의 tmux 세션으로 자동 전환합니다.
|
|
457
457
|
|
|
458
|
-
### `
|
|
458
|
+
### `copse open`
|
|
459
459
|
|
|
460
460
|
worktree를 에디터/IDE로 엽니다. `$VISUAL` / `$EDITOR`를 자동 감지하고, 없으면 알려진 에디터 목록(`code`, `cursor`, `vim`, `nvim`, `emacs`, `nano`, `subl`, `zed`, `idea`, `webstorm`)에서 찾습니다.
|
|
461
461
|
|
|
462
462
|
```bash
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
463
|
+
copse open # 현재 worktree 열기
|
|
464
|
+
copse open feature/auth # 특정 worktree 열기
|
|
465
|
+
copse open feature/auth -e nvim # 에디터 강제 지정
|
|
466
466
|
|
|
467
467
|
# Focus 인식 동작 (--focus로 생성된 worktree에서)
|
|
468
|
-
|
|
468
|
+
copse open feature/auth # focus 1개 → 해당 focus 경로로 열림
|
|
469
469
|
# focus 2개+ → 에러 + 힌트 출력
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
470
|
+
copse open feature/auth --focus apps/web # 특정 focus 경로 선택
|
|
471
|
+
copse open feature/auth -f apps/api # 짧은 별칭
|
|
472
|
+
copse open feature/auth --root # focus 무시하고 worktree 루트 강제
|
|
473
473
|
|
|
474
|
-
|
|
474
|
+
copse open --list-editors # 감지된 에디터 목록
|
|
475
475
|
```
|
|
476
476
|
|
|
477
477
|
| 플래그 | 별칭 | 설명 |
|
|
@@ -487,22 +487,22 @@ cop open --list-editors # 감지된 에디터 목록
|
|
|
487
487
|
- focus 경로 1개 → `<worktree>/<focus>`를 자동으로 엽니다.
|
|
488
488
|
- focus 경로 2개 이상 → 에러를 내고 `--focus <path>` 또는 `--root`를 요구합니다 (TUI에서는 대신 인터랙티브 피커를 띄웁니다).
|
|
489
489
|
|
|
490
|
-
### `
|
|
490
|
+
### `copse init`
|
|
491
491
|
|
|
492
|
-
기본적으로
|
|
492
|
+
기본적으로 copse 설정 파일을 초기화하고, 필요하면 AI 코딩 에이전트용 스킬도 설치합니다.
|
|
493
493
|
|
|
494
494
|
```bash
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
495
|
+
copse init # → ~/.config/copse/config.json
|
|
496
|
+
copse init --skill claude-code # → ~/.claude/skills/copse/
|
|
497
|
+
copse init --skill codex # → ~/.agents/skills/copse/
|
|
498
|
+
copse init --skill opencode # → ~/.config/opencode/skill/copse/
|
|
499
499
|
```
|
|
500
500
|
|
|
501
501
|
| 플랫폼 | 스킬 경로 |
|
|
502
502
|
|--------|----------|
|
|
503
|
-
| `claude-code` | `~/.claude/skills/
|
|
504
|
-
| `codex` | `~/.agents/skills/
|
|
505
|
-
| `opencode` | `~/.config/opencode/skill/
|
|
503
|
+
| `claude-code` | `~/.claude/skills/copse/` |
|
|
504
|
+
| `codex` | `~/.agents/skills/copse/` |
|
|
505
|
+
| `opencode` | `~/.config/opencode/skill/copse/` |
|
|
506
506
|
|
|
507
507
|
각 스킬 디렉토리에는 다음이 포함됩니다:
|
|
508
508
|
- `SKILL.md` — 개요와 공통 워크플로우
|
|
@@ -513,19 +513,19 @@ cop init --skill opencode # → ~/.config/opencode/skill/cop/
|
|
|
513
513
|
|
|
514
514
|
#### 첫 실행 시 자동 초기화
|
|
515
515
|
|
|
516
|
-
`
|
|
516
|
+
`copse init`을 직접 실행할 필요가 없습니다. 처음으로 `copse` 명령어(또는 TUI)를 실행할 때 `~/.config/copse/config.json`이 없으면, copse가 기본 설정으로 자동 생성하고 stderr에 한 줄짜리 알림을 출력합니다:
|
|
517
517
|
|
|
518
518
|
```
|
|
519
|
-
|
|
519
|
+
copse: created default config at /Users/you/.config/copse/config.json
|
|
520
520
|
```
|
|
521
521
|
|
|
522
|
-
이 알림은 stdout이 TTY가 아닐 때(파이프, 스크립트, CI 환경)와 `
|
|
522
|
+
이 알림은 stdout이 TTY가 아닐 때(파이프, 스크립트, CI 환경)와 `copse init`을 명시적으로 실행할 때(중복 메시지 방지)는 표시되지 않습니다. 자동 초기화는 멱등성을 가지므로 이후 실행에서는 아무 동작도 하지 않습니다.
|
|
523
523
|
|
|
524
524
|
## 설정
|
|
525
525
|
|
|
526
526
|
설정 파일: `~/.config/copse/config.json`
|
|
527
527
|
|
|
528
|
-
초기화: `
|
|
528
|
+
초기화: `copse config --init` (또는 아무 `copse` 명령어 실행 — [첫 실행 시 자동 초기화](#첫-실행-시-자동-초기화) 참조)
|
|
529
529
|
|
|
530
530
|
### 전체 예시
|
|
531
531
|
|
|
@@ -571,7 +571,7 @@ cop: created default config at /Users/you/.config/copse/config.json
|
|
|
571
571
|
"enabled": true,
|
|
572
572
|
"autoCreate": false,
|
|
573
573
|
"autoKill": true,
|
|
574
|
-
"prefix": "
|
|
574
|
+
"prefix": "copse",
|
|
575
575
|
"defaultLayout": "dev",
|
|
576
576
|
"layouts": {
|
|
577
577
|
"dev": {
|
|
@@ -792,13 +792,13 @@ worktree 생성을 위한 이름이 붙은 프리셋. 각 템플릿은 기본값
|
|
|
792
792
|
| `autoUpstream` | `boolean` | upstream 추적 오버라이드 |
|
|
793
793
|
| `base` | `string` | 새로 생성되는 브랜치의 기본 베이스 브랜치 |
|
|
794
794
|
|
|
795
|
-
사용법: `
|
|
795
|
+
사용법: `copse add feature/login --template review`
|
|
796
796
|
|
|
797
797
|
템플릿 값은 리졸브된 레포 설정을 오버라이드합니다. `base` 필드는 `--base`가 명시적으로 제공되지 않은 경우 기본값을 설정합니다.
|
|
798
798
|
|
|
799
799
|
#### `lifecycle`
|
|
800
800
|
|
|
801
|
-
자동 worktree 라이프사이클 관리. `
|
|
801
|
+
자동 worktree 라이프사이클 관리. `copse clean --stale`에서 사용됩니다.
|
|
802
802
|
|
|
803
803
|
```json
|
|
804
804
|
{
|
|
@@ -826,7 +826,7 @@ worktree별 tmux 세션 관리.
|
|
|
826
826
|
"enabled": true,
|
|
827
827
|
"autoCreate": true,
|
|
828
828
|
"autoKill": true,
|
|
829
|
-
"prefix": "
|
|
829
|
+
"prefix": "copse",
|
|
830
830
|
"defaultLayout": "dev",
|
|
831
831
|
"layouts": {
|
|
832
832
|
"dev": {
|
|
@@ -844,9 +844,9 @@ worktree별 tmux 세션 관리.
|
|
|
844
844
|
| 필드 | 타입 | 기본값 | 설명 |
|
|
845
845
|
|------|------|--------|------|
|
|
846
846
|
| `enabled` | `boolean` | `false` | 세션 연동 활성화 (tmux 내 자동 전환) |
|
|
847
|
-
| `autoCreate` | `boolean` | `false` | `
|
|
848
|
-
| `autoKill` | `boolean` | `false` | `
|
|
849
|
-
| `prefix` | `string` | `"
|
|
847
|
+
| `autoCreate` | `boolean` | `false` | `copse add` 시 tmux 세션 자동 생성 |
|
|
848
|
+
| `autoKill` | `boolean` | `false` | `copse remove` 시 tmux 세션 자동 종료 |
|
|
849
|
+
| `prefix` | `string` | `"copse"` | tmux 세션 이름 접두사 |
|
|
850
850
|
| `defaultLayout` | `string` | — | 새 세션의 기본 레이아웃 이름 |
|
|
851
851
|
| `layouts` | `object` | `{}` | 윈도우 정의가 포함된 이름 있는 레이아웃 |
|
|
852
852
|
|
|
@@ -857,7 +857,7 @@ worktree별 tmux 세션 관리.
|
|
|
857
857
|
| `name` | `string` | 예 | 윈도우 이름 |
|
|
858
858
|
| `command` | `string` | 아니오 | 윈도우에서 실행할 커맨드 |
|
|
859
859
|
|
|
860
|
-
세션 이름 규칙: 브랜치 `feat/auth-token` → tmux 세션 `
|
|
860
|
+
세션 이름 규칙: 브랜치 `feat/auth-token` → tmux 세션 `copse_feat-auth-token`.
|
|
861
861
|
|
|
862
862
|
#### `sharedDeps`
|
|
863
863
|
|
|
@@ -891,12 +891,12 @@ worktree별 tmux 세션 관리.
|
|
|
891
891
|
worktree가 작업 중인 모노레포 패키지를 추적합니다.
|
|
892
892
|
|
|
893
893
|
```bash
|
|
894
|
-
|
|
894
|
+
copse add feature/login --focus apps/web,apps/api
|
|
895
895
|
```
|
|
896
896
|
|
|
897
897
|
- 쉼표, 공백, 또는 여러 `--focus` 플래그 지원
|
|
898
898
|
- 포커스 메타데이터는 git 내부에 저장 (worktree 루트가 아님)
|
|
899
|
-
- `
|
|
899
|
+
- `copse list`에서 worktree별 포커스 경로 표시
|
|
900
900
|
- 모노레포 훅은 매칭되는 포커스 경로에 대해서만 실행
|
|
901
901
|
- 포커스는 선택사항 — 생략하면 일반 worktree 생성
|
|
902
902
|
|
|
@@ -933,41 +933,41 @@ defaults.copyFiles 없음? → [] (빈 배열) 사용
|
|
|
933
933
|
|
|
934
934
|
## 셸 통합
|
|
935
935
|
|
|
936
|
-
`
|
|
936
|
+
`copse shell-init`으로 `copse switch`용 셸 통합을 설치하세요.
|
|
937
937
|
|
|
938
938
|
### 셸 자동완성
|
|
939
939
|
|
|
940
940
|
```bash
|
|
941
941
|
# 자동완성 추가 (bash)
|
|
942
|
-
eval "$(
|
|
942
|
+
eval "$(copse shell-init --completions bash)"
|
|
943
943
|
|
|
944
944
|
# 자동완성 추가 (zsh)
|
|
945
|
-
eval "$(
|
|
945
|
+
eval "$(copse shell-init --completions zsh)"
|
|
946
946
|
|
|
947
947
|
# 자동완성 추가 (fish)
|
|
948
|
-
|
|
948
|
+
copse shell-init --completions fish | source
|
|
949
949
|
```
|
|
950
950
|
|
|
951
951
|
### 예시
|
|
952
952
|
|
|
953
953
|
```bash
|
|
954
954
|
# zsh
|
|
955
|
-
echo 'eval "$(
|
|
955
|
+
echo 'eval "$(copse shell-init zsh)"' >> ~/.zshrc
|
|
956
956
|
source ~/.zshrc
|
|
957
957
|
|
|
958
958
|
# bash
|
|
959
|
-
echo 'eval "$(
|
|
959
|
+
echo 'eval "$(copse shell-init bash)"' >> ~/.bashrc
|
|
960
960
|
source ~/.bashrc
|
|
961
961
|
|
|
962
962
|
# fish
|
|
963
|
-
|
|
963
|
+
copse shell-init fish >> ~/.config/fish/config.fish
|
|
964
964
|
source ~/.config/fish/config.fish
|
|
965
965
|
```
|
|
966
966
|
|
|
967
967
|
설정 저장 전 생성될 래퍼를 미리 볼 수도 있습니다:
|
|
968
968
|
|
|
969
969
|
```bash
|
|
970
|
-
|
|
970
|
+
copse shell-init zsh
|
|
971
971
|
```
|
|
972
972
|
|
|
973
973
|
## 설정 프로필
|
|
@@ -975,9 +975,9 @@ cop shell-init zsh
|
|
|
975
975
|
서로 다른 설정 세트 간 전환합니다.
|
|
976
976
|
|
|
977
977
|
```bash
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
978
|
+
copse config --profiles # 프로필 목록
|
|
979
|
+
copse config --profile work --activate # 프로필 활성화
|
|
980
|
+
copse config --profile personal --delete # 프로필 삭제
|
|
981
981
|
```
|
|
982
982
|
|
|
983
983
|
## 라이선스
|