SVN: как сравнить рабочую копию с ревизией репозитория? - PullRequest
26 голосов
/ 08 февраля 2011

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

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

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

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

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

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

Ответы [ 6 ]

43 голосов
/ 08 февраля 2011

Попробуйте

svn status --show-updates

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

24 голосов
/ 13 сентября 2011
svn diff -r head

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

Так попробуйте это:

svn diff -r head --diff-cmd meld

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

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

svn status -u 

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

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

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

2 голосов
/ 14 сентября 2011

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

См .: http://blogs.collab.net/subversion/2007/03/computing_the_d/

1 голос
/ 10 декабря 2016

оп:

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

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

Это делает следующее:

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

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

1 голос
/ 20 июля 2012

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

svn diff > ~/svndiff.txt

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

0 голосов
/ 20 июля 2012

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

svn diff -r HEAD - суммировать

...