2015-03-13 45 views
1

我有一个应该在Windows和Linux下工作的项目。我在公司的服务器上放置了一个中央存储库作为文件夹。在它旁边有一个存储库,它是该存储库的子模块。如何在本地更改子模块远程url不得不提交这些更改

现在我可以像\\server\project Windows下访问此文件夹。在Linux下,文件夹名称是/mnt/server/project。项目回购和子模块回购都放在该文件夹的不同子目录中。在Windows上添加子模块并推送后,当我想在Linux上更新我的项目时,这给我带来了一些问题。有没有办法在本地更改.gitmodules中的子模块url,而无需将这些更改提交回中央存储库?

根据我所在的平台,还可以在.gitmodules文件中设置网址。也许还有其他的选择。

回答

1

您可以随时在.gitmodules编辑URL,然后用git submodule sync.gitmodules中的更改将显示在git status中,但也许您可以接受这一点。

最好是找到一种方式让网址Linux和Windows都能够理解,如不使用安装点。你不能直接使用IP吗?像192.168.0.42/project/submodule.git? (当然取代你的服务器IP,或者如果你有一个主机名,它显然会更好)。

1

您应该在.gitmodules文件中使用相对路径。 如果你的两个仓库都存储在服务器下的文件夹,如:

  • /mnt/server/project/MainProject.git(Linux)的 \\server\project\MainProject.git(视窗)
  • /mnt/server/project/SubmoduleName.git(Linux)的 \\server\project\SubmoduleName.git(视窗)

和你.gitmodules文件应该包含这样的条目(假设你已经存储了linux路径):

[submodule "SubmoduleName"] 
    path = SubmoduleFolder 
    url = /mnt/server/project/SubmoduleName.git 

您可以以使用相对URL这样的改变(注:相对URL语法是“Unix的”,但它在Windows下正常工作太)

[submodule "SubmoduleName"] 
    path = SubmoduleFolder 
    url = ../SubmoduleName.git 

Commit和推动这种变化。现在,您可以照常在Windows或Linux下克隆主项目,并且子模块路径将自动解决。