SVN: как сравнить рабочую копию с версией репозитория?
Я хочу видеть только список файлов, которые были изменены, добавлены и т.д., не содержимое (svn diff
выводит это), только список файлов, таких как svn status
.
svn diff -r HEAD
сбрасывает мне тонны информации, что трудно понять быстро.
svn status
отображаются только изменения, сравнивающие рабочую копию с ее локальной исходной версией (не с ревизией репозитория).
svn update
не поддерживает --dry-run
Вкратце, мне нужно что-то вроде svn status
, но что сравнивает текущую рабочую копию с ревизией репозитория (я собираюсь сравнить с ревизией HEAD).
Я просмотрел руководство SVN, но мне ничего не помогло, к сожалению: -/
Ответы
Ответ 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