Подтвердить что ты не робот

Можно ли всегда (принудительно) перезаписывать локальные изменения при обновлении из 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'?

4b9b3361

Ответ 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