gitデーモンに作成したリポジトリを提供する

gitデーモンに作成したリポジトリを提供する

私はこのことについて頭を悩ませてきましたが、解決策のない結論にたどり着きました。まず、私のジレンマについて。

プログラムでリポジトリを作成できるプロジェクトがあります。リポジトリの説明を編集したり、デフォルトのブランチを設定したりできます。これで問題ありません。

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 をサーバー上で取得する

関連情報