Перемещение git-репо на другой сервер - PullRequest
3 голосов
/ 27 октября 2009

У меня есть git clone / repo на сервере разработки, но сейчас я перехожу на другой. Я не хочу фиксировать все свои локальные ветви и изменения в главном репозитории, так как я могу сделать точную копию всего на oldserver на newserver?

Я пытался oldserver:~$ scp -rp project newserver:~/project

но тогда я просто получаю кучу ошибок "typechange" при попытке что-то сделать на newserver.

Кто-то сказал что-то о x-режимах, но как мне сохранить это при перемещении файлов между серверами?

Ответы [ 3 ]

4 голосов
/ 27 октября 2009

Если вы хотите git-решение, вы можете попробовать

git clone --mirror <oldurl> <newurl>

хотя это только для открытых репозиториев.

Если это не репо, вы также можете сделать нормальный клон, за которым следует что-то вроде этого:

git fetch origin
git branch -r | grep '^ *origin/[^ ]*$' |
    while read rb; do git branch --no-track ${rb#*/} $rb; done
git remote rm origin

Средний шаг, конечно, может быть выполнен 5000 различными способами, но это один! (обратите внимание, что строка продолжения \ не нужна после канала в bash - он знает, что ему нужно больше ввода)

Наконец, я бы предложил использовать rsync вместо scp (возможно, с опциями -avz?), Если вы хотите напрямую копировать. (Что это за ошибки при смене типа?)

1 голос
/ 03 ноября 2010

Вы также можете попробовать простое тупое решение - не беспокойтесь о том, как туда попали смены типов, но позвольте git исправить их командой reset:

git reset --hard HEAD

Это имеет смысл, только если (1) все проблемы относятся к извлеченным файлам (а не к самой структуре хранилища) и (2) вы не внесли никаких изменений в newserver , который вы нужно сохранить.

Учитывая эти предостережения, это сработало для меня, когда я обнаружил, что столкнулся с той же проблемой, и не требует, чтобы вы думали о внутренностях git или о том, насколько хорошо ваш процесс передачи файлов сохраняет атрибуты.

1 голос
/ 27 октября 2009

Я на самом деле сделал это, и все, что я сделал, - это сначала скопировал репо и просмотрел его. Я думаю, что scp -rp тоже подойдет.

«Смена типа» обычно означает, что символическая ссылка становится файлом или наоборот. Два сервера работают под одной ОС?

...