Чи є спосіб зафіксувати лише список певних файлів (eq лише один із списку файлів, який SVN хоче зробити).
Я працюю над MAC OS X під терміналом, без будь-якого інтерфейсу.
Чи є спосіб зафіксувати лише список певних файлів (eq лише один із списку файлів, який SVN хоче зробити).
Я працюю над MAC OS X під терміналом, без будь-якого інтерфейсу.
Відповіді:
Звичайно. Просто перерахуйте файли:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
Я не знаю способу сказати це ігнорувати певний набір файлів. Звичайно, якщо файли, які ви хочете зробити, легко перераховані оболонкою, ви можете використовувати це:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
Також команда svn може прочитати список файлів, які потрібно зробити з файлу:
$ svn ci -m "Now works" --targets fix4711.txt
svn add
використовується для додавання файлів у сховища.
Використовуйте списки змін. Перевага перед зазначенням файлів полягає в тому, що ви можете візуалізувати та підтвердити, що все, що ви хотіли, насправді включено до здійснення.
$ svn changelist fix-issue-237 foo.c
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Що зроблено, svn тепер зберігає все для вас окремо. Це допомагає, коли ви жонглюєте кількома змінами
$ svn status
A bar.c
A baz.c
--- Changelist 'fix-issue-237':
A foo.c
Нарешті, скажіть це, щоб здійснити те, що ви хотіли, щоб змінилося.
$ svn commit --changelist fix-issue-237 -m "Issue 237"
svn changelist fix-issue-237 --recursive path/to/directory
Фактично ви розміщуєте файли, які ви хочете зробити з командним рядком
svn ci file1 file2 dir1/file3
Через мій підривний стан мені довелося проявити творчість. svn st
показали M
, A
і ~
статуси. Я тільки хотів M
і A
так ...
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
Ця команда говорить, що знайдіть усі рядки, що виводяться svn st
цим початком, M
або A
виріжте, використовуючи роздільник пробілу, а потім отримайте стовпчики 8 до кінця. Завантажте це у targets.txt і перезапишіть.
Потім змініть targets.txt, щоб далі обрізати список файлів. Тоді біжіть нижче, щоб здійснити:
svn ci -m "My commit message" --targets targets.txt
Напевно, це не найпоширеніший випадок використання, але, сподіваємось, це комусь допомагає.
grep -v '^~'
в чорному списку те, що ви хочете.
Окрім того, що чітко перераховувати файли, як показано відмотувати та Wienczny , ви можете налаштувати списки змін і перевірити їх. Вони дозволяють керувати роз'єднаними наборами змін до тієї ж робочої копії.
Про них ви можете прочитати в онлайн-версії чудової книги SVN .
спробуйте цей сценарій ..
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
Я створюю (під) папку з назвою "приховати", переміщую туди файл, який я не хочу прихилити. Тоді виконайте моє вчинення, ігноруючи скаргу на файл, що відсутній. Потім перенесіть прихований файл із прихованого назад в ./
Я не знаю недоліків цієї тактики.