У меня есть существующий пустой репозиторий Git, созданный путем импорта нашего исходного кода и истории из CVS. Я делаю зеркало, используя:
git clone --mirror git://aserver.adomain.com/myrepo
Затем я хочу отправить все ветки и теги на наш внутренний хост-репозиторий Git, но отправка, похоже, не видит голый репозиторий как репозиторий Git.
Я пробовал следующее:
git clone --mirror git://aserver.adomain.com/myrepo
git remote set-url origin http://[email protected]/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://[email protected]/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://[email protected]/project/myrepo.git
$ git push --all mygithost
$ git push --tags mygithost