
我為此絞盡腦汁,得出了一個可能的結論,但沒有解決方案。首先,我的困境。
我有一個項目,可以透過程式設計建立儲存庫。我可以編輯儲存庫的描述,設定預設分支等等。這可以。
我還用於git daemon
提供保存所有生成的存儲庫的資料夾。這就是問題所在。
我可以克隆存儲庫,但克隆的存儲庫的.git
內容與原始存儲庫不匹配。
我唯一能想到的是當我創造這些儲存庫我正在使用系統的 git 進程,但是在克隆時我使用的是git daemon
s 進程...我什至不確定這是否有意義,而且我的搜尋時間沒有發現任何結果。
作為參考,這是我運行的激活命令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 一直在獨立工作,但後來放棄了。
另外,我最初在 SO 上發布了這個問題,但在其他 SE 網站上進一步搜索後,我意識到 SF 有更多git-daemon
類似的問題。
克隆儲存庫不會複製配置。配置主要是電腦、使用者或目錄的本機配置。
如果沒有這些知識,我假設有一種方法可以讓 git 在克隆時同步初始配置。 Git 的預設設定不能由伺服器覆蓋,只能由使用者覆蓋。
也許有一天 git 會允許這個選項,但很可能不會。呃,好吧。
答案1
我認為克隆的 .git 不應與伺服器 .git 內容相符。對於設定伺服器,我建議您按照書中的說明進行操作https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server。