Как я могу зафиксировать файл в SVN, который я забыл зафиксировать некоторое время назад (настройка номера ревизии) - PullRequest
1 голос
/ 30 мая 2009

Так что я с радостью использую Subversion для регулярной фиксации файлов в моем стеке проектов, связанных с моим массивным решением Visual Studio.

Я решил сделать svn-экспорт однажды и решил, что мне нужно посмотреть, как мой проект работал в октябре 2008 года. Итак, я экспортирую в свою локальную файловую систему, редакция 37.

Когда я собирался скомпилировать проект, каким-то образом было 2 или 3 файла, которые пропустили еще в октябре. Допустим, они не были зафиксированы до 99-й версии или, что еще лучше, они все еще не совершены вообще.

Есть ли способ подправить номер коммита в файле, чтобы он соответствовал правильной ревизии , которую вы подразумевали для ? Таким образом, если я повторно экспортирую версию 37, я получу правильное и рабочее решение в Visual Studio?

Ответы [ 5 ]

4 голосов
/ 30 мая 2009

Не совсем. Номера версий Subversion применяются ко всему дереву исходного кода. Если бы вы смогли внести изменения в зафиксированную ревизию, это разрушило бы идею управления изменениями.

Что вы можете сделать, это создать ветку из ревизии 37 и внести в нее изменения. Это создаст новую ревизию, скажем, 100. Затем вы можете зафиксировать это, и у вас будет измененная ревизия 37, которую вы ищете.

3 голосов
/ 30 мая 2009

Это возможно, но требует, чтобы вы не унывали, знали формат дампа SVN-репозитория и имели устойчивую руку (и резервные копии).

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

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

Это также не очень рекомендуется; просто зафиксируйте файлы сейчас и будьте более осторожны в будущем.

1 голос
/ 30 мая 2009

Нет, это невозможно. Вы не можете изменить историю.

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

0 голосов
/ 30 мая 2009

Звучит так, будто на самом деле вам все равно, что это была редакция 37. Скорее, вы пытаетесь реэкспортировать ревизию с определенным реальным свойством (то есть 37-я редакция оказалась той, которую вы дали своему клиенту) .

Как сказал Мэтт, вы действительно хотите создать ветку из Rev 37. По сути, это означает, что вы собираетесь скопировать Rev 37 в каталог Subversion с именем, которое объясняет, что это такое, например, / branch / client- A. Затем добавьте отсутствующие файлы в ветку и подтвердите. Затем вы можете экспортировать из / branch / client-A, чтобы получить то, что вы хотите.

0 голосов
/ 30 мая 2009

Похоже, что-то, что не должно быть возможно.

Вы можете попробовать взять два файла из более поздней ревизии и использовать их вместо этого (с файлами из ревизии 37).

...