2016-09-12 231 views
0

我想从同一个目录中复制多个git仓库的文件。在同一个目录中的多个git仓库

由于大小限制(来自Bitbucket),我不得不将一个大项目拆分成几个较小的存储库。每个库包含几个文件夹,并放在一起时,他们都弥补了一个大项目:

  • 回购1:
    • 方向1
    • 方向2
  • 回购2:
    • Dir3

最终结构:

  • 方向1
  • 方向2
  • DIR3

的想法相当简单,将很容易通过使用分支来完成,但我由于提到该项目的规模是不可能的。

有可能做到这一点,可能与.gitignore。欢迎任何其他想法。

+4

子模块可能在这里很有用,但更大的问题是为什么你的项目太大以至于需要分解?我从来没有听说过这一点,我担心也许你有大量的二进制文件导致回购规模爆炸。 –

+0

是的,该项目确实有大量需要的二进制文件,包括地图,它们的大小超过了Bitbucket的约1.5GB的限制。 – silentz0r

回答

0

您可以使用符号链接到目录。

project/ 
- dir1 -> link to repo1/dir1 
- dir2 -> link to repo1/dir2 
- dir3 -> link to repo2/dir3 
- repo1 -> git repository 
--- dir1 
--- dir2 
- repo2 -> git repository 
--- dir3 

但是,这要求您手动将更改提交到两个回购站。 转换分支也必须同时为两个项目制作。 当然你可以自动化,我想。 但是,管理两个存储库永远不会像一个存储库那么容易。

但是,如果你有这么大的存储库,真的会重新考虑你想在版本控制下实际拥有的东西。二进制文件以及任何其他形式的自动生成的文件(例如来自LaTeX的PDF,来自SVG的PNG,归档文件sources.zip),通常不属于版本控制。对于绝不应该改变的记录数据(例如照片,视频,日志文件)也是如此。

+0

符号链接会在Windows上工作吗? 我不介意分开管理回购,因为我已经以有点有组织的方式分组。 不幸的是,有很多的二进制文件,包括无法生成的大型“地图”文件。我已经尽可能地减少了该项目,并且它仍然超过了Bitbucket所需的大小。不幸的是编译需要在开发机器上发生,因为编译器不能安装在服务器(目标机器)上。 – silentz0r

+0

“符号链接是否适用于Windows?“请先谷歌,从实际问题分散注意力(如果真的没有答案 - 而且我确信有 - 那么你可以在适当的网站上提出一个新问题) - 所以这些大型地图文件实际上是生成的?然后,你应该使用另一个协议(例如FTP,HTTP(例如使用Dropbox/Google Drive或其他服务))将它们复制到服务器。 –

+0

它实际上非常相关,因为你的解决方案可能只适用于* NIX操作系统,不会生成映射文件,但是它们通常是手动编辑的,所以在版本控制下它们有些帮助。我不认为任何diff工具实际上可以显示文件中所做的更改,因为它被识别为二​​进制文件文件。 – silentz0r