2010-03-12 3 views
1

나는 documentation suggests으로SVN : Recurisvely 파일을 추가 하시겠습니까?

svn add *.py --force 

노력하고있어,하지만 난 사실이 깊은 폴더에 중첩 된 파일을 누락 알고있다. 왜?

다른 유닉스 명령에서도이 작업을 수행 할 수있는 표준 방법이 있습니까? */*.py은 파일을 몇 개 더 저장할 것이지만 모든 가능한 깊이에 대해이 작업을 수행하는 것은 엉덩이에 약간의 고통입니다.

답변

3

find 명령은 원하는 파일을 찾아내는 트릭입니다.

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

그리고 약 100 만 가지의 방법이 있으며, 모두 교육적입니다.

# 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

다른 사람이 find 명령으로 언급 한대로 나는 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는 파이썬과 JS 파일을 추가하고 싶다면이는 나에게 최선의 해답이 될 것입니다

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

'svn의 상태를'작동합니다. 이렇게하면 Repo에 추가되지 않은 항목 만 선택됩니다.
그래도 내가 자주하는 일은 단지 repo에서 원하지 않는 것을 지우고 지우는 것입니다. (어쨌든 왜 그곳에 있습니까?) 그리고 나서 나는 모든 헬퍼 이미지 등을 얻습니다.

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

찾기는 좋은 해결책이기도합니다. 그리고 욕심 많은 것도 아닙니다. 게다가 창문에 있다면 약간의 변형이 가능합니다. 즉 svn status 출력을 받아 짧은 배치 파일을 해킹합니다.
행운을 비네!

+1

멋지다.하지만 폴더의 버전이 변경되지 않으면 어떻게 될까? 그것은 내가 가진 완전히 새로운 폴더를 무시했습니다. – mpen

+0

그 말은 놀랍다. regex는 베어 디렉토리를 포함하도록 수정해야합니다. 나는 그것을하기위한 명백한 방법을 정말로 보지 못한다. 당신은 정규식 필터를 제거 할 수있다. 나는 하루의 끝에 좋은 구식 주목을 대신 할만한 것이 없다고 생각한다. :) – flaxeater

+0

정규식 필터라고 생각하지 않는다. 꽤 괜찮은'svn status'는 버전없는 디렉토리를 나열하지 않을 것이다. – mpen

0
find . ! -wholename ./settings.py | grep -P ".*\.(py|html)$" | xargs -d "\n" svn add 
관련 문제