Metadata-Version: 2.4
Name: aos-git
Version: 0.10.0
Summary: AI-powered Git merge conflict resolver — let AI merge both sides intelligently
License: MIT
Project-URL: Homepage, http://mod.lge.com/hub/esdataplfm/part_de/aos-git.git
Project-URL: Issues, http://mod.lge.com/hub/esdataplfm/part_de/aos-git.git/issues
Keywords: git,merge,conflict,ai,cli
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: click>=8.1
Requires-Dist: rich>=13.0
Requires-Dist: tomli_w>=1.0
Requires-Dist: openai>=1.0
Requires-Dist: anthropic>=0.25
Requires-Dist: typing_extensions>=4.15
Requires-Dist: questionary>=2.0

# aos — AI-powered Git Helper

git을 몰라도, AI가 충돌을 해결해주는 Git 도우미입니다.

---

## 🚀 5분 만에 시작하기 (첫 설정)

```bash
pip install aos-git           # 설치
cd 내프로젝트 && aos init       # 프로젝트 초기화 (hooks + 알림 수신자)
aos setup                      # AI + SMTP 설정 (내 PC에서 1회)
aos doctor                     # 모든 항목 ✓ 인지 확인
```

---

## 🔥 이것만 알면 됩니다 (5개 명령어)

| 명령어 | 언제 쓰나요 |
|--------|-------------|
| **`aos init`** | 프로젝트에 aos 처음 설정할 때 (hooks + 알림) |
| **`aos setup`** | AI 제공자 / SMTP / 토큰을 설정할 때 |
| **`aos checkout -b feature/내작업`** | 새 브랜치를 만들어 작업 시작할 때 |
| **`aos commit -m "작업 내용"`** | 변경사항을 커밋할 때 |
| **`aos push`** | 커밋한 내용을 원격에 올릴 때 (팀원에게 이메일 자동 발송) |

---

## 📋 일상 작업 흐름

```bash
# 1. 새 브랜치에서 시작
aos checkout -b feature/데이터정제

# 2. 코드 수정 후
aos add                           # 변경사항 스테이징
aos commit -m "데이터 정제 로직 추가"  # 커밋
aos push                         # 원격에 반영 → 팀원에게 이메일 알림

# 3. 상대방 변경사항을 받으면
aos sync                          # 최신 main을 내 브랜치에 반영 (충돌 시 AI 해결)
aos push
```

---

## ⚡ 충돌 해결

```
[aos merge feature/팀원작업]  →  충돌 발생  →  [aos resolve]  →  AI가 충돌 해결  →  커밋 완료
                                                    ↓
                                      해결 안 되면 →  git merge --abort (포기)
```

```bash
aos merge feature/팀원작업      # 충돌 시 AI가 자동으로 해결
# 또는
aos pull                        # 원격 변경사항 가져오기 (충돌 시 AI 해결)
# 또는
aos sync                        # main 기준 브랜치 동기화 (충돌 시 AI 해결)

aos resolve                     # 남아 있는 충돌 마커를 다시 AI로 해결
```

---

## 👑 관리자 워크플로우

```bash
# 1. 팀원 작업 병합
aos checkout main
aos merge feature/팀원작업      # 충돌 시 AI 자동 해결
aos push                        # main 업데이트 + 팀원 이메일 발송

# 2. 새 버전 릴리스
aos release patch               # 0.8.5 → 0.8.6 (자동 PyPI 배포)
```

---

## 📦 설치

```bash
pip install aos-git
```

### 최초 설정 (1회)
```bash
aos init           # git hooks + 알림 수신자/관리자 설정 (프로젝트마다 1회)
aos setup          # AI + SMTP + 토큰 (내 PC에서 1회)
```
`aos init`은 프로젝트마다 1번, `aos setup`은 내 PC에서 1번만 하면 됩니다.

### 업데이트 (이미 사용 중인 사람)
```bash
pip install --upgrade aos-git
aos doctor           # 환경 정상 확인
aos init --hooks-only    # 새 pre-push hook으로 교체
```

---

## 🩺 문제 해결

```bash
aos doctor                  # 한 방에 진단 (메일 안 올 때 첫 단계)
aos doctor --send-test      # SMTP 실제 테스트 메일 발송
```

### 자주 보는 ✗ 와 해결
| 화면 메시지 | 원인 | 해결 |
|------------|------|------|
| 전역 설정 파일이 없습니다 | `~/.aos/config.toml` 없음 | `aos setup` |
| SMTP 비밀번호 미설정 | 비밀번호는 전역 설정에만 저장됨 | `aos setup --notify` |
| SMTP 인증 실패 | 사용자명/앱 비밀번호 틀림 | `aos setup --notify` |
| SMTP 연결 실패 | 방화벽 / 사내망 이슈 | VPN 확인 후 `aos setup --notify` |
| 수신자(recipients) 비어있음 | 팀원 이메일 미등록 | `aos setup --notify` |
| pre-push hook 미설치 | hooksPath 미설정 | `aos init --hooks-only` |

