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