Как переключиться на предыдущую версию файла без удаления его последующих версий?

У меня есть 4 версии файла A.txt в моем репозитории subversion скажите: A.txt - ... Р1, A.txt.Р2, A.txt.r3 и A.txt - ... Р4. Моя рабочая копия файла-r4, и я хочу вернуться к r2. Я не хочу использовать "обновление svn-r 2 A.txt " потому что это удалит все изменения после r2, а именно r3 и r4.

Итак, есть ли способ обновить мою рабочую копию до r2 и по-прежнему иметь возможность переключиться на r3 и R4 позже? Иными словами, Я хочу, чтобы у меня все еще была возможность см. все 4 версии с помощью "журнал svn A.txt" после выполнения обновления.

7 ответов


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

в этой ситуации я выполняю следующие шаги:

  1. Проверьте файл, о котором идет речь, готовый для редактирования как r4
  2. перезапишите локальную копию файла с требуемой редакцией, в этом случае r2
  3. Проверьте / зафиксируйте эту" новую " ревизию файла как r5 с соответствующим комментарием

этот способ, когда вы просматриваете историю файлов, вы увидите что-то вроде:

  • r1
  • r2
  • r3
  • r4
  • r5 (комментарий: "вернулся к содержимому r2")

чтобы сделать новую редакцию A.txt это равно редакции 2:

svn up -r HEAD
svn merge -r HEAD:2 A.txt
svn commit

Также см. Описание В отмена изменений.


команда svn up -r 4 только обновления местные копировать в редакцию 4.

сервер по-прежнему имеет все версии 1 до любой.

что вы хотите сделать, это создать новая редакция, редакция № 5, которая идентична редакции № 2.

cd /repo 
svn up -r 2 
cp /repo/file /tmp/file_2 
svn up -r 4 
cp /tmp/file_2 /repo/file 
svn commit -m "Making 5 from 2" 

Если вы когда-нибудь передумаете и захотите 4 назад, вы можете сделать это, создав версию 6 из версии 4.

cd /repo 
svn up -r 4
cp /repo/file /tmp/file_4
svn up -r 5 
cp /tmp/file_4 /repo/file 
svn commit -m "Making 6 from 4" 

всего доброго.

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


svn update -r 2 A.txt

команда не удалить все версии в репозитории. Он установит вашу рабочую копию A.txt будет пересмотр 2. Вы можете увидеть это делаю

> svn status -u A.txt
  *     2   A.txt

вывод этой команды показывает, что вы просматриваете версию 2 и что есть обновления (это *).

после выполнения этого обновления вы будет все еще быть в состоянии сделать"SVN log" и увидите все изменения.

выполнить "svn обновление A.txt" вернет вас к последней версии (в вашем случае, Р4).


обновление до более старого rev не удалит ваши новые обороты.

Так что вы могли бы сделать svn up -r2 file, потом svn up -r4 file.

кроме того, вы не сможете зафиксировать файл r2 таким образом, потому что вам придется обновить перед фиксацией, и вы снова получите r4.


"Я не хочу использовать" svn update-r 2 A.txt " потому что это удалит все изменения после r2, а именно r3 и r4."

эээ... вообще-то, нет. Попробуйте: сделайте регулярное обновление svn после-r 2, и вы увидите, что рабочая копия обновлена до r4.


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

команда обновления SVN

"вносит изменения из репозитория в вашу рабочую копию"

"синхронизирует рабочую копию с редакцией, заданной параметром --revision"