Можно ли всегда (принудительно) перезаписывать локальные изменения при обновлении из SVN? Игнорировать конфликты?
Я знаю, что должен работать над моей собственной веткой, но мы вдвоем находимся в одной ветки проекта. Один из разработчиков сделал фиксацию, и я просто хотел обновить свою локальную копию последним из SVN. Запуск 'svn update' Я получаю этот вывод:
Restored 'index.html'
U somescript.php
Conflict discovered in file.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
Есть ли опция/способ перезаписать мои локальные изменения и получить последние файлы из подрывной программы и игнорировать все конфликты?
Я просмотрел некоторые другие сообщения в Stack, и все они не отвечают на вопрос. Говорят, что удалять проект и проверку еще раз, и я думаю, что это лучший способ быть таким... Но, желая получить более подробную информацию о том, почему я не могу заставить обновление.
Благодаря
EDIT:
Итак, я выбрал s 'show all options':
(s) показать все параметры: s
(e) edit - change merged file in an editor
(df) diff-full - show all changes made to merged file
(r) resolved - accept merged version of file
(dc) display-conflict - show all conflicts (ignoring merged version)
(mc) mine-conflict - accept my version for all conflicts (same)
(tc) theirs-conflict - accept their version for all conflicts (same)
(mf) mine-full - accept my version of entire file (even non-conflicts)
(tf) theirs-full - accept their version of entire file (same)
(p) postpone - mark the conflict to be resolved later
(l) launch - launch external tool to resolve conflict
(s) show all - show this list
Думаю, я должен пойти с опцией 'tc'?
Ответы
Ответ 1
Если вам действительно нужна копия HEAD (последняя ревизия в repos), вы должны
svn revert -R <path> // discard all your changes inside path (recursive)
svn update // get latest revision of all files (recursive)
Что это.
Остерегайтесь того, что вы потеряете ВСЕ свои изменения со времени последнего "фиксации".
EDIT: добавил -R <path>
из ответ Isu_guy ради полноты и помог читателям найти один полный ответ
Ответ 2
Ответ tato абсолютно правильный и, пожалуйста, прислушайтесь к его осторожности. Вы потеряете ВСЕ свои изменения. Просто пояснение синтаксиса и некоторые нюансы
svn revert по умолчанию не рекурсивный, и ему нужен путь для работы. Сделать рекурсивно добавить "-R". Если вы находитесь в текущем каталоге, используйте "./" для "пути" ниже или используйте абсолютный путь, например "/path_to_your_folder"
svn revert -R <path>
Обновление svn является рекурсивным. Если вы находитесь в каталоге, вам вообще не нужен путь
svn update
Ответ 3
Извините, я понимаю, что это довольно старый пост, но вместо двух операций я бы сделал это:
svn up --accept tf
Тем не менее, "svn revert -R" затем "svn up" в корне вашей рабочей копии также будет делать трюк. В моем случае у меня есть несколько WCs для разных проектов, поэтому я запускаю оболочку script, которая обновляет все их при запуске моего компьютера. Я не использую accept, вместо этого я использую "-accept p" для отсрочки разрешения, так как это автоматический процесс, затем я объединять любые конфликты, которые SVN не может автоматически слить самостоятельно (обычно это связано с возвратом, но это зависит).
Ответ 4
Использование svn 1.6.11 (как отправлено CentOS 6.4) Команда Carnix должна выглядеть как
svn up --accept theirs-full
(не могу добавить комментарий, так как у меня недостаточно репутации)
Ответ 5
Отвечая на ваш первый вопрос. Нет. Но вы можете переопределить свои локальные файлы, выполнив следующие команды из корня вашего проекта:
svn revert -R .
svn update
Это сработало на моем mac с svn 1.7.19 и ubuntu с svn 1.8.8