SVN: достоверно добавить файлы? - PullRequest
1 голос
/ 12 марта 2010

Я пытаюсь

svn add *.py --force

Как следует из документации , , но я точно знаю, что в ней отсутствуют файлы, вложенные в более глубокие папки. Почему?

Есть ли стандартный способ сделать это и с другими командами Unix? */*.py будет захватывать еще несколько файлов, но это неприятно - делать это на любой возможной глубине.

Ответы [ 3 ]

3 голосов
/ 12 марта 2010

Команда find - это хитрость для поиска нужных вам файлов.

find . -name "*.py" -exec svn add --parents {} ';'

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

# if you want to make sure you don't find files in your .svn directories
find . -name .svn -prune -o -name "*.py" -exec svn add --parents {} ';'

# execs svn only once; probably a bit faster.
# -print0 and -0 avoid problems if files have spaces in names
find . -name .svn -prune -o -name "*.py" -print0 | xargs -0 svn add --parents 
2 голосов
/ 12 марта 2010

Как заметил другой человек с помощью команды поиска, я использую svn status. Используется как при этом

>svn status
?       private/Config.my.php
?       private/log/word_failure
?       private/log/db_err_log.txt
?       private/import/client2
M       public/reports/ReadyForMeeting.report.php
?       public/tools/Connection.class.php.good
M       public/tools/FieldNode.class.php
M       public/tools/PageBuilderForm.class.php
M       public/domain/Report_Setup_Parameter.class.php
M       public/domain/Report_Setup_Page.class.php
M       public/modules/mAdmin/mManageUsers.module.php
M       public/modules/mAdmin.module.php
M       public/modules/mAppraiserSetup.module.php
?       public/js/firebug-lite.js
?       public/js/lang_en-us.js
?       public/js/_composite.js
?       public/js/lang_en.js
M       public/js/uniValidate.js

Ааа видишь всех со статусом? это означает, что они находятся в файловой системе, но не зафиксированы. Поэтому я добавляю все php файлы примерно так.

> svn status | grep ^\? | awk '{ print $2 }'  | grep .*php$ | xargs svn add

Или, если бы я хотел добавить php python и js файлы, это бы сработало

> svn status | grep ^\? | awk '{ print $2 }'  | egrep ".*php$|.*py$|.*js$" | xargs svn add

'svn status' будет лучшим ответом для меня. Таким образом, будет выбрано только то, что НЕ было добавлено в репо.
Однако, так же часто, что я делаю, просто прохожу и удаляю то, что мне не нужно в репо (почему оно там есть) и затем я выполняю, получая все вспомогательные изображения и тому подобное.

> svn status | grep ^\? | awk '{ print $2 }' | xargs svn add

Найти - тоже хорошее решение, для этого нужно меньше думать. И тоже не такой жадный. Плюс, если вы находитесь на Windows, то некоторые варианты этого будут работать. А именно, взять вывод svn status и взломать короткий командный файл.
Удачи!

0 голосов
/ 04 апреля 2010
find . ! -wholename ./settings.py | grep -P ".*\.(py|html)$" | xargs -d "\n" svn add
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...