Какой наименее болезненный способ перенести локальные изменения Subversion на другую машину?

StackOverflow https://stackoverflow.com/questions/573849

  •  05-09-2019
  •  | 
  •  

Вопрос

Я работаю над изменениями на своем ноутбуке.Он еще не готов к отправке в репозиторий, но я бы тоже хотел продолжить работу на своем рабочем столе.Мой набор изменений довольно большой, и он содержит не только изменения, но также новые и удаленные файлы.

Я мог бы скопировать полную локальную рабочую копию на другой компьютер и внести изменения на место.Однако это звучит как грязное решение (потому что я загрязняю метаданные на другом компьютере), и я также без необходимости переношу артефакты сборки.

Я попытался перенести файлы .patch с помощью TortoiseSVN, но он продолжает жаловаться на "патч принадлежит более старой версии" (неправда, и почему вас это волнует?) или "строки не совпадают" (да, они не совпадают, потому что я их изменил).Мне вообще не нравились "непрерывные всплывающие окна с ошибками".

Я не хочу устанавливать Cygwin, поэтому об исправлении командной строки не может быть и речи.

Я предполагаю, что последним вариантом было бы разветвление новой ветви для этой функции и переход в цикл "проверка / обновление".Однако они показаны в истории трасс, создавая там загрязнение.

Есть идеи получше?Или я что-то упускаю?

Это было полезно?

Решение

Разветвление - это чистое решение.И имеет дополнительное преимущество в том, что предоставляет вам резервную копию, пока вы работаете над этим огромным изменением.Не говоря уже о простой синхронизации будущих изменений между машинами.

Но, вероятно, вам может сойти с рук простое архивирование всего рабочего каталога и сброс его куда-нибудь на другой компьютер.

Другие советы

Вы пробовали создать новую ветку и использовать переключатель svn.Это перенесет вас в другую часть репозитория и сохранит ваши изменения, если вы перейдете от своей первоначальной рабочей версии.

Что касается альтернативных подходов, вы могли бы добавить МЕРЗАВЕЦ к смеси.Модель управления распределенным исходным кодом GIT позволит вам передавать наборы изменений взад и вперед между вашим рабочим столом и ноутбуком.И поскольку GIT управляет информацией о своих наборах изменений в локальной файловой системе, коммиты, которые вы делаете с обеих сторон, не будут отображаться в потоке, который отслеживает ваша система отслеживания.

Итак, вы в основном переходите "в автономный режим с subversion" и завершаете свою работу с помощью GIT commits.Как только вы закончите, проверьте весь комплект и загрузите его в свой subversion trunk.

Функциональные ветви имеют небольшой вес в Subversion и идеально подходят для изоляции специфичных функций, подобных этой.Если вы используете subversion 1.5 или выше, то весь процесс синхронизации и слияния намного проще, чем это было с 1.4.

Я бы создал временную ветку для этой цели.Таким образом, вы используете только имеющиеся в вашем распоряжении инструменты SVN и не загрязняете meta-meta и не копируете артефакты.

Кроме того, похоже, что вы проверяете свой код с определенным интервалом, и наличие ответвления также предотвратит потерю данных в случае сбоя вашего жесткого диска.

Не последний вариант, а первый:Вам следовало бы создать функциональную ветку уже давным-давно, если изменений действительно так много.

Вы все еще можете сделать это, выполнив копию svn из рабочей копии в branch-directory на сервере, поэтому вам не нужен "цикл проверки / обновления", просто один проверяю, просто один обновление / переключение, на самом деле.

Нравится svn копирует MyWorkingCopy svn://сервер/проект/ ветви/ функции/my-feature-branch

Если вам просто нужна реплика на вашем рабочем столе, я нахожу, что Live Sync идеально подходит для этого сценария.Я настроил его для репликации моей папки checkout на моем ноутбуке и двух настольных компьютерах, что дает мне точно такое же состояние на трех машинах.И все это происходит непрерывно на заднем плане.

Или вы могли бы зайти в ветку и убедиться, что не забыли внести какие-либо изменения на ноутбуке, прежде чем перейти на рабочий стол.:-)

Редактировать: В ответ на комментарий - да, могут возникнуть проблемы, если вы начнете редактировать файлы, пока две машины находятся в процессе синхронизации.Худшее, что может случиться, - это потерять некоторые правки на одной из машин.На практике шансы на то, что это произойдет, довольно малы.

Ну, большинство людей возразили бы, что если ваш "набор изменений довольно большой", вам обязательно следует проверить изменения в (в ветке при необходимости)!

Вы можете попробовать SVK.Из сообщения в блоге и сайта SVK следует, что типичным сценарием использования SVK является

  • зеркальное отображение существующих удаленных репозиториев,
  • затем создайте ветки на вашем компьютере,
  • локально работайте над этими ветвями , и
  • когда вы закончите, объедините их обратно в свой зеркальный сундук,
  • последний шаг приведет к прозрачному обновлению удаленного репозитория.

У меня нет никакого практического опыта использования SVK.Но я думаю, что это соответствует вашему сценарию.Эта запись в блоге описывает это более подробно http://www.bieberlabs.com/archives/2004/11/30/using-svk/

Я думаю, что доступна версия SVK для Windows (SVKWin32) и затем TortoiseSVN может использовать локальное зеркало репозитория для обновления / фиксации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top