
私はこのことについて頭を悩ませてきましたが、解決策のない結論にたどり着きました。まず、私のジレンマについて。
プログラムでリポジトリを作成できるプロジェクトがあります。リポジトリの説明を編集したり、デフォルトのブランチを設定したりできます。これで問題ありません。
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 は数年前に独自に取り組んでいましたが、放棄しました。
また、私はもともとこの質問を SO に投稿しましたが、他の SE サイトでさらに検索したところ、SF には - 風の質問がもっとあることに気付きましたgit-daemon
。
リポジトリを複製しても、構成はコピーされません。構成は、ほとんどの場合、コンピューター、ユーザー、またはディレクトリに対してローカルです。
この知識がなければ、クローン作成時に Git で初期設定を同期する方法があると思っていました。Git のデフォルトはサーバーでは上書きできず、ユーザーのみが上書きできます。
おそらく、git はいつかこのオプションを許可するでしょうが、おそらくそうはならないでしょう。まあ、仕方ありません。
答え1
クローンされた.gitはサーバーの.gitの内容と一致しないと思います。サーバーをセットアップするには、本の指示に従うことをお勧めします。https://git-scm.com/book/en/v2/Git-on-the-Server-Git をサーバー上で取得する。