Git子模块绝对worktree路径配置

时间:2012-01-19 11:52:04

标签: git git-submodules

这是我的子模块 redmine_dashboard 配置文件:

子模块配置文件:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    worktree = /Users/daniel/redmine/vendor/plugins/redmine_dashboard
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:ebc/redmine_dashboard.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[gui]
    wmstate = normal
    geometry = 841x391+-8+43 187 177

的Mac

worktree = /Users/daniel/redmine/vendor/plugins/redmine_dashboard

的Linux

worktree = /home/daniel/redmine/vendor/plugins/redmine_dashboard

问题

我可以为亲戚更改此绝对路径吗?类似的东西:

worktree = ../../vendor/plugins/redmine_dashboard

3 个答案:

答案 0 :(得分:7)

是的,您应该能够使用相对路径更新配置文件。您还应该将子模块根目录中的.git文件中的工作树目录更新为返回该模块的相对路径。

我相信这在(至少)最新版本的git(1.7.10.1)中得到了修复。我似乎找不到更改日志,所以我不知道它何时修复。通过删除.git/modules文件夹中的子模块和文件夹,然后重做git submodule initgit submodule update,我能够让git解决问题。

答案 1 :(得分:3)

请注意git config man page提及:

core.worktree

  

设置工作树根目录的路径。这可以被GIT_WORK_TREE环境变量和--work-tree命令行选项覆盖   它可以是{strong>或.git目录的相对路径,由--git-dirGIT_DIR指定,或自动发现。
  如果指定了--git-dirGIT_DIR但未指定--work-treeGIT_WORK_TREEcore.worktree,则将当前工作目录视为工作树的根目录

答案 2 :(得分:2)

为什么要设置worktree?默认情况下,工作树是您从.git目录运行命令的位置。有关详细信息,请参阅this question