SVN - Как зафиксировать несколько файлов за один снимок

104

Я попытался зафиксировать несколько файлов в разных каталогах одним выстрелом, как показано ниже:

svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc

Поскольку я хотел исключить некоторые файлы из списка фиксации, я поместил каждое имя файла в командную строку, как указано выше. Я собрал их в блокноте, и получилось около 25 файлов. Когда я копирую и вставляю его в командную строку, последние несколько файлов отсутствуют, и я предполагаю, что это может быть ограничение буфера командной строки (?). Есть ли возможность увеличить длину буфера?

Могу ли я поместить все файлы в текстовый файл в качестве аргумента для svn commit?

Тхи
источник
8
@Thi - Те, кто не использует графический интерфейс для подрывной деятельности, являются мазохистами. Получите Tortoise SVN или его эквивалент для Linux.
tpow 02
1
Если есть ограничение на длину буфера, его не будет в SVN, он будет в любой оболочке, которую вы используете.
Колин Файн
20
@cinquTimo: вы могли бы предпочесть использовать графический интерфейс для всего. Другие люди этого не делают.
Колин Файн,
@Colin, я так думаю, как в таком случае увеличить длину буфера оболочки?
Thi
3
«Те, кто не использует графический интерфейс для подрывной деятельности, - мазохисты». - Мазохизм - это подрывная деятельность, но у некоторых из нас нет выбора.
Daniel

Ответы:

157

Вы можете использовать список изменений svn, чтобы отслеживать набор файлов, которые вы хотите зафиксировать вместе.

На связанной странице содержится множество деталей, но вот пример резюме:

$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h
$ svn changelist my-changelist mydir/dir3/myfile3.c etc.
... (add all the files you want to commit together at your own rate)
$ svn commit -m"log msg" --changelist my-changelist
Марк Пим
источник
30

Вы можете использовать --targets ARGопцию, где ARG - это имя текстового файла, содержащего цели для фиксации.

svn ci --targets myfiles.txt -m "another commit"
Дмитрий Юдаков
источник
У меня работает эта команда bash:find . -name \*my.mask | xargs svn ci -m"message" --targets -
ASten
28

У меня не было проблем с фиксацией нескольких таких файлов:

svn commit fileDir1/ fileDir2/ -m "updated!"
пси
источник
У меня это не работает. Получение ошибки «svn: '/' не является рабочей копией». Здесь я разместил свой вопрос, можете посмотреть. askubuntu.com/questions/442742/how-to-update-dir-on-svn-server/…
Да сработало здорово. Также в корне моего документа я мог бы зафиксировать все изменения в древовидной структуре рабочей копии следующим образом:> svn commit. -m 'сообщение о
массовом коммите
3

Используйте набор изменений. Вы можете добавить в набор изменений столько файлов, сколько захотите, все сразу или несколькими командами; а затем зафиксируйте их все за один раз.

Колин Файн
источник
1
svnbook.red-bean.com/en/1.6/svn.advanced.changelists.html - Ключевое слово svn - это «список изменений», который рассматривается в первом ответе и получил наибольшее количество голосов.
Джон В. Кларк