Я работаю над проектом веб-сайта, который в настоящее время отслеживается в svn, но собирается переместиться в git, когда кто-то еще успеет настроить новый сервер и прочее. Это долгая история, но тем временем я сделал свой собственный репозиторий git из некоторого кода, который у меня был, и работал над ним совсем немного. Я не использовал git svn clone, потому что я за границей, и мое подключение к Интернету странно и требует прокси для HTTP, и, похоже, он не пропускает git svn. В любом случае, я развивался в своем собственном репозитории git, но в конце концов, когда проект действительно импортируется должным образом, мне нужно будет переустановить мою работу на клонированный материал git-svn. Будет ли git rebase
правильно работать для этого?Git rebasing на ветку, которая будет создана позже
Одним из осложнений является то, что я фактически работал на виртуальной машине, и для многих коммитов я не осознал, что я не установил записи user.name и user.email, чтобы коммиты были из локального пользователя vm , что довольно странно. Было бы лучше просто собрать все мои изменения в файлы diff, а затем применить их поверх новой ветки после ее создания?
Еще одно осложнение заключается в том, что использование SVN до этого было неполным, поэтому на производственном сервере у меня не было никаких изменений. Вообще-то, у меня была более ранняя версия кода, в первую очередь, которая даже не была главой SVN, поэтому мне не хватало некоторых вещей. Каков наилучший способ?
Последний вопрос заключается в том, что если я импортирую репозиторий SVN через git svn
(я только что проверил и, похоже, сейчас работает), но я не добавляю файл author, я позже смогу переустановить мои изменения на правильно импортированную ветвь с файлом author?
О, новое осложнение. Я сам импортировал репозиторий SVN, используя git svn
, изнурительный процесс, который занял большую часть двух дней на этом медленном соединении. Однако, после окончательного завершения клона, я понял, что в репозитории SVN код был все в подкаталоге, но в моем репозитории git корень репозитория также был корневым каталогом. Если это немного сбивает с толку, это в основном, как этот
SVN:
\dir\codez
мерзавец:
\codez
Как я могу объединить два хранилища? Надеюсь, что я все еще могу использовать rebase, но это кажется действительно странной ситуацией. Это похоже на подмодули, но я не думаю, что это то, что мне нужно.
Ваша новая проблема звучит немного связана с организацией svn (ветви/каталоги) и организацией git (каталоги, поскольку ветви - это чистые метаданные, а не «дешевая копия», как в SVN). Может быть, вы можете посмотреть на svn2git для более точного импорта: см. Http://stackoverflow.com/questions/572893/cloning-a-non-standard-svn-repository-with-git-svn/572898#572898 – VonC
Хмм, вероятно. git svn глупо загрузил репозиторий 5 раз, один раз для туловища, а затем один раз для каждой ветки и тега, а затем я даже не получил эти ветки и теги в git. Я могу попробовать, но я не хочу тратить другой день, просто импортируя репозиторий, если я могу его избежать. Предположительно git 1.6.4 должен был лучше импортировать из svn, чем раньше, но все, что я знаю, это то, что 1.6.3.3 просто не удалось полностью, а 1.6.4 глупо загружает весь репозиторий в 5 раз. – Ibrahim