[완료]cvs 버젼 다운에 관한질문(일전의 질문에 추가적인 내용입니다)

sunnmoon의 이미지

몇일 전에 cvs 에서 잘못 commit 한것에 대해
질문 올렸습니다 http://kldp.org/node/81819

답변을 보고 몇일동안 다른 곳에서도 찾다가..
제가 잘못 commit 한 이전 버젼으로 update은 받아서
다시 commit 할려고 했습니다.

http://kldp.org/node/2757
위 게시물을 보고 앞 전 버젼으로 제 레파지토리? 에 소스를
다운 버젼한 상태로 만드는것 까진 했습니다.
제가 잘못 올려 만들어진 버젼은 1.13 이고 다시 1.12 버젼 상태로
commit 해서 올려둔후 작업 중이던 소스를 다시 계속 진행 할려고 합니다.

cvs update -r 1.12 [파일명]
해서
1.12 버젼으로 소스를 제 레파지토리에 기록이 되었는데요.
그럼 CVS에는 현재 1.13 버젼이 올려져 있으니 제가 이상태에서 commit을 하면
될줄 알앗느데.. cvs diff 로 확인해보니 다른점이 없다고 나오고,
그러니 commit을 해도 적용이 되질 않습니다.

제가 확실히 개념을 이해를 못해서 그런거 같은데, 조언 부탁드립니다...(_ _)
이번기회에 좀 제대로 공부해서 tag, branche 를 활용해서 써야겟다는 생각이
절실하네요. 좋은 하루 되시길..

ktd2004의 이미지

그냥 제 경험상 말씀 드리겠습니다.
(저는 예전 3~4년전에 CVS를 사용하다가 지금은 subversion을 사용중입니다.)

CVS나 Subversion이나 개념은 똑 같기 때문에 말씀 드리겠습니다.

리비전 1.13에서 실수를 하셨고, 이 실수를 되돌리고 싶다는 말씀으로 이해했습니다.
일단 CVS나 Subversion에서는 commit한 리비전을 되돌릴 수 없습니다.
그 이유는 잘못된 commit 조차도 소스의 역사이기 때문입니다.
(혹시 1달후에 1.13이 제대로 된 거였는데 라는 생각이 들 수도 있으니까요.)

방법은 다음과 같습니다. 대략적으로 설명드리겠습니다.
1. 리비전 1.12의 소스를 checkout 혹은 export 받는다.
2. 마찬가지로 리비전 1.13의 소스를 checkout 받는다.(export가 아닙니다.)
3. checkout 받은 1.12의 소스를 1.13의 소스가 있는 디렉토리에 복사(덮어쓴다.)한다.(물론 .CVS 디렉토리는 제외입니다.)
4. 그럼 checkout받은 리비전 1.13의 디렉토리의 파일들이 변경되었다고 나올껍니다.
5. 이 상태에서 수정된 1.13 리비전의 디렉토리를 commit합니다.
6. 물론 주석은 "1.13의 변경이 잘못되어서 1.12로 되돌림" 정도로 달면 되겠죠.
7. 최종적으로 1.13의 변경사항이 되돌려진, 즉 1.12와 같은 1.14 리비전이 됩니다.

사족입니다만...
CVS보다는 subversion을 사용하시길 추천합니다.
다음은 subversion에서 원하시는 내용을 해본 것입니다.(물론 직접 돌려본것은 아닙니다.)

# svn merge -r 13:12 . && svn commit -m "revert revision 13" .

도움이 되시길 바랍니다.

sunnmoon의 이미지

제가 바라는 상황을 그대로 친절히 설명을 해주시니 정말 감사합니다.
제가 아직 미흡해서 이해가 안되는 부분이 있는데요.

Quote:
3. checkout 받은 1.12의 소스를 1.13의 소스가 있는 디렉토리에 복사(덮어쓴다.)한다.(물론 .CVS 디렉토리는 제외입니다.)

이부분은요...1.12 소스를 checkout 받고 다른곳에 백업해둔후 다시 그 디렉토리에 1.13버젼으로 checkout 한 후 ..
1.12 소스로 덮어 씌운다는건가요?
말씀하신 1,2 과정을 해서 1.12 소스와 1.13 소스를 각 다른 디렉토리에다가 저장해둬야 하는 게 맞는거죠?
제가 질문하고도 아리쏭하네요..

답변 감사드리며, 또 실습 해봐야겠습니다..감사 합니다 (_ _)

Romantic-Oriented Programming
http://sunnmoon.pe.kr

Romantic-Oriented Programming
http://sunnmoon.pe.kr

ktd2004의 이미지

네 정확히 이해하신 듯 합니다.
1.12와 1.13을 각각 꺼내서(여기서 1.13이 저장소에 있는 최신 소스겠죠.) 다른 디렉토리에 둡니다.
그리고 1.12의 소스를 1.13에 복사해서 덮어쓰는 거죠.

그렇게 되면, 1.13의 디렉토리는 수정된 것처럼 보이지만 실제로는 1.12의 소스와 같아지는 겁니다.
이 상태에서 commit를 하면 됩니다.

다시 한번 사족입니다.
CVS보다는 subversion이 더 좋습니다. ^^;

sunnmoon의 이미지

말씀하신 데로 해서 구버젼으로
다시 commit 중입니다.

하면서 알게된건데. 마지막 1.12로 덮어쓴 소스를 commit 할때
cvs up -A 로 업데이트 받고 난후 해야 에러가 안생기네요...

좀더 제대로 공부해서 팀장님께 subversion으로 옮길것을 건의 해봐야겠습니다.
답변 감사 드리며, 아주 유용하게 쓰고 있습니다.
(_ _)
Romantic-Oriented Programming
http://sunnmoon.pe.kr

Romantic-Oriented Programming
http://sunnmoon.pe.kr

superkkt의 이미지

버전간의 차이를 이용해서 거꾸로 롤백 할 수 있습니다. 하지만 이건 대상 파일이 하나일 경우에는 쉽게 할 수 있지만, 해당 수정사항에 영향을 받은 소스 파일이 많으면 난감하죠. 그래서 태그와 브랜치를 적극 활용해야 합니다. 자세한 내용은 아래 페이지를 한번 읽어보세요~

http://superkkt.com/215

======================
BLOG : http://superkkt.com

======================
BLOG : http://superkkt.com

익명사용자의 이미지

맨 처음 질문에 답했던 익명입니다. 서브버전이든 cvs든 어떤 것을 사용하느냐가 중요한 것이 아니라 그런 툴을 어떤 식으로 사용하느가(what vs how)가 중요한 겁니다. 개념이 없이 이것 저것 바꾸어보았자 똑같은 문제가 발생하는 겁니다. 이미 있는 한가지에 대해 잘 이해한 후 바꿔야만 해결되는 문제가 있을 때 바꾸는 겁니다. 개발에서 중요한 것은 첫째도 안정, 둘째도 안정, 세째도 안정 입니다. 툴이 자꾸 바뀌는 불안정한 상태로 바뀌게 되죠.

sunnmoon의 이미지

정말 그런것 같네요. 어떤 기능에 대해 '왜' 그렇게 해야 하는지를 모르고
질문에 답만 보고 따라 하다보니, 이 후의 문제들이 파악도 안되고
응용도 안되네요. 이것저것 하느라 미루기만했던 '버젼관리' 에 대한 개념에
대해 제대로 공부해봐야겠습니다. 답변및 조언 주셔서 감사합니다.(__)
Romantic-Oriented Programming
http://sunnmoon.pe.kr

Romantic-Oriented Programming
http://sunnmoon.pe.kr

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.