Исключить некоторые файлы из коммита командной строки svn (не svn: ignore)
Я развиваюсь со многими людьми.
Я проверяю удаленный репозиторий, получаю 3 файла. После редактирования запустите:
svn status
Это показывает:
M file_1
M file_2
M file_3
Теперь я хочу совершить только два файла: file_1, file_2, file_3, но не.
как это сделать?
Я не хочу использовать
svn revert file_3
прежде чем совершить.
объясняю: я редактирую file_1, file_2 для общего проекта, file_3 для работы только на моей локальной машине.
7 ответов
расширение ответа Зула.. для разработки списка файлов используйте:
svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "$_ "'
или если у вас имена файлов с пробелами использовать:
svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "\"$_\" "'
просто добавьте пути файлов для фиксации в команду svn commit:
svn commit file_1 file_2
см.http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.commit.html
вот версия 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
Я закончил создание сценария, содержащего следующее:
svn ci $(svn diff --summarize | \
grep -v exclude.file1 | \
grep -v exclude.file2 | \
...
grep -v exclude.fileN \
)
Я уверен, что кто-то может сделать его еще более гибким, что делает этот скрипт читал файл, который будет содержать список файлов, исключаемых из фиксации.
может быть, вы можете использовать эту команду.
svn ci `svn st | grep -e "^[A|M]" | grep -v "test.js" | grep -ve "conf\.js$" | awk '{print }' | tr "\n" " "`