[완료]subversion + TortoiseSVN에서 파일 내용이 바뀌지않았는데도 change made로 나옵니다.

choco6의 이미지

외국의 한 오픈소스 프로젝트를 받아 개인적으로 수정을 하고 있습니다.. 제가 공식적인 커미터가 아니므로 그냥 말 그대로 개인적으로 이용하려고 리눅스 박스에 subversion을 설치, 다운받은 원본 소스를 베이스 리비전으로 import 시켰습니다.
그리고 국내 어떤 블러그에 그 원본소스를 기반으로 수정작업을 하던 분이 계시길래 그 분의 소스묶음도 다운받아서 원본과 어떤 차이가 있는지 대조해 보려고 체크아웃 받은 원본소스에 다운 받은 변경소스를 overwrite시켰습니다. (윈도우즈 환경에서.. 이렇게 overwrite해도 .svn 메타데이타는 지워지지 않으므로 변경내역을 확인할 수 있습니다.)

그런데 문제는...
TortoiseSVN에서 Check modification을 보면, 전 파일이 다 변경된걸로 나온다는겁니다!!!
그래서 소스 파일 하나를 더블클릭해서 보니 변경된 파일이라고 나타난 소스가 내용은 하나도 바뀐게 없었습니다..
그래서 이번엔 리눅스 박스에서 subversion 커맨드를 이용, 새로 check out을 받고 변경된 소스를 overwrite한 후 svn diff를 해봤습니다.. 역시 윈도우즈에서처럼 모든 소스파일이 다 변경된 걸로 나오는거에요... 그런데 정작 실제 내용은 또씨하나 변경된게 없는데도요..

내용이 변경된게 없는데도 subversion에서 변경된 파일로 뜰 수가 있나요?....
정작 내용이 바뀐 소스파일과 내용이 바뀌지 않은 파일이 몽땅 변경된 파일이라고 뜨니 정말 황당하네요...
왜 이런 문제가 발생하는지 아시는 분 조언 부탁합니다.

세이군의 이미지

몇가지 경우가 있을 수 있습니다.

1. CR/LF의 변화 : PC, UNIX, Mac간의 줄끝문자 관계로 인한 변화
2. 체크섬 변화 : MD5, SHA 값이 바뀌는 경우입니다.
3. 파일의 시간 변화 : 파일 속성중 시간과 관련된 속성의 변화(생성시간, 최종수정시간 등)

나름대로 생각해본 결론은 3번이 아닐까 합니다.

"체크아웃 결과 메타데이터에 있는 시간정보보다 덮어쓴 파일의 시간정보가 최근 시간이다."

.svn/entries 파일을 확인해보시면 뭔가 나올것 같네요.

BuzzLy의 이미지

설정에 따라 다를 수 있을 지 모르겠지만 제가 데비안에서 사용하는
subversion은 파일 수정 시간이 바뀌어도 내용이 동일하면
status에서 변경되었다는 메시지는 나오지 않던데요?

choco6의 이미지

3번은 저도 아니라고 생각되는게, 단순히 시간만 바뀌었다면 변경된걸로 나오지는 않더군요..
아마 1번에 해당되지 않을가 생각되는데, 그런데 만약 1번의 문제라면, 소스묶음을 리눅스로 옮겨서 vi로 보면 ^M 문자가 들어가 있으야 하는거 아닌가요??..
그런데 변경소스 묶음을 리눅스로 옮겨서 vi로 봐도 ^M 문자가 들어가있지는 않던데요..-_-ㅋ

bushi의 이미지

svn:eol-style

unix 환경 개발자와 windows 환경 개발자와 mac 환경 개발자가 서로 사이좋게 잘 지낼 수 있죠.
log 메시지의 native charset 기능과 더불어 svn 이 cvs 보다 좋은 점들 중의 하나가 아닐까 싶습니다.

끙끙 않지 마시고 테스트 파일 하나 작성해서 ^M 붙여서 한번 commit 하고 제거하고 다시 commit 해보세요.
같은 증상이 재현되는지.

OTL

choco6의 이미지

답변 감사합니다.. bushi님
그래서 혹시나 하고 dos2unix 툴을 이용, 소스파일을 변환시켜봤는데 여전히 subversion에서 modified되었다고 나옵니다..
그럼 1번 문제도 아니라는 이야긴데....
위의 상황처럼 원본소스와 내용이 동일한 소스를 엎어쳤을 때, modified되어 나오는 문제를 해결해야 하는데 끝에 ^M자가 붙었다면 수동으로라도 지워서 commit을 하면 되지만 ^M자가 붙어있지도 않은데 modified되었다고 나오니 답답하네요..

블루스크린의 이미지

파일하나 골라서 diff로 비교해 보시죠

-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.

atie의 이미지

svn status default-timer.cpp 와
svn diff default-timer.cpp 를 올려보시죠.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

choco6의 이미지

atie님 말씀대로 svn diff 한 결과를 여기에 업로드하려고 파일로 저장했더니.. 그때서야 원본소스에 ^M자가 들어간걸 확인했습니다!!!!
이럴수가...
그냥 화면상에서 svn diff하면 안나오는 글자가 파일로 저장하니까 보여지네요...ㅠㅠ
atie님 덕분에 문제를 확인할 수 있었습니다...
감사합니다 atie님.... 이것땜에 3일을 끙끙되었네요....ㅠㅠ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.