我一直在为此绞尽脑汁,无法解决就得出了可能的结论。首先,我的困境。
我有一个项目,可以以编程方式创建存储库。我可以编辑存储库的描述,设置默认分支&c。很好。
我还使用git daemon
来保存所有生成的存储库所在的文件夹。这是问题所在。
我能够克隆该存储库,但是克隆的存储库的.git
内容与原始存储库不匹配。
我唯一能想到的是,当我创建这些存储库时,我正在使用系统的git进程,而克隆时我正在使用git daemon
的进程...我什至不确定这是否有意义,而且我的搜索时间没有增加。
作为参考,这是我运行的激活git daemon
的命令:
git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach
这是一个克隆命令的示例:
git clone git://localhost:9999/me/test18.git
这是我运行以创建存储库的命令:
git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff
这些工作正常,我只需要git daemon
就能按原样提供我的存储库。
以下是我创建的仓库中.git/config
内容的示例:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "coolerbranch"]
remote = origin
merge = refs/heads/coolerbranch
以下是相同的仓库:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
如您所见,[branch ...]
部分不匹配。
相反,如果还有一个git daemon
我还没发现,我很想听听。 Github几年前一直在自己工作,但放弃了。
克隆存储库不会复制配置。配置大部分位于计算机,用户或目录的本地。
在没有这些知识的情况下,我假设有一种方法让git在克隆时同步初始配置。 Git的默认值不能被服务器覆盖,只能由用户覆盖。
也许git有一天会允许此选项,很可能不允许。嗯。