SVN 커밋 특정 파일


219

특정 파일 목록 (SVN이 커밋하려는 파일 목록 중 하나) 만 커밋하는 방법이 있습니까?

UI없이 터미널에서 MAC OS X를 사용하고 있습니다.

답변:


331

확실한. 파일을 나열하십시오.

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

특정 파일 세트를 무시하도록 지시하는 방법을 모르겠습니다. 물론 커밋하려는 파일이 셸에서 쉽게 나열되면 다음을 사용할 수 있습니다.

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

svn 명령이 파일에서 커밋 할 파일 목록을 읽도록 할 수도 있습니다.

$ svn ci -m "Now works" --targets fix4711.txt

1
기본적으로 파일 이름을 명시 적으로 지정해야합니까? 이 특정 파일을 건드리지 않는다고 말할 수는 없습니까?
0100110010101

16
당신은 할 수 있습니다 : svn st | cut -c 9-> targets.txt를 지정한 다음 targets.txt 파일을 편집하여 특정 파일을 제거하고 --targets 매개 변수를 사용하여 파일 목록을 지정하십시오.
고삐

17
내 새로운 도전은 프린터를 작동시키는 버그 를 만드는 것입니다.
James Webster

3
한심하고 말도 안됩니다. 준비 영역이 없습니다. svn add리포지토리에 파일을 추가하는 데 사용됩니다.
Kandinski

68

변경 목록을 사용하십시오. 파일을 지정하는 것의 장점은 커밋하기 전에 원하는 모든 것이 실제로 포함되어 있는지 시각화하고 확인할 수 있다는 것입니다.

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

그렇게해서 svn은 이제 당신을 위해 일들을 분리시킵니다. 여러 변경 사항을 저글링 할 때 도움이됩니다.

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

마지막으로 원하는 것을 커밋하도록 지시하십시오.

$ svn commit --changelist fix-issue-237 -m "Issue 237"

정답에 +1. 변경 목록은 실제로 갈 길입니다!
Miro Markaravanes

1
변경 목록에 새 디렉토리를 추가하려면 먼저 svn add를 사용하고 다음을 사용하십시오.svn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

실제로 변경 목록은 새 디렉토리와 함께 사용할 수 없습니다 .... "Subversion은 현재 디렉토리에서 변경 목록 사용을 지원하지 않습니다."
Fabian Schmengler

1
@fschmengler : SVN은 끔찍한 도구입니다. 나는 단지 나쁜 일을 최선을 다하려고 노력했습니다. 자식으로 전환하십시오. : P
jcwenger

10
나는 몇 년 전에 Git으로 전환했지만 결코 뒤돌아 보지 않았습니다. 클라이언트를 위해 svn을 다시 사용하도록 강요당했습니다. 양쪽 다리에서 공과 체인으로 달리는 느낌이
들었습니다.

38

기본적으로 커밋하려는 파일을 명령 줄에 넣습니다.

svn ci file1 file2 dir1/file3

1
기본적으로 파일 이름을 명시 적으로 지정해야합니까? 이 특정 파일을 건드리지 않는다고 말할 수는 없습니까?
0100110010101

2
인수없이 실행 svn은 모든 변경된 파일을 커밋하는 경우 파일을 인수로 실행하면 디렉토리에서 변경된 파일이 모두 커밋되면이 파일이 커밋됩니다
Wienczny

22

서브 버전 상태 때문에 창의력을 발휘해야했습니다. svn st보여 M, A~상태. 난 단지 싶어 M하고 A그래서 ...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

이 명령은 또는로 svn st시작 하여 공간 구분 기호를 사용하여 잘라낸 다음 열 8을 끝까지 가져옵니다. targets.txt에 덤프하고 덮어 씁니다.MA

그런 다음 targets.txt를 수정하여 파일 목록을 제거하십시오. 그런 다음 아래를 실행하여 커밋하십시오.

svn ci -m "My commit message" --targets targets.txt

아마도 가장 일반적인 사용 사례는 아니지만 누군가에게 도움이되기를 바랍니다.


2
grep -v '^~'원하는 것을 블랙리스트에 올릴 수도 있습니다 .
Martin Konecny

10

unwindWienczny 로 표시된 파일을 명시 적으로 나열하는 것 외에도 변경 목록을 설정하고 체크인 할 수 있습니다. 이를 통해 동일한 작업 사본에 대한 분리 된 변경 세트를 관리 할 수 ​​있습니다.

우수한 SVN 서적온라인 버전 에서 이에 대해 읽을 수 있습니다 .


7

이 스크립트를 사용해보십시오 ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`

1

"숨기기"라는 (하위) 폴더를 만들고 여기에 커밋 하지 않으려 는 파일을 이동합니다 . 그런 다음 누락 된 파일에 대한 불만을 무시하고 커밋하십시오. 그런 다음 숨겨진 파일을 hide에서 ./로 다시 이동하십시오.

나는이 전술의 단점이 없다는 것을 안다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.