Проверить diff на файл на сервере

У меня есть рабочая копия репозитория на моей машине, и я знаю, что он был обновлен на сервере. Я хотел бы знать, как получить разницу между новой версией и версией в моей рабочей копии, используя аргументы командной строки svn.

Есть ли способ сделать это?

Ответ 1

Рабочая копия - это версия BASE. Последняя копия из репозитория - версия HEAD. Это сравнит вашу рабочую копию с версией HEAD:

svn diff -r HEAD <file>

На самом деле это перевернет изменения в обратном порядке, т.е. сообщит вам, как перейти с HEAD на BASE. Технически вы хотите:

svn diff -r BASE:HEAD <file>

Можете ли вы избавиться от ударов клавиатуры? Только вы и ваше божество знаете этот ответ.

Ответ 2

Разница между рабочей копией и HEAD; изменения, которые необходимо будет внести в то, что теперь находится в хранилище (HEAD), для создания вашей рабочей копии:

svn diff -r HEAD --old=<file>

Возможный интерес, разница между BASE и HEAD; изменения, которые были проверены в репозитории с момента последней обновленной рабочей копии:

svn diff -r BASE:HEAD <file>

И, конечно, разница между BASE и рабочей копией; изменения, внесенные с момента последней обновленной рабочей копии:

svn diff <file>


Обсуждаются три версии: BASE, рабочая копия и HEAD.

  • BASE: <file> с последним извлеченным/обновленным. Какая рабочая копия вернется после использования svn revert
  • рабочая копия: локальные изменения в <file>, которые были проверены/обновлены совсем недавно как BASE
  • HEAD: последние изменения в репозитории. Эквивалентен BASE, если никаких изменений не было, поскольку <file> был проверен/обновлен как рабочая копия.