Git结合了多个回购

时间:2013-12-06 00:43:46

标签: git git-submodules

我对git很新,并且仍然试图围绕某些方式来解决某些事情而不是svn,我想知道我试图做的事情是否可能。我正在尝试为Arduino项目创建一个存储库,其中包括几个Arduino“草图”,以及多个库。我将编写其中一些库,有些来自属于其他人的其他现有存储库,这些存储库是我将编写的代码的依赖项。 Arduino项目的本地文件夹结构如下:

~/Arduino
 +libraries
   +MyLib1/[lib files]
   +MyLib2/[..]
 +MySketch1/MySketch1.ino
 +MySketch2/MySketch2.ino

(SketchName.ino只是基本上是main.cpp的Arduino命名约定)

现在,我看过的存储库的结构各不相同。一些包含顶层的Arduino文件夹,一些将顶层映射到 Arduino文件夹,一些只包含库,并将它们的顶层映射到Arduino / libraries。有没有办法将这些多个存储库组合到我自己的存储库中,保留指向原始存储库的链接?我查看了子模块,但看起来那些只能在他们自己的子目录中工作,这对我不起作用,因为我需要本地文件夹结构来包含同一个〜/ Arduino文件夹中的所有草图,以及其中的所有库〜/ Arduino / libraries文件夹。

所以我希望上面的文件夹结构与另一个包含以下内容的repo共存:

libraries
 +YourLib1/[..]
 +YourLib2/[..]
YourSketch/YourSketch.ino

第三个回复包含:

AnotherRandomLib/[..]

这样最终结果就是一个看起来像这样的单一回购;

~/Arduino
 +libraries
   +AnotherRandomLib/[..]
   +MyLib1/[..]
   +MyLib2/[lib files]
   +YourLib1/[..]
   +YourLib2/[..]
 +MySketch1/MySketch1.ino
 +MySketch2/MySketch2.ino
 +YourSketch/YourSketch.ino

可以这样做,或者如果没有,从您的回购中引用其他人的代码会被视为“最佳做法”吗?只需将文件添加到repo(简单,防弹,但断开链接到原始仓库,失去引入更新的能力,还会导致归因丢失)?将它们从回购中删除并留给用户单独查找和下载其他库(根本不是一个好的解决方案)?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

考虑到子模块总是存在于它们自己的文件夹中,如果“libraries”中所需的每个目录都是一个git repo(然后可以作为父repo中的子模块引用),那么你的结构就可以工作了。

否则,您必须处理Windows中存在的符号链接:阅读“Git Symlinks in Windows”。