7 个版本
0.1.33 | 2023 年 8 月 18 日 |
---|---|
0.1.32 | 2023 年 8 月 13 日 |
0.1.1 | 2023 年 7 月 30 日 |
#192 in 文件系统
22KB
306 行
gimic
增加功能的 Git 模拟器
嵌套仓库代码更新
repo 1 <Main_repo>
|
|- /some/cool/file/from/repo2
轻松管理来自其他仓库的特定文件/目录 "远程"。
安装
请确保您已安装 git
,并且您正在 git 仓库中工作
-
从源代码构建
i. 下载源代码后,运行
cargo build --release
ii. [可选] 将发行版文件位置添加到系统
PATH
工作原理
模拟器 被设计为 模拟 Git,尽管 submodules
和 subtree
是将另一个仓库包含到您的项目中的优秀选项,但您可能希望对哪些文件实际被拉入并位于您的本地目录/工作区有更多细粒度的控制。使用 gimic
只会影响您的仓库,其中文件将出现未跟踪(就像任何新文件一样),因此更新您的 .gitignore 文件或 .git/exclude 可能是个好主意。
配置
在您的项目根目录中创建一个 gloc.yaml 文件
- 查看 示例配置文件 以获得灵感
repo 1
|
|-gloc.yaml
如果已应用安装步骤 2.ii,则可以在嵌套 .git 目录中的任何位置运行,否则目标构建目录需要存在于所需的 "根" 仓库内。
用法
$gimic checkout
-
这只是一个围绕
git pull
和cp <source> <to>
的包装。仅指定操作,即checkout
,并且没有其他参数,意味着在执行路径(即你调用gimic
的地方)中存在一个 yaml 文件配置。当 alternate_repo 被拉下来时,文件将从alternate_source
复制到alternate_target
。注意,至少需要一个位置存在,如果只有一个选项存在,则该选项将成为另一个选项的默认值。这意味着(超级简单的伪代码 Rust)!alternate_source { alternate_target = alternate_source } (反之亦然)
。 注意:目前尚未强制执行,但在以后的版本中将会执行。 -
文件复制类似于 Linux,目标 "类型" 基于 "源" 类型。这意味着如果 "源"(即
alternate_source
)是文件,则 "目标" 将是文件(无论它是否包含指定的扩展名)。但如果 "源" 是目录,则目标将是目录(即使它具有文件指定)。另一件需要注意的事情是,checkout
命令具有标准递归文件创建。类似于 Linux 中的mkdir -R
。 -
当 gimic 的 checkout 流程完成后,临时存储库(即
alternate_repo
)将被删除,除非在 gloc.yaml 配置中指定了其他操作。
$gimic --[no-]skip-worktree target_dir
- 因为
git update-index --skip-worktree <some_file>
不处理目录,而不是需要创建一些非常复杂的单行代码片段,你可以开启/关闭 git 的跟踪(临时像原始命令一样)。
潜在的变化
- 允许 gloc.yaml 文件的存在是可选的
- 允许为流行的系统提供可下载的预构建二进制文件
- 提供合并/变基当前文件/文件选项
- 允许多个目标
- 整合提交和推送
- 提交需要目录持久性...
- 允许跳过工作树以指定替代位置
贡献
请随意在存储库中发表评论,并告诉我你是否有任何其他建议或想要做出贡献!
依赖关系
~5–14MB
~165K SLoC