2012-04-18 23 views
2

커밋 목록이 길어 커밋을 비틀 거리고 싶습니다. 그래서, 내가 할 때 :서브 버전을 사용하여 수정 된 파일 만 커밋하십시오.

svn st | ACK '^ M'

나는 이러한 파일 를 저지하려는 경우에만

이 명령 라인을 통해 수 있습니까?

+0

명확하게하기 : 수정 된 파일 만 커밋하고 삭제, 추가 또는 대체 된 파일은 커밋하지 않습니까? –

+0

@malenkiy_scot 예, 수정 된 * 파일 만 커밋하고 있음을 확인할 수 있습니다. – crmpicco

답변

9

xargs command은 이러한 종류의 작업에 유용합니다.

당신이 공백 문자가 포함 된 파일 이름이없는 가정하면, 당신은 할 수 있습니다 : 당신은 파일 이름에 공백 문자이있는 경우

svn st | sed -n 's/^M//p' | xargs svn commit 

에서, sed 명령은 각 따옴표를 추가하기 위해 좀 더 복잡하게 파일 이름 :

svn st | sed -n 's/$/"/; s/^M */"/p' | xargs svn commit 

(내가 ack에 익숙하지 않다 - 아마도 그것은 이러한 예에서 sed 대신에 사용될 수있다)

+0

-u 또는 -v 옵션을 지정하지 않으면 filename이 시작되기 전의 문자 수를 알 수 있으므로 (s는 8입니다) sed를 단순화 할 수 있습니다. svn st | grep '^ M'| sed의 /. \ {8 \} \ (. * \)/\ 1/'| xargs svn ci –

+0

모두 "단순"에 대한 귀하의 정의에 달려 있습니다 .-) – slowdog

+0

우수, sed의 첫 번째 예제가 잘 작동했습니다. 나는 일반적으로 선호하는 도구 인 ack를 사용하여 시도했지만 작동시키지 못했습니다. 감사. – crmpicco