CVSからソースと履歴をインポートして作成された既存のベアのGitリポジトリがあります。私は以下を使用して鏡を作ります:
git clone --mirror git://aserver.adomain.com/myrepo
次に、すべてのブランチとタグを内部のGitリポジトリホストにプッシュします。しかし、プッシュはベアリポジトリをGitリポジトリとして認識していないようです。
私は以下を試しました:
git clone --mirror git://aserver.adomain.com/myrepo
git remote set-url origin http://user@anotherserver.adomain.com/project/myrepo.git
git push origin
その結果:
$ git push origin
Password for 'xxxx':
error: cannot spawn git: No such file or directory
または私は試します:
$ git remote rm origin
Note: Some branches outside the refs/remotes/ hierarchy were not removed;
to delete them, use:
...a whole lot of branches...
user@SOMEMACHINE /some/path/myrepo.git (BARE:master)
$ ls
HEAD config description hooks info objects packed-refs refs
user@SOMEMACHINE /some/path/myrepo.git (BARE:master)
$ git branch -a
...a whole lot of local branches...
user@SOMEMACHINE /some/path/myrepo.git (BARE:master)
$ git remote add mygithost http://user@anotherserver.adomain.com/project/myrepo.git
user@SOMEMACHINE /some/path/myrepo.git (BARE:master)
$ git push --all mygithost
Password for 'xxxx':
error: cannot spawn git: No such file or directory
「gitをスポーンできない」とはどういう意味ですか?
すべてのブランチを含むベアリポジトリを空の既存のリポジトリにプッシュするにはどうすればよいですか?
私はいくつかの可能性をグーグルで検索し、いくつかのSOの問題を確認しましたが、この問題の解決策が見つかりません。明らかに、このプロセスについての私の理解には欠陥があります。
アップデート
私の理解に欠陥はなかったと思います。このエラーは、「通常の」クローンからブランチごとにクローンを作成してプッシュできるため、ベアリポジトリに何か問題があると誤解しました。
結局のところ、これはMSysGitのバグです。私の場合、すべての履歴を保持することが要件だったため、Linuxに移行しました。空のリモートリポジトリにプッシュする必要があるため、ブランチとタグを単純に削除することはできませんでした。したがって、以下が機能しました。
$ git remote rm origin
$ git clone --mirror git://aserver.adomain.com/myrepo
$ cd /some/path/myrepo.git
$ git remote add mygithost http://user@anotherserver.adomain.com/project/myrepo.git
$ git push --all mygithost
$ git push --tags mygithost