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

есть ли вариант / способ перезаписать мои локальные изменения и получить последние файлы из subversion и игнорировать все конфликты?

Я посмотрел на некоторые другие сообщения в стеке, и все они не делают ответить на вопрос. Они говорят, чтобы удалить проект и проверить снова, что я думаю, если это лучший способ, так тому и быть... Но желая получить более подробную информацию о том, почему я не могу заставить обновление. Спасибо

EDIT:

поэтому я выбрал s 'показать все параметры':

(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'?

5 55

5 ответов:

Если вы действительно хотите копию HEAD (последняя редакция в репозиториях), то вы должны

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 ответ для полноты и помощи читателям найти один полный ответ

ответ тато абсолютно правильный и, пожалуйста, обратите внимание на его осторожность. Вы потеряете все свои изменения. Просто уточнение синтаксиса и некоторые нюансы

SVN revert является нерекурсивным по умолчанию и нуждается в пути для работы. Чтобы сделать это рекурсивно добавить "-Р". Если вы находитесь в текущую папку "./ "для" пути "ниже или использовать абсолютный путь, как "/ path_to_your_folder"

svn revert -R <path>

обновление svn является рекурсивным. Если вы находитесь в каталоге вам не нужен путь все

svn update

Извините, я понимаю, что это довольно старый пост, но вместо двух операций, я бы сделал это:

svn up --accept tf

или

svn up --accept theirs-full

что сказал, "svn revert-R", то "svn up" в корне вашей рабочей копии также будет делать трюк. В моем случае у меня есть несколько WCs для различных проектов, поэтому я запускаю сценарий оболочки, который обновляет все их при запуске моего компьютера. Я не использую accept, скорее я использую "--accept p", чтобы отложить разрешение, так как это автоматизированный процесс, то я слияние любых конфликтов, которые SVN не может автоматически объединить самостоятельно (обычно это включает возврат, но это зависит).

используя svn 1.6.11 (как поставляется CentOS 6.4) команда Carnix должна выглядеть как

svn up --accept theirs-full

(Не могу добавить комментарий, так как у меня недостаточно репутации)

отвечая на ваш первый вопрос. нет. Но вы можете переопределить свои локальные файлы, выполнив следующие команды из корня вашего проекта:

svn revert -R .
svn update

это работало на моем mac с svn 1.7.19 и ubuntu с svn 1.8.8