Исключить некоторые файлы при фиксации в командной строке svn (не svn: ignore) - PullRequest
9 голосов
/ 15 декабря 2011

Я развиваюсь со многими людьми.

Я проверяю удаленный репозиторий, получаю 3 файла. После редактирования запустите:

svn status

Показывает:

M file_1
M file_2
M file_3

Теперь я хочу зафиксировать только два файла: файл_1, файл_2, но не файл_3.

Как это сделать?

Я не хочу использовать

svn revert file_3

до коммита.

Объясните: я редактирую файл_1, файл_2 для общего проекта, файл_3 для запуска только на моем локальном компьютере.

Ответы [ 7 ]

10 голосов
/ 24 апреля 2013

Расширяя ответ zoul .. для разработки списка файлов используйте:

svn stat |  grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "$_ "'

Или, если у вас есть имена файлов с пробелами, используйте:

svn stat |  grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "\"$_\" "'
7 голосов
/ 15 декабря 2011

Как насчет:

$ svn commit file_1 file_2
3 голосов
/ 06 апреля 2015

одна строка для bash:

svn ci $(svn stat | grep -v exclude.file)
1 голос
/ 15 декабря 2011

Просто добавьте пути файлов для фиксации к команде svn commit:

svn commit file_1 file_2

См. http://svnbook.red -bean.com / ru / 1.7 / svn.ref.svn.c.commit.html

0 голосов
/ 11 декабря 2015

возможно, вы можете использовать эту команду.

svn ci `svn st | grep -e "^[A|M]" | grep -v "test.js" | grep -ve "conf\.js$" | awk '{print $2}' | tr "\\n" " "`
0 голосов
/ 08 октября 2015

Я закончил делать скрипт, содержащий следующее:

svn ci $(svn diff --summarize | \
    grep -v exclude.file1 | \
    grep -v exclude.file2 | \
    ...
    grep -v exclude.fileN \
)

Я уверен, что кто-то может сделать его еще более гибким, сделав этот скрипт читающим файл, который будет содержать список файлов, которые будут исключены из фиксации.

0 голосов
/ 09 ноября 2013

Вот версия Windows PowerShell, которая фиксирует только файлы, которых нет в списке изменений. Создайте список изменений под названием ignore-on-commit (который Tortoise SVN поймет в любом случае) и поместите в него файлы, которые вы не хотите фиксировать.

# get list of changed files into targets
[XML]$svnStatus = svn st -q --xml C:\SourceCode\Monad
# select the nodes that aren't in a changelist
$fileList = $svnStatus.SelectNodes('/status/target/entry[wc-status/@item != "unversioned"]') | Foreach-Object {$_.path};
# create a temp file of targets
$fileListPath =  [IO.Path]::GetTempFileName();
$fileList | out-file $fileListPath -Encoding ASCII
# do the commit
svn commit --targets $fileListPath -m "Publish $version" --keep-changelists 
# remove the temp file
Remove-Item $filelistPath
...