SVN Заблокировать определенные файлы

Есть ли способ зафиксировать только список определенных файлов (e.q. только один из списка файлов, который SVN хочет совершить).

Я работаю над MAC OS X под терминалом без какого-либо интерфейса.

Ответ 1

Конечно. Просто перечислите файлы:

$ 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

Ответ 2

Используйте списки изменений. Преимущество над указаниями файлов заключается в том, что вы можете визуализировать и подтверждать, что все, что вы хотели, фактически включено до того, как вы зафиксируете.

$ 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"

Ответ 3

В основном вы помещаете файлы, которые хотите зафиксировать в командной строке

svn ci file1 file2 dir1/file3

Ответ 4

Из-за моего состояния подрывной деятельности мне пришлось проявить творческий подход. 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

Вероятно, не самый распространенный вариант использования, но, надеюсь, он помогает кому-то.

Ответ 5

Помимо перечисления файлов в явном виде, как показано развернуть и Wienczny, вы можете установить списки изменений и провериться эти. Они позволяют управлять разрозненными наборами изменений одной и той же рабочей копии.

Вы можете прочитать о них в онлайн-версии отличной книги SVN.

Ответ 6

попробуйте этот 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'`

Ответ 7

Я создаю (под) папку с именем "Скрыть", перемещаю файл, который я не хочу делать там. Затем выполните мою фиксацию, игнорируя жалобу на отсутствующий файл. Затем переместите скрытый файл из скрыть обратно. /

Я не знаю недостатков этой тактики.