Git 和子存储库

Git 和子存储库

有没有办法强制 git 包含位于当前存储库某处的其他存储库中的文件和目录?

我之所以问这个问题,是因为我有一个类似这样的布局:

Projects
  |- Some Project
  |   |- .git
  |- Another Project
  |   |- .git
  |- Yet Another Project
  |   |- .svn
  |- A non versioned Project
  |- etc..

现在我想要做的是git init在项目中,然后运行一个每日 cron 作业,将其推送到使用以下命令备份的文件夹中的裸存储库

...<set variables>...
git add -A
git commit -m "Automatic Update $Date $Time"
git push --mirror --repo=/backedup/Projects

我的计划是添加.git、、等,.svn并将其作为文件的安全备份。.hg.gitignore

编辑:下面我有一些很好的建议,但我仍然好奇这种特殊情况是否可行。使用 rdiff 备份整个文件夹仍然意味着将膨胀的文件备份到我的备份媒体上,而裸存储库占用 4 MB 而不是 160 MB,而且我真的想知道现在是否可行,因为我一直在考虑这件事,否则我会睡不着觉。

答案1

使用git 子模块

使用子模块,您可以在其他存储库中植入存储库,而无需跟踪子存储库更改的具体细节。

此功能专门用于处理可能依赖于其他地方跟踪的依赖项的项目。

我会给出一些更详细的用例,但我还没有理由使用这个特定功能。

答案2

这种特殊情况是不可能发生的,也不切实际。

  • 嵌套的 Git repo 会被检测,并且git add -A根目录不会考虑嵌套的.git子目录。
  • .svn会起作用,但需要.gitignore仔细校准以忽略其他一切。

按照以下建议,通过压缩 ssh 进行增量复制的单独备份作业在评论中,有一个更好的解决方案。

相关内容