Metadata-Version: 2.1
Name: cbox-tool
Version: 0.1.3
Summary: A powerful multi-repository management tool for Git projects
Home-page: https://github.com/beliefgp/mybox
Author: belief
Author-email: belief.bian@gmail.com
Project-URL: Bug Tracker, https://github.com/beliefgp/mybox/issues
Project-URL: Documentation, https://github.com/beliefgp/mybox/tree/main/docs
Project-URL: Source Code, https://github.com/beliefgp/mybox
Keywords: git repository management tool workspace
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Version Control :: Git
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: click>=8.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: gitpython>=3.1.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"
Requires-Dist: isort>=5.0.0; extra == "dev"
Requires-Dist: flake8>=4.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"

# cbox

cbox 是一个强大的多仓库管理工具，帮助您更好地组织和管理多个 Git 仓库。它支持工作空间管理、批量操作、分支管理等功能，让多仓库管理变得简单高效。

## 特性

- **工作空间管理**
  - 创建和管理多个工作空间
  - 导入现有仓库
  - 初始化新仓库
  - 扫描并批量导入仓库
  - 删除工作空间及其所有内容

- **仓库操作**
  - 克隆远程仓库
  - 删除工作空间中的仓库
  - 批量执行 git 操作（pull、push、commit）
  - 查看仓库状态
  - 导入本地仓库

- **分支管理**
  - 创建、切换、删除分支
  - 合并分支
  - 查看分支状态
  - 批量分支操作

## 安装

### 方法 1：从 PyPI 安装（推荐）

```bash
pip install cbox-tool
```

### 方法 2：从源码安装

1. 克隆仓库：
```bash
git clone https://github.com/yourusername/cbox.git
cd cbox
```

2. 安装依赖：
```bash
pip install -e .
```

## 快速开始

1. 创建工作空间：
```bash
cbox add_workspace dev ~/projects/dev
```

2. 克隆仓库到工作空间：
```bash
cbox clone dev https://github.com/user/repo.git
```

3. 查看工作空间状态：
```bash
cbox status dev
```

## 基本用法

### 工作空间管理
```bash
# 列出所有工作空间
cbox list_workspaces

# 删除工作空间
cbox remove_workspace dev
```

### 仓库操作
```bash
# 导入本地仓库
cbox import_repo dev ~/existing-repo

# 初始化新仓库
cbox init dev new-project

# 扫描并导入目录下的所有 Git 仓库
cbox scan_import dev ~/old-projects

# 删除仓库
cbox remove_repo dev repo-name
```

### Git 操作
```bash
# 拉取更新
cbox pull dev

# 提交更改
cbox commit dev "feat: add new feature"

# 推送更改
cbox push dev
```

### 分支管理
```bash
# 列出分支
cbox branches dev

# 创建新分支
cbox create_branch dev feature/new-feature

# 切换分支
cbox switch_branch dev feature/new-feature

# 删除分支
cbox delete_branch dev feature/old-feature

# 合并分支
cbox merge dev feature/new-feature
```

## 详细命令说明

### 工作空间管理

```bash
# 添加工作空间
cbox add_workspace workspace1 ~/projects/workspace1

# 列出所有工作空间
cbox list_workspaces

# 导入现有仓库
cbox import_repo workspace1 ~/existing-repo

# 初始化新仓库
cbox init workspace1 new-project

# 扫描并导入仓库
cbox scan_import workspace1 ~/projects

# 删除工作空间
cbox remove_workspace workspace1
```

### 仓库操作

```bash
# 查看状态
cbox status workspace1

# 拉取更新
cbox pull workspace1

# 提交更改
cbox commit workspace1 "feat: add new feature"

# 推送更改
cbox push workspace1

# 删除仓库
cbox remove_repo workspace1 repo-name
```

### 分支管理

```bash
# 查看分支
cbox branches workspace1

# 创建分支
cbox create_branch workspace1 feature/new-feature

# 切换分支
cbox switch_branch workspace1 feature/new-feature

# 合并分支
cbox merge workspace1 feature/new-feature

# 删除分支
cbox delete_branch workspace1 feature/new-feature
```

### 批量切换分支

使用 `switch_branch` 命令可以同时切换工作空间中所有仓库的分支。如果本地分支不存在，会自动检查远程仓库：

```bash
# 切换到指定分支
cbox switch_branch dev feature/new-ui
```

切换分支时会显示详细的操作结果：

```
切换分支结果:
仓库      原分支    目标分支         状态
repo1    main     feature/new-ui   已切换
repo2    main     feature/new-ui   已在该分支
repo3    dev      feature/new-ui   有未提交的更改
repo4    main     feature/new-ui   分支不存在（本地和远程）
```

### 批量合并分支

使用 `merge` 命令可以将指定分支合并到当前分支：

```bash
# 合并分支
cbox merge dev feature/new-ui
```

合并操作会显示详细的结果：

```
合并结果:
仓库      当前分支    源分支          状态
repo1    main      feature/new-ui   合并成功
repo2    dev       feature/new-ui   源分支不存在
repo3    main      feature/new-ui   有未提交的更改
repo4    main      feature/new-ui   合并冲突
```

## 配置文件

cbox 使用 YAML 格式的配置文件来存储工作空间信息，默认位置为 `~/.mybox.yaml`：

```yaml
workspace1: /path/to/workspace1
workspace2: /path/to/workspace2
```

## 依赖要求

- Python >= 3.6
- click >= 8.0.0
- pyyaml >= 6.0.0
- rich >= 13.0.0
- gitpython >= 3.1.0

## 最佳实践

1. **工作空间组织**
   - 为不同的项目或团队创建独立的工作空间
   - 使用有意义的工作空间名称
   - 保持工作空间路径结构清晰

2. **分支管理**
   - 在执行批量分支操作前先检查状态
   - 确保没有未提交的更改
   - 使用统一的分支命名规范

3. **定期维护**
   - 定期清理不再使用的分支
   - 及时同步远程仓库更新
   - 保持工作空间整洁

## 故障排除

1. **分支操作失败**
   - 检查是否有未提交的更改
   - 确认分支名称是否正确
   - 查看远程仓库是否可访问

2. **仓库导入失败**
   - 确认源路径是否存在
   - 检查是否是有效的 Git 仓库
   - 验证目标路径是否可写

3. **配置问题**
   - 检查配置文件格式是否正确
   - 确认工作空间路径是否存在
   - 验证是否有足够的权限
