Перемещение моего SVN в Assembla из локального с учетом ошибки UUID - PullRequest
0 голосов
/ 06 февраля 2012

Я прочитал это сообщение и готов использовать --force-uuid.

Однако мой программист предложил мне также сделать новую проверку на моем сервере, на всякий случай, если Assemblaи существующий формат TortoiseSVN не идентичен (переходим к Ассембле, давайте будем свежими / чистыми).

Я не совсем комфортно это делаю, потому что я изначально не настраивал SVN сам и неСвободно владеет сервером / SVN.

Есть ли возможный ущерб или риск принудительного совпадения UUID?

Любое направление приветствуется.

1 Ответ

1 голос
/ 06 февраля 2012

Давайте отделим клиента от сервера ...

Я предполагаю, что Assemblaгде хранится ваш репозиторийЭто ваш Subversion сервер .

TortoiseSVN - это программное обеспечение, которое вы используете для извлечения программного обеспечения с вашего сервера.Это ваш клиент .

Сначала поговорим о сервере .

КаждыйРепозиторий Subversion на вашем сервере имеет так называемый универсальный уникальный идентификатор (UUID).Это создается при создании хранилища Subversion.Как Subversion генерирует UUID и знает, что во всем мире нет абсолютно никакого другого хранилища Subversion, которое бы не разделяло этот UUID?Это действительно не так, но маловероятно, что есть еще один репозиторий Subversion с UUID.UUID генерируется на основе времени, IP-адреса и MAC-адреса, а также некоторых псевдослучайных значений.

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

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

Обратите внимание, что это сделано:

  1. На сервере
  2. В то время, когда вы импортируете свои данные в хранилище

Это не выполняется вашим клиентским программным обеспечением, поскольку это серверная часть проблемы.


Теперь мы поговорим о вашем Subversion клиенте , в данном случае TortoiseSVN

Когда клиент Subversion выполняет извлечение в рабочий каталог, он отслеживает URL-адрес, с которого вы сделали извлечение, и UUID этого хранилища.

Давайте посмотрим на ваш рабочий каталогиспользуя TortoiseSVN.Щелкните правой кнопкой мыши папку извлечения Subversion и выберите Свойства в нижней части раскрывающегося контекстного меню. Не входите в подменю TortoiseSVN! Выберите пункт меню Свойства в нижней части контекстного меню.

Нажмите Subversion таб.Вы увидите несколько частей информации.Два из них - это URL-адрес, на котором была произведена проверка, и UUID хранилища.

Когда вы щелкнете правой кнопкой мыши по папке извлечения и выполните TortoiseSVN-> Переместить, вы можете изменить URL-адрес, где произошла проверка,Однако вы никогда не сможете изменить UUID для этой проверки.

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


Что вы можете сделать, если вы переместили свой репозиторий, но не убедились, что UUID такой же?Вот несколько решений от лучшего к худшему.

  • Сделайте новый, свежий заказ.Это опция BEST .Прежде чем вы переместили ваш репозиторий Subversion, вы должны были проверить все ваши изменения.Если нет, вы можете использовать Состояние, чтобы найти свои изменения и скопировать их в новую свежую кассу.
  • Перезагрузите хранилище со старым файлом дампа и на этот раз убедитесь, что вы используете флаг --force-uuid.
  • Можно изменить UUID на сервере Subversion, отредактировав UUID вручную.UUID сервера Subversion хранится в файле db / uuid на сервере.Вы можете найти старый UUID в старой кассе (см. Выше).Просто измените UUID в файле db / uuid в каталоге хранилища Subversion.Запомните одно неверное движение, и вы полностью уничтожите свою способность когда-либо снова читать свой репозиторий.Ваша компания потеряет весь исходный код, обанкротится, и все на вашей работе потеряют свою работу и будут ненавидеть вас навсегда.Нет давления.
  • Взломайте вашу проверку Subversion, чтобы изменить UUID на новый UUID.UUID находится в файле .svn\entries в каждом из ваших каталогов, которые вы извлекли.Если вы используете клиенты на основе Subversion 1.7, все ставки отключены.Я считаю, что UUID может быть зашифрован.Это может сработать, но тогда это может привести к поврежденной проверке, которая приведет к повреждению главного хранилища, если вы попытаетесь зафиксировать свои изменения.
...