Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理各种git/svn项目通用文件的方法?_Git_Svn_Project Management - Fatal编程技术网

处理各种git/svn项目通用文件的方法?

处理各种git/svn项目通用文件的方法?,git,svn,project-management,Git,Svn,Project Management,我有很多git或svn下的软件项目(C、脚本等),从小到大。其中许多共享一些公共文件。处理单个或成对(.h/.c)文件的最佳方法是什么 理想情况下,我希望这些文件位于单独的git存储库中,当它们在其中一个项目中被修改时,具有某种自动的pull/commit/push功能。我认为在git中有一些方法可以做到这一点,但是在svn中也有吗 目前,我将它们放在不同的存储库中,并尝试将所有内容保持在同一个文件系统中,并在主项目目录中使用这些文件的硬链接。但是很容易出错,链接松动等等。。。建议?对于git版

我有很多git或svn下的软件项目(C、脚本等),从小到大。其中许多共享一些公共文件。处理单个或成对(.h/.c)文件的最佳方法是什么

理想情况下,我希望这些文件位于单独的git存储库中,当它们在其中一个项目中被修改时,具有某种自动的pull/commit/push功能。我认为在git中有一些方法可以做到这一点,但是在svn中也有吗


目前,我将它们放在不同的存储库中,并尝试将所有内容保持在同一个文件系统中,并在主项目目录中使用这些文件的硬链接。但是很容易出错,链接松动等等。。。建议?

对于
git
版本,我会打赌。它需要养成一些新习惯(更新你的子模块和其他模块),但可能非常强大


我不知道SVN的这种等价物。如果您想要跨VCS解决方案,可能需要编写一个简单的脚本来检查当前VCS(git或svn),并运行相应的命令(git的子模块,svn的完整克隆)。

您不应该有共享的“文件”;Git项目中的所有文件都应包含在同一文件夹中(使用
.Git
)。您可能需要调用共享API,这些API应该位于独立的repo中,并通过HTTP请求进行调用。或者,您可以捆绑这些公共文件,并将它们作为Nuget包或类似文件引用。它们大多是C项目,这里没有HTTP。当然,我可以制作libs/dlls/so,将源代码保存在一个地方,然后只复制二进制文件,但这会使事情复杂化。这是git/svn之前的传统解决方案。我尝试了子模块,它似乎满足了我对git的需求。但有件事我不知道。我的一个同事在主项目上做了一个git pull,他没有得到子模块。@dargaud是的,这是一些新习惯。如果添加了新的子模块,则必须在拉取之后初始化它们:
git-pull;git子模块init
。如果子模块已经更新,您必须更新它们
git pull;git子模块更新
。我发现清晰简单,这是使用子模块的良好开端。