---

## 📖 전체 명령어 레퍼런스

| 명령어 | 언제 쓰나요 | 예시 |
|--------|-------------|------|
| `aos init` | 프로젝트에 aos 처음 설정 (hooks + 알림 수신자) | `aos init` |
| `aos setup` | AI 제공자 / SMTP / 토큰 설정 | `aos setup --notify` |
| `aos checkout` | 브랜치 전환 / 생성 (화살표 선택 가능) | `aos checkout -b feature/x` |
| `aos branch` | 브랜치 목록 / 삭제 | `aos branch -a` |
| `aos add` | 변경사항 스테이징 (파일 미지정 시 전체) | `aos add src/` |
| `aos commit` | 커밋 (`-a` 플래그로 전체 스테이징 후 커밋) | `aos commit -m "내용"` |
| `aos push` | 원격에 반영 (메일 알림 자동 발송) | `aos push` |
| `aos status` | 현재 상태 확인 (충돌 파일 표시) | `aos status` |
| `aos diff` | 변경사항 상세 보기 | `aos diff` |
| `aos log` | 커밋 히스토리 | `aos log` |
| `aos stash` | 작업 임시 저장 / 복원 | `aos stash` |
| `aos pull` | 원격 변경사항 가져오기 (충돌 시 AI 해결) | `aos pull` |
| `aos merge` | 브랜치 병합 (충돌 시 AI 해결) | `aos merge feature/x` |
| `aos sync` | main 기준 브랜치를 내 브랜치에 반영 (충돌 시 AI 해결) | `aos sync` |
| `aos resolve` | 남아 있는 충돌 마커를 AI로 해결 (Ctrl+C 후 재개 가능) | `aos resolve` |
| `aos release` | 새 버전 릴리스 (버전up → 커밋 → 태그 → push → PyPI 배포) | `aos release patch` |
| `aos config` | 설정 확인 / 변경 | `aos config --edit` |
| `aos doctor` | 환경 / 알림 진단 (메일 안 올 때 첫 단계) | `aos doctor` |
| `aos claude` | Claude Code 연동 | `aos claude install` |
| `aos install` | 전역 skill 설치 | `aos install` |

---

## ❓ FAQ

### 처음 사용자
**Q: `aos init`과 `aos setup`은 뭐가 다릅니까?**
`aos init`은 프로젝트별로 실행 (hooks + 알림 수신자), `aos setup`은 내 PC에서 1회만 실행 (AI + SMTP).

**Q: SMTP 비밀번호는 어디에 저장되나요?**
`~/.aos/config.toml`에 로컬에서만 저장됩니다. 프로젝트에는 host/port/sender만 저장되고 비밀번호는 공유되지 않습니다.

**Q: `--hooks-only`는 언제 쓰나요?**
`pip install --upgrade` 후 새 hook 버전으로 교체할 때, 또는 다른 PC에서 clone 후 hook만 재설치할 때.

**Q: `aos sync`와 `aos pull`은 뭐가 다릅니까?**
`aos pull`은 현재 브랜치에 origin의 같은 이름 브랜치를 가져오고, `aos sync`는 main(기준 브랜치)의 변경분을 내 작업 브랜치에 반영합니다.

**Q: `aos install`과 `aos claude install`은 뭐가 다릅니까?**
`aos install`은 aos CLI 전역 skill을 설치하고, `aos claude install`은 프로젝트별로 Claude Code 연동을 설정합니다.

### 메일 알림 안 와요
**Q: push는 성공했는데 메일이 안 왔어요.**
pre-push hook 출력에 `[pre-push][WARN]`이 있었는지 확인하세요. `aos doctor`로 SMTP 연결 상태를 진단하세요. 대부분 SMTP 비밀번호 미설정이 원인입니다.

**Q: "SMTP 비밀번호 미설정"이라고 떠요.**
`aos setup --notify`로 SMTP 비밀번호(앱 비밀번호)를 다시 입력하세요. 비밀번호는 `~/.aos/config.toml`에만 저장되고 재설치 시 사라집니다.

### Claude Code 연동
**Q: Claude Code와 aos를 함께 쓸 수 있나요?**
```bash
aos install              # 전역 skill 설치 (1회)
aos claude install      # 프로젝트별 연동 (저장소마다 1회)
```
