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

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

우수한 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.