Subversion 관리 파일 이름에서 @ 문자를 이스케이프 처리하는 방법은 무엇입니까?
많은 Subversion 작업에서 파일 또는 URL 인수 끝에 '@'기호를 추가하면 해당 파일의 특정 개정을 대상으로 할 수 있습니다. 예를 들어, "svn info test.txt@1234"는 개정 1234에 존재했던 test.txt에 대한 정보를 제공합니다.
그러나 파일 이름에 @이 포함되어 있으면 Subversion에서 개정 지정자로 잘못 해석됩니다.
svn info 'test @ .txt'svn : 구문 오류 구문 분석 개정 '.txt'
'/', '\'및 '@'으로 이스케이프 처리하는 것 외에도 큰 따옴표와 작은 따옴표를 시도했습니다. @ 기호를 파일 이름의 일부로 취급하도록 Subversion에 지시하려면 어떻게해야합니까?
로부터 SVN 책 (강조는 추가) :
지각 독자는이 시점에서 페그 개정 구문이 실제 복사 경로 또는 실제로 부호가있는 URL에 문제를 일으키는 지 궁금합니다. 결국 svn
news@11
은 내 트리의 디렉토리 이름 인지 또는“ 뉴스 개정 11”의 구문 인지 어떻게 알 수 있습니까? 고맙게도 svn 은 항상 후자를 가정하지만 사소한 해결 방법이 있습니다. 당신은 경로의 끝에 기호에서를 추가 할 필요가 같은,news@11@
. svn 은 인수의 마지막 기호에만 관심이 있으며 그 뒤에 기호 페그 개정 지정자를 생략하는 것은 불법으로 간주되지 않습니다. 이 해결 방법은 at 기호로 끝나는 경로에도 적용됩니다.filename@@
filename @ 이라는 파일 에 대해 이야기합니다 .
원래 답변은 정확하지만 충분히 명시 적이 지 않을 수 있습니다. 특정 유닉스 명령 행 옵션은 다음과 같습니다.
svn info 'image@2x.png@'
또는
svn info "image@2x.png@"
또는
svn info image\@2x.png\@
방금 세 가지를 모두 테스트했습니다.
다른 하위 폴더에 여러 파일을 추가하기위한 솔루션 :
for file in $(find ./ -type f -name "*@*.png"); do svn add $file@; done
" @ .png" 의 "png" 를 추가하려는 파일 종류로 바꾸십시오 .
다음 파일을 추가하려면 : image@2x.png 다음을 수행하십시오. svn add image \ @ 2x.png @
간단히 추가
@
SVN 명령이 무엇이든 관계없이 파일에서 다음과 같이 사용해야합니다.
file@2x.jpg
에
file@2x.jpg@
필자의 경우 @ 기호가 포함 된 SVN 저장소에서 파일을 제거해야했습니다.
이것은 작동하지 않습니다 :
svn remove 'src/assets/images/hi_res/locales-usa@2x.png'
그러나 이것은했다 :
svn remove 'src/assets/images/hi_res/locales-usa@2x.png@'
여러 파일을 추가하려면 대체 솔루션이 있습니다.
svn status | grep \.png | awk '{print $2"@"}'| xargs svn add
"move"와 같은 2 개의 인수가있는 svn 명령의 경우 왼쪽 (첫 번째) 매개 변수 에만 "@"을 추가해야합니다 . 예를 들면 다음과 같습니다.
$ svn add README@txt@
A README@txt
$ svn move README@txt@ README2@txt
A README2@txt
D README@txt
$ svn status
A README2@txt
$ svn commit -m "blah"
Adding README2@txt
Transmitting file data .
Committed revision 168.
$ svn delete README2@txt@
D README2@txt
$ svn commit -m "blahblah"
*Deleting README2@txt
Committed revision 169.
이 줄은 중요합니다 : $ svn move README @ txt @ README2 @ txt
보다시피, "README2 @ txt"에 "@"를 추가 할 필요는 없습니다.
@ 데이비드 H
@ 기호를 이스케이프하지 않고 비슷한 명령을 시도했지만 여전히 잘 작동합니다.
svn ci splash.png splash@2x.png@
이것은 GNU bash 버전 3.2.48 (1)-릴리스 (x86_64-apple-darwin10.0) 및 svn 1.6.16에 있습니다.
나를 위해 일한 유일한 해결책은 @NPike가 제안한 것과 동일했습니다.
svn 'path / to / filename @ ext @'되돌리기
나는 오늘 이메일 주소에서 생성 된 파일 이름에 문제가있었습니다 (아주 좋은 생각은 아닙니다!).
및 셸 확장 printf
옵션을 사용하는 솔루션find
svn add $(find . -name "*@*.png" -printf "%p@ ")
참고URL : https://stackoverflow.com/questions/757435/how-to-escape-characters-in-subversion-managed-file-names
'Programing' 카테고리의 다른 글
문자열이 양의 정수인지 확인 (0) | 2020.05.14 |
---|---|
.jar 파일의 내용보기 (0) | 2020.05.14 |
ActiveRecord : 크기 대 개수 (0) | 2020.05.14 |
AngularJS 컨트롤러를 확장하는 데 권장되는 방법은 무엇입니까? (0) | 2020.05.14 |
Django 템플릿에 주석을 넣는 방법 (0) | 2020.05.14 |