1 个不稳定版本
0.0.1 | 2022年11月21日 |
---|
#47 在 #symlink
29KB
436 行
gitspace
基于 Git 的工作区
- 类似于子模块,但无需提交
- 语言无关
- SSH 配置透传进行授权
入门指南
cargo安装 gitspace
gitspace init
- 更新配置
- 添加您的 ssh 主机(以下信息)
- 添加您的仓库
gitspace sync
命令
命令::初始化
名称 | 描述 |
---|---|
init | 创建新的 gitspace 配置 |
sync | 克隆仓库,更新符号链接,更新 .gitignore |
命令::维护
名称 | 描述 |
---|---|
alias | 为 gitspace 仓库生成别名,默认为 alias --zsh |
alias --bash | 生成 bash / zsh 兼容的别名 |
alias --nushell | 生成 nushell 别名 |
ignore | 根据克隆的仓库更新(或创建)新的 gitignore 文件 |
clean | 没有参数时,默认为 clean --all |
clean --all | 移除除了 gitignore 和您的 gitspace 配置之外的所有内容 |
clean --symlinks | 移除所有 gitspace 生成的符号链接 |
clean --repos | 移除所有克隆的仓库(即 .repos 目录) |
fetch | 从本地仓库获取所有对 master 的更新 |
version | 打印 gitspace 版本 |
Space
- 一个空间...
- 是“工作区”的简称
- 是任何包含 .gitspace 文件的目录
- 将多个仓库组合到一个地方
Git
- Git 是如何配置...
- 哪些仓库应该被存储
- 它们应该如何嵌套
- 您的授权策略
- 您的同步策略
- 它应该运行多频繁
- 哪些仓库应该被存储
依赖项
名称 | 链接 | 描述 |
---|---|---|
git2 | git2 | 克隆 Git 仓库 |
serde | serde | 序列化/反序列化(用于有效载荷和 repogen 配置) |
symlink | symlink | 跨平台符号链接 |
reqwest-graphql | reqwest-graphql | 查询 GitHub 的 GraphQL API |
clap | clap | CLI 参数解析器 |
现有技术
这个项目的起源始于我编写了 repogen。虽然这个工具仍在内部使用,但它已经过时且缺少功能。去年我们最终使用了子模块,并记得与这个方便功能相关的一些痛点。最终我们想要一个能够允许开发团队拥有一致目录结构的工具,而不必依赖于无所不能的单一模块
在单体/包管理空间中存在许多值得注意的选项,从纯工作区到交互式构建系统应有尽有。
一些值得注意的例子:
目标
目标::MVP
- 核心命令(
init
和sync
)工作正常
目标::Post-MVP
-
更新 README
- 通过
cargo
安装 - 添加通过
brew
安装的支持
- 通过
-
初始化
- 生成配置
- 允许选择配置语言
- js(默认)
- json
- yaml
- 允许选择配置语言
- 解析配置,它...
- 使用 SSH 配置提供程序来处理 SSH 连接
- 允许为每个子仓库指定包管理器的路径(例如 pnpm、cargo 等)
- 生成初始 gitignore(或更新现有)以包含所有子仓库路径(以避免同步符号链接或克隆的
.repos
目录) - 将仓库克隆到隐藏的
.repo
目录 - 加载所有子模块的仓库
更多信息 这里
- 使 CLI 交互式(在文件生成期间)
- 生成配置
-
维护
- 一个相当于
brew doctor
的命令,可用于执行所有操作 - 同步 gitignore 以匹配
.repo
内的目录例如,“foo”、“bar” 仓库已克隆。自动添加到 .gitignore 文件
- 获取所有子仓库的更新
例如,在所有嵌套仓库上执行
git pull origin master
- 启用幂等获取(允许重新运行 repogen 而无需删除先前克隆的仓库或生成的符号链接)
- 启用清理所有本地仓库
- 启用清理所有本地符号链接
- 启用为嵌套树结构生成别名文件
目前打印出来并允许它们导入它
- 在配置中添加前缀选项
${前缀}/${pwd}
- 添加 shell 输出选项
- zsh
- nushell
- 在配置中添加前缀选项
- 一个相当于
-
管理
- 自动创建仓库标签 ()
例如,“foo”、“bar” 仓库已克隆。在 Github 和 Gitea 上生成了
${opt-label-prefix}-${reponame}-${opt-label-suffix}
- 显示仓库结构的依赖关系图的可视化
- 自动创建仓库标签 ()
依赖项
~12MB
~288K SLoC