sed && svn 문제

sed && svn 문제

나는 다음 명령을 실행한 svn 작업 복사본을 가지고 있습니다.

./source * -type f -exec sed "s/@version 0.5.3/@version 0.5.4/" -i {} \;

파일은 모두 업데이트되었지만 svn은 다음 중 하나를 실행할 때 어떤 변경 사항도 인식하지 못합니다.

svn 상태 ./source

svn diff ./소스

svn 커밋 ./source

나는 또한 $?를 확인하는 스크립트를 작성하려고 했습니다. sed에서 파일을 "터치"하여 mdate를 업데이트해도 괜찮지만 sed는 항상 0을 반환하는 것 같습니다 -.-

내가 지금 무엇을 할 수 있을까? -.-

답변1

문제는 다음을 사용하는 데 있습니다 find.

find dir1 -type f

디렉터리 내부 파일을 포함하여 디렉터리 구조의 모든 파일과 일치합니다 .svn. 의 파일은 반대 .svn작업을 수행하는 데 사용되는 파일입니다 svn diff. 따라서 본질적으로 작업 복사본뿐만 아니라 트리에 있는 파일의 모든 복사본을 수정했습니다.

다음 구문을 사용해 보세요.

find ./source * -type f ! -path '*/.svn/*' -exec sed "s/@version 0.5.3/@version 0.5.4/" -I {} \;

답변2

내 경우에는 실제 파일에 대한 Symlinc 링크를 업데이트하고 있는 것으로 나타났습니다. sed 내부 업데이트를 사용했습니다. 흥미롭게도 이는 일반 파일에 대한 심볼릭 링크로 전환됩니다. 물론 "객체" 유형이 변경되었기 때문에 svn은 만족스럽지 않았습니다.

심볼릭 링크를 일반 파일로 변경하는 방법은 다음과 같습니다.

user@host>ls -l txt*
-rw-rw-r-- 1 user user 90 Feb 28  2020 txtfile
lrwxrwxrwx 1 user user 7 Aug  5 11:07 txtln -> txtfile
user@host>sed -i "s/hello/mello/" txtln
user@host>ls -l txt*
-rw-rw-r-- 1 user user 90 Feb 28  2020 txtfile
-rw-rw-r-- 1 user user 90 Aug  5 11:08 txtln
user@host>

관련 정보