Яка команда svn перелічить усі файли, змінені у гілці?


82

У svn у мене є гілка, яка була створена, скажімо, при перегляді 22334. Потім були зроблені коміти у гілці.

Як отримати список усіх файлів, які були змінені у гілці порівняно з тим, що є в стовбурі? Я не хочу бачити файли, які були змінені на стовбурі між створенням гілки та "зараз".


Я досить часто повертаюся до цього запитання, і найбільш корисною є відповідь, видалена з @AndrewMedico, з svn log:-D
Daniel W.

Відповіді:


84

Це буде зроблено, я думаю:

svn diff -r 22334:HEAD --summarize <url of the branch>

2
Дякую. Я навіть не знав, з якої версії переглядається моя гілка, тому я знаю, svn log <url of the branch> | tailщоб отримати найменший номер версії.
fikr4n

1
Після запуску цього, щоб отримати підсумок усіх змін, якщо ви хочете переглянути кожну зміну, внесену у вашій гілці, ви можете використовувати svn diff -r 22334(зверніть увагу, що різниця до HEAD не вказана). Це буде відрізнятися до вашої локальної робочої копії та дозволить вам вносити зміни до неї із вашої програми diff.
чорно

43

Ви також можете отримати швидкий список змінених файлів, якщо це все, що ви шукаєте, використовуючи команду стану з опцією -u

svn status -u

Це покаже вам, якою редакцією є файл у поточній базі коду порівняно з останньою версією у сховищі. Я використовую diff лише тоді, коли справді хочу побачити відмінності у самих файлах.

Тут є хороший підручник з команди svn, який пояснює багато з цих загальних сценаріїв: Посилання на команди SVN


3
svn statusпокаже лише локальні модифікації. OP шукав, як побачити всі зміни у файлі, які були зафіксовані у їхній гілці з моменту її створення із стовбура.
webnesto

25

Ви можете використовувати таку команду:

svn status -q

Відповідно до svnbook :

With --quiet (-q), it prints only summary information about locally modified items.

ПОПЕРЕДЖЕННЯ: Результат цієї команди відображає лише вашу модифікацію. Тому я пропоную зробити, svn upщоб отримати останню версію файлу, а потім використовувати svn status -qдля отримання файлів, які ви змінили.


Коротка, але солодка відповідь.
Учень

@maskarih бездоганна відповідь!
Gaurav,

14

Тут буде перераховано лише змінені файли:

svn status -u | grep M

Статус svn показує лише локальні модифікації робочого місця. це не відповідає на вихідне запитання щодо всіх змін у гілці після її створення.
webnesto

2
та файли, що містяться Mв назві
Манолете

7
статус svn -u | grep ^ M
rhel.user

Я використовую статус -u | grep "M"
Марк Кан

2

-u параметр відображатиме об'єктні файли, якщо вони будуть додані під час компіляції.

Отже, щоб подолати це додатково, ви можете використовувати такий спосіб.

svn status -u | grep -v '\?' 

2
echo You must invoke st from within branch directory
SvnUrl=`svn info | grep URL | sed 's/URL: //'`
SvnVer=`svn info | grep Revision | sed 's/Revision: //'`
svn diff -r $SvnVer --summarize $SvnUrl

0

svn log -q -vпоказує шляхи та приховує коментарі. Усі контури відставлені, тому ви можете шукати рядки, що починаються з пробілів. Потім прокладіть трубу до cutта sortдля наведення порядку:

svn log --stop-on-copy -q -v | grep '^[[:space:]]'| cut -c6- | sort -u

Це отримує всі шляхи, згадані на гілці, починаючи з точки її гілки. Зверніть увагу, що в ньому буде перелік видалених та доданих, а також змінених файлів. Я просто використав це, щоб отримати матеріали, які я повинен турбуватися про огляд на трохи брудній гілці від нового розробника.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.