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

SVN: как сравнить рабочую копию с версией репозитория?

Я хочу видеть только список файлов, которые были изменены, добавлены и т.д., не содержимое (svn diff выводит это), только список файлов, таких как svn status.

svn diff -r HEAD сбрасывает мне тонны информации, что трудно понять быстро.

svn status отображаются только изменения, сравнивающие рабочую копию с ее локальной исходной версией (не с ревизией репозитория).

svn update не поддерживает --dry-run

Вкратце, мне нужно что-то вроде svn status, но что сравнивает текущую рабочую копию с ревизией репозитория (я собираюсь сравнить с ревизией HEAD).

Я просмотрел руководство SVN, но мне ничего не помогло, к сожалению: -/

4b9b3361

Ответ 1

Попробуйте

svn status --show-updates

Параметр -u (или --show-updates) для svn status заставляет svn обращаться к репозиторию и показывать материал, который был изменен в репозитории, - этого вам достаточно? В зависимости от того, что вам нужно, вы можете также использовать флаг -q или --verbose

Ответ 2

svn diff -r head

Это создаст список diff для всех файлов, которые отличаются между рабочей копией и репозиторием, давая список файлов и фактические изменения. Который, как вы говорите, может быть трудно понять.

Итак, попробуйте следующее:

svn diff -r head --diff-cmd meld

Это то же самое, но отображает изменения с помощью meld (вы можете предоставить любой другой инструмент визуального отличия в вашем арсенале), что намного более управляемо.

Но серьезно, привыкнуть к чтению этих выходных данных diff, поскольку они составляют основу для многих других вещей (например, патчей) и довольно трудно избежать в мире Linux. Чтобы сократить выход:

svn status -u 

предоставит вам список измененных файлов, а затем:

svn diff <file> -r head --diff-cmd <tool>

даст вам визуальное отличие только от конкретного файла, который вас интересует.

Ответ 3

Как вы сформулировали исходный вопрос, правильный ответ - статус svn -u как уже указано. Основываясь на последующих комментариях, вы также должны знать о svn diff --summarize, поскольку это может быть то, что вы ищете. Это то, что вы использовали бы, чтобы сравнить два репозитория или два тега или что-то еще в репозитории. Вы не можете использовать эту опцию, чтобы сравнить вашу рабочую копию с репозиторием (статус делает это).

Смотрите: http://blogs.collab.net/subversion/2007/03/computing_the_d/

Ответ 4

Вот что я сделал, и это решило мою проблему: я хочу посмотреть, что отличает меня от моей рабочей копии и копии репо.

svn diff > ~/svndiff.txt

И затем я остановил файл открытого текста в SublimeText 2, чтобы я мог читать его проще. Угадайте, что это довольно простой материал, но я думал, что опубликую его, так как он помог мне с аналогичной проблемой.

Ответ 5

op:

Я хочу видеть только список файлов, которые были изменены, добавлены и т.д., а не содержимое (svn diff выводит это), только список файлов, таких как статус svn.

Как и в OP, я хочу увидеть отчет стиля "svn status" текущей рабочей копии для ветвей проекта, которые вложены ниже более крупного репозитория svn против их последней сундука, и я хочу использовать те же аргументы пути и ревизии, что и svn diff использует.

Следующее делает следующее:

svn diff --old . --new ^/pathToProject/trunk --summarize

Конечно, замените "pathToTrunk" на фактический путь, который использует ваш репозиторий.

Ответ 6

Это может быть то, что вы ищете:

svn diff -r HEAD --summarize