在Linux上使用git submodule时,我可能会有一个.gitmodules子系统,其中一个或多个子系统是从/mnt/gitrepos/subsystem1.git签出的(基于中心文件的访问)。

[submodule "subsystem1"]
  path = subsystem11
  url = /mnt/gitrepos/subsystem1.git/

我还想支持一个windows用户,他可以从H:/gitrepos/subsystem1.git/访问同一个模块repo。
例如,linux中的samba共享/mnt/gitrepos/作为共享gitrepos
Git有没有办法根据操作系统处理URL行?
对于windows,.gitmodules将是
[submodule "subsystem1"]
  path = subsystem11
  url = H:/gitrepos/subsystem1.git/

因此,我想要“类似”这个.gitmodules(推测语法)的通用代码:
[submodule "subsystem1"]
  path = subsystem11
  if Linux
    url = /mnt/gitrepos/subsystem1.git/
  else
    url = H:/gitrepos/subsystem1.git/

最佳答案

没有。子模块通常是为一个在任何地方都可以工作的存储库url而设计的,通常是基于网络的(例如git://host/path)。没有为一个存储库提供多个不同url的机制。
也就是说,git允许您自定义子模块的url。初始化子模块(git submodule init)时,.gitmodules中的url将复制到.git/config文件中。现在可以在运行git submodule update之前编辑那里的url。

09-04 15:58