program story

Subversion이 변경되지 않은 파일을 커밋하도록하려면 어떻게해야합니까?

inputbox 2020. 12. 31. 08:16
반응형

Subversion이 변경되지 않은 파일을 커밋하도록하려면 어떻게해야합니까?


변경되지 않은 경우에도 Subversion에서 파일을 커밋하고 싶습니다. 이를 수행하는 방법이 있습니까?


파일 내용이 변경되지 않도록하려면 (즉, johnstok이 제안한대로 공백을 변경할 수 없음) 항상 파일의 속성 중 하나를 변경할 수 있습니다.

예.

svn propset dummyproperty 1 yourfile
svn 커밋 yourfile

파일을 변경하지 않고 커밋을 수행합니다.

특수 svn:속성 중 하나를 사용하지 않는지 확인하십시오 . 다른 것은 괜찮습니다.


편집 : 다른 많은 포스터에서 누군가이 작업을 원하는 이유를 물었습니다. 아마도이 답변을 표시 한 사람들도 같은 우려를 가지고있을 것입니다.

원래 포스터에 대해 말할 수는 없지만 이것이 사용 된 것을 본 시나리오 중 하나는 Visual Sourcesafe 저장소의 활동을 Subversion 저장소와 자동으로 동기화하려고 할 때입니다.


강제 커밋을 원하는 이유에 대한 답변. 누군가 잘못되었거나 명확하지 않은 커밋 메시지를 사용한 경우를 보았습니다. 이 실수를 바로 잡을 수있는 강제 커밋을 수행 할 수 있다면 좋습니다. 이렇게하면 업데이트 된 커밋 메시지가 저장소로 이동하므로 손실되지 않습니다.


문제가되는 파일을 삭제 한 다음 다시 추가하여이 문제를 해결했습니다. 가장 좋은 방법은 아니고 아마도 개정 기록을 깨 뜨렸을 것입니다. 그러나 그것은 제 목적에 적합했습니다.

원하는 이유 : 파일은 동일한 소스에서 빌드 된 두 개의 실행 파일 중 하나였습니다 (다른 #defines 세트). 소스에 대한 사소한 변경은 하나는 변경되었지만 하나는 변경되지 않았 음을 의미합니다. 변경 사항이 없더라도 실제로 업데이트 한 개정 내역을 최신 버전으로 기록하고 싶었습니다.

아마도 Morten Holdflod Møller의 "파일은 여전히 ​​새 개정판의 일부일 것"이라는 지적이이 표시를 포함 할 수 있지만 변경되지 않은 파일의 로그에는 해당 개정판에 대한 주석이 표시되지 않았다고 생각합니다.


텍스트 파일 인 경우 줄 바꿈과 같은 공백을 추가하십시오.


이 질문에 대한 일부 사람들에게 대답하는 것이 가능해야합니다. 어떤 이유로 svn이 doc 파일 간의 차이점을 인식하지 못하므로 강제로 커밋하고 싶습니다!

이제 정적 디렉토리에서 svn으로 문서를 이동하고 있습니다. 파일은 UG_v1.2, UG_v1.3 등과 같습니다. 따라서 기록을 유지하기 위해 1.2를 가져와 파일 이름에서 버전을 제거하고 svn에 추가하고 커밋합니다. 그런 다음 두 번째 버전에서 버전을 가져와 첫 번째 버전 위에 복사하고 새 버전을 커밋하고 싶습니다. 파일 크기와 생성 날짜는 변경되지만 (문서 내부 내용은 언급하지 않음) svn은 그것이 완벽하게 동일한 파일이라고 주장하며 커밋을 허용하지 않습니다. 수동으로 문서를 변경하면 svn이 다르게 보입니다. 도대체? :>


나는 그것이 가능하다고 생각하지 않지만, 우선 왜 그렇게해야합니까? 파일이 변경되지 않은 경우 커밋되지 않아야합니다.

커밋에서 해당 파일을 다른 파일과 그룹화하려면 내부에서 사소한 것을 변경할 수 있습니다 (예 : 공백 추가).


누군가가 변경되지 않은 파일을 커밋하려는 이유는 파일의 이전 버전으로 되 돌리는 방법에 대한 오해입니다.

예를 들어, 파일 index.html과거의 개정판 (예 : 650)으로 업데이트 하여 개정판 680 의 파일 되돌릴 수 있습니다 .

svn update index.html -r 650

그러나 다음과 같은 이유로 문제가 해결되지 않습니다.

svn 상태 -u index.html
        * 650 index.html
개정에 대한 상태 : 680

svn은 index.html이 원격으로 수정되어 커밋 할 수 없다고 명확하게 말합니다 . 즉, index.html이 오래되었고 최신 개정판으로 업데이트되어야한다고 "생각"합니다. 그래서 다음 svn update은 index.html을 개정판 680으로 되돌릴 것 입니다.

파일을 실제로 되돌리려면 역순으로 병합해야합니다.

svn merge -r 680:650 index.html

그리고 그것을 커밋 svn ci -m "Reverted to r650" index.html


실제로 강제 커밋을해야하는 이유를 발견했습니다. 이것은 아마도 모범 사례는 아니지만 민감한 정보를 포함하고 있기 때문에 일부 쉘 스크립트에 대해 엄격한 보안을 유지해야하기 때문에 Truecrypt ( http://www.truecrypt.org/ ) 볼륨을 SVN에 넣습니다 . Truecrypt 볼륨이 생성되면 바이너리 데이터는 어떤 작업을하든 동일하게 유지됩니다. 따라서 실제로 볼륨의 내용을 변경할 수 있지만 볼륨은 변경된 것처럼 보이지 않습니다.


속성을 변경해도 강제로 커밋되지 않습니다.

TortoiseSVN 1.4.5, 빌드 10425-32 비트, 2007/08/26 11:14:13


trueCrypt 볼륨과 동일한 문제가 있습니다.

새 속성 (위에서 제안한대로) "forceCommit1"을 추가했고 볼륨 파일을 커밋 할 수있었습니다. 그러나 속성 만 파일의 내용이 아닌 커밋되었습니다.

파일을 제거하고 svn에 다시 추가했습니다.


명령 줄에서 할 수 있다고 생각 했나요?

svn ci -force <filename>

여기에 그것을 확인할 저장소가 없으므로 틀릴 수 있습니다.

참조 URL : https://stackoverflow.com/questions/206183/how-can-i-force-subversion-to-commit-an-unchanged-file

반응형