Как переключиться на предыдущую версию файла без удаления его последующих версий?
У меня есть 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, поэтому, пожалуйста, извините меня, если этот метод не работает в этой среде.
в этой ситуации я выполняю следующие шаги:
- Проверьте файл, о котором идет речь, готовый для редактирования как r4
- перезапишите локальную копию файла с требуемой редакцией, в этом случае r2
- Проверьте / зафиксируйте эту" новую " ревизию файла как 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 не удалит никаких изменений на сервере. Единственные изменения, которые он вносит, - это ваша локальная рабочая копия:
"вносит изменения из репозитория в вашу рабочую копию"
"синхронизирует рабочую копию с редакцией, заданной параметром --revision"