Яка команда 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.