2008-11-13 4 views
2

수정 된 많은 양의 XML 파일을 커밋하고 싶습니다. 그러나, 재귀 적으로 검색하고자하는 디렉토리 내에는 로컬에 추가 된 많은 폴더/파일이 있습니다. 이것들은 커밋하고 싶지 않습니다.Subversion : 수정 된 파일 만 커밋하십시오.

명령 줄에서이 작업을 수행 할 수있는 방법이 있습니까?

업데이트 : SVN 버전 1.4.6 (r28521), 2008년 3월 11일 컴파일, 8시 26분 35초

추신 : 나는 SVN 버전 정보를 포함해야 커밋을 강제하는 방법을 포함하는 답변에 관심이 있습니다 (예 : 파일이 잠긴 경우에도 마찬가지입니다.

+0

질문에 대한 변경 사항을 기반으로 답변을 업데이트했습니다. 나는 그것이 더 도움이 되었기를 바란다. 그러나 이것이 자주 일어나는 것이면 changeset를 사용할 수 있도록 1.5 (적어도 클라이언트)를 업그레이드 할 것을 권한다. :) –

답변

4

로컬 파일/폴더에서 svn : ignore 속성을 사용해 보셨습니까? 그러나 당신이 그들을 추가 svn 않는 한, 그들은 커밋되지 않습니다 ...

일반적으로 - 포스는 파일 잠금을 훔칠 수 있습니다.

+0

--force가 나에게 오류를 주었다. svn commit 명령. 'svn help commit'은 강제 로그 옵션만을 언급합니다. – Grundlefleck

+0

다른 접근 방식으로 http://stackoverflow.com/a/10226942/892318도 참조하십시오. – domi27

2

편집 : 질문에서 업데이트 한 정보 중 일부를 기반으로이 답변을 다시 작성하고 있습니다.

먼저 강제로 파일의 잠금을 해제하기 만하면 커밋을 강제 적용하는 것만으로는 충분하지 않습니다. unlock 명령과 함께 --force를 사용하면 잠금을 해제하려는 정확한 URL에서 사용해야합니다. 불행히도 저장소에 대한 액세스 권한이 없으면이 방법 만 수행 할 수 있습니다. 저장소에 직접 액세스 할 수있는 경우 여기에 표시된대로 svnadmin 명령을 사용할 수 있습니다.

svnadmin lslocks /path/to/repository 

이렇게하면 잠긴 파일이 표시됩니다. 잠금을 해제하려면 :

svnadmin rmlocks /path/to/repository /project/path/to/locked/file 

당신이 저장소에 직접 액세스 할 수없는 경우, 당신과 같이 한 번에 잠금 장치를 하나씩 제거 :

svn --force unlock svn://url.to.repository/project/path/to/locked/file 

당신이 체크인 할 준비가되면, 당신은 기본 디렉토리를 수행하는 대신 체크인 할 파일을 직접 나열 할 수 있습니다. 이것은 당신이 디렉토리 구조 변경, 추가를 무시하고 오직 수정 된 XML 파일에서 확인 할 수 있습니다 또는 당신이 (너무 추가 해제 예)에서 확인하지 않으려는 것입니다 어떤 다른 :

svn --force unlock svn;//url.to.repository/project/janes_subdir/jane.xml 
svn ci -m "Whatever Log" foo.xml junk.xml my_subdir/*.xml janes_subdir/jane.xml 
+0

나는 정상적으로는 아니지만 홀더가 짐을 꾸리고 밤에 집에갔습니다. :-) – Grundlefleck

+0

아, 그래, 그 의미가있어 :) –

3

당신은 didn를 ' 어떤 명령 행을 지정하십시오. 그래서 유닉스 나 cygwin을 가정하십시오.

몇 가지 옵션 :

  1. find . -name '*.xml' -print0 | xargs -0 svn ci
  2. svn status | egrep '^M.*\.xml$' | sed -e 's/^. *//' > tmp.txt && svn ci --targets tmp.txt
  3. svn status > tmp.txt && $EDITOR tmp.txt && sed -e 's/^. *//' < tmp.txt > tmp2.txt && svn ci --targets tmp2.txt

참고 : 나는 명령을 테스트하지 않았습니다.

첫 번째 파일은 최근 XML 파일을 커밋합니다 (새 XML 파일을 추가하지 않은 경우 문제가되지 않음).

두 번째는 수정 된 모든 xml 파일을 커밋합니다.

세 번째 파일은 커밋하기 전에 파일 목록을 수정할 수 있습니다.커밋하고 싶지 않은 모든 줄을 제거하기 만하면됩니다. 내가 한 것처럼 (&에 나뉘어져있는 것처럼) 모든 명령을 하나로 묶는 것보다는 각 명령을 자신의 것으로하는 것이 더 편할 수도 있습니다.

잠금에 관해서는 대부분을 커버하는 것으로 보이는 또 다른 코멘트가있었습니다.

+0

그게 나에게 비슷한 문제 ("새로 추가 된 파일 만 커밋")를 해결하는 데 도움이되었습니다. 감사! 구출에 유닉스 커맨드 라인 유틸리티. –

관련 문제