Есть ли способ зафиксировать только список определенных файлов (e.q. только один из списка файлов, который SVN хочет совершить).
Я работаю над MAC OS X под терминалом без какого-либо интерфейса.
Есть ли способ зафиксировать только список определенных файлов (e.q. только один из списка файлов, который 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 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 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 до конца. Сбросьте это на target.txt и перезапишите.
Затем измените target.txt, чтобы обрезать список файлов дальше. Затем выполните ниже для фиксации:
svn ci -m "My commit message" --targets targets.txt
Вероятно, не самый распространенный вариант использования, но, надеюсь, он помогает кому-то.
Помимо перечисления файлов в явном виде, как показано развернуть и Wienczny, вы можете установить списки изменений и провериться эти. Они позволяют управлять разрозненными наборами изменений одной и той же рабочей копии.
Вы можете прочитать о них в онлайн-версии отличной книги SVN.
попробуйте этот script..
#!/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'`
Я создаю (под) папку с именем "Скрыть", перемещаю файл, который я не хочу делать там. Затем выполните мою фиксацию, игнорируя жалобу на отсутствующий файл. Затем переместите скрытый файл из скрыть обратно. /
Я не знаю недостатков этой тактики.