VSS에서 SVN으로 변경을 고민하고 있습니다.

navidad의 이미지

기존에 사용하던 VSS에서 SVN으로 변경하려고 합니다.

주된 변경 사유로는 개발자들이 한곳에 모여 개발할때는 몰랐는데.. 전부 떨어져 작업해야할 상황이 자주 벌어지는 관계로 CVS, SVN중 SVN을 선택했습니다. 주로 Window 플랫폼에서 개발중이며 클라이언트로는 TortoiseSVN을 사용할 예정이니, 가능하면 TortoiseSVN에서 가능한 방법이 있으면 우선적으로 알려주시면 고맙겠습니다.

일단 SVN을 도입하기 전에 VSS에서 주로하던 작업들이 가능한지를 살펴보고 있는데요..

1.기존 Check In된 파일[특정 파일 기준으로 revision간]의 Historical한 Diff가 가능한가요? SVN은 파일단위가 아닌 전체 리비젼이 바뀐다는 얘기를 들어서 불가능하지 않은지..

2.update하기 전에 파일 단위로 repository와 현재 로컬을 diff해서 원하는 파일만 update할 수 있나요? conflict가 발생하지 않더라도, 차이나는 부분중 다른 사람의 실수를 update 하기전에 발견할 수도 있을것 같아서요..

3.위에 말씀드린 diff기능은 window 환격에 익숙하다보니 diff가 결과가 text 기반보다는 visual하게 표시되고 쉽게 머지가 되면 좋을 것 같은데.. 추천할만한 툴이 있나요?

현재 SVN + Araxis Merge툴을 사용해서 사용할까 생각중인데.. 더 좋은 조합이 있으면 추천 부탁드립니다.

Araxis가 로컬 vs 로컬 diff & merge만 지원하는 거 같네요. 그래서 Araxis를 사용할 경우.. Working Directory/SVN Directory 두개가 필요할 듯.. SVN에서 클라이언트 SVN Directory에 Update하고.. 주작업된 Working Directory와 SVN Directory에서 Araxis로 diff & merge하는 식으로...

zelon의 이미지

eclipse + subclipse plugin 을 쓰시면 말씀하신 모든 기능이 될겁니다. 저는 eclipse + cvs 로 위의 사항을 모두 만족하고 있습니다. ^^

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

jamiecha의 이미지

답은 아니고, 그냥 사용기입니다.

저도 VSS 버리고 TortoiseSVN + Araxis Merge 조합으로 사용하고 있습니다.

VSS 와 SVN 이 개념차이가 많아서 처음 도입에 한 이틀을 해메었는데,
계속 써보니까 상당히 좋더군요.

그리고 저도 처음에는 working directory / SVN directory 를 따로 놓고
썼었는데 이제는 SVN dir 에서 그냥 작업을 합니다.

working 에서 신나게 작업하고 SVN 으로 머지한 다음 이것을 또 commit 하는게 많이 불편했거든요.

그래서 SVN 디렉토리에서 그냥 작업을 하고 그 사이에 일어난 수정사항은
check for modifications 으로 한번 보고 마음의 준비를 한 후
SVN update 를 통해 받고 충돌사항 머지 후 commit 하고 있습니다.

참고로, 제일 만족하는 기능은 revision 기능이죠.
파일 하나를 변경해도 전체 리비젼이 올라가기 때문에
과거 특정 시점으로 돌아가기가 굉장히 편합니다.
물론 리비젼이 10000 단위로 올라가면 어찌 될지는 아직 모르겠습니다 :lol:

feanor의 이미지

navidad wrote:

1.기존 Check In된 파일[특정 파일 기준으로 revision간]의 Historical한 Diff가 가능한가요? SVN은 파일단위가 아닌 전체 리비젼이 바뀐다는 얘기를 들어서 불가능하지 않은지...

체인지셋 단위로 리비전이 올라가긴 하지만 파일단위로 diff를 보지 못한다는 이야기는 아닙니다.

svn diff -r M:N filename 하면 리비전 M과 리비전 N의 diff를 filename에 대해서만 보여줍니다. filename을 적지 않으면 두 리비전 사이에 변경된 모든 파일의 diff를 보여줍니다.

navidad wrote:

2.update하기 전에 파일 단위로 repository와 현재 로컬을 diff해서 원하는 파일만 update할 수 있나요? conflict가 발생하지 않더라도, 차이나는 부분중 다른 사람의 실수를 update 하기전에 발견할 수도 있을것 같아서요...

서브버전은 마지막으로 가져온 레포지토리 상태를 로컬에 저장해 둡니다. (구체적으로는 .svn/text-base 아래)

svn status 하시면 현재 로컬에서 변경된 파일들을 (네트워크 연결 없이도) 볼 수 있고, 그냥 svn diff filename 하시면 filename 파일의 로컬 diff를 (역시 네트워크 연결 없이도) 볼 수 있습니다.

현재 로컬에 캐시된 레포지토리 버전과 실제 레포지토리의 버전이 달라서 conflict 가 날 수 있는 경우에는, 아예 체크인이 되지 않고 update 하라고 경고 메시지를 보여주니 (out of date 어쩌구) 걱정하실 필요가 없습니다.

--feanor

ssggkim의 이미지

원하시는 기능은 다 됩니다.

그리고 Windows에서 사용하시는 것이니 tortoiseSVN 적극 추천입니다.
Visual studio IDE에 붙는 AnkhSVN도 있는데, 제가 검토할 당시 기능이 제한적이더군요. 지금은 나아졌을지도...
diff, merge로는 그냥 winmerge experimental version을 그럭저럭 쓰고 있습니다. 무료라서요. :)

http://tortoisesvn.tigris.org/
http://ankhsvn.tigris.org/

ps) 아~ 그리고 작업자가 많으시다면 repository type은 꼭 fsfs로 하시길... berkeleydb는 자주 맛이 가서요.

navidad의 이미지

답변 감사합니다. 찾아보니 제가 원했던 기능은 다 되는것 같습니다.

다른 질문을 하나 더 드립니다.

현재 회사 메인 SVN은 UNIX Apache module로 돌리고 있습니다. 그럼에도 외부사이트에서 메인 SVN에 접근하지 못하는 상황이 발생하여 개발자 머신에 SVN을 따로 설치해서 운영해야 하는 상황이 벌어질 수도 있을것 같네요.

Windows 환경에서 repository를 만들어 SVN을 사용하다가 UNIX repository로 쉽게 변환(or 옮겨)갈 수 있는지요?

=================================
나비아빠

pynoos의 이미지

navidad wrote:
답변 감사합니다. 찾아보니 제가 원했던 기능은 다 되는것 같습니다.

다른 질문을 하나 더 드립니다.

현재 회사 메인 SVN은 UNIX Apache module로 돌리고 있습니다. 그럼에도 외부사이트에서 메인 SVN에 접근하지 못하는 상황이 발생하여 개발자 머신에 SVN을 따로 설치해서 운영해야 하는 상황이 벌어질 수도 있을것 같네요.

Windows 환경에서 repository를 만들어 SVN을 사용하다가 UNIX repository로 쉽게 변환(or 옮겨)갈 수 있는지요?

외부에서 웹서버접근만 허용하는 80번만 열어달라고 하면되고, apache의 사용자 인증을 사용하여 checkout 하면 됩니다.

navidad의 이미지

답변 감사합니다.

말씀하신대로 관리자에게 요청할 예정입니다. 해줄지는 모르겠지만요.. ^^

그것과는 별개로 UNIX, Windows간 repository 변환(or 옮기는 작업)이 가능한지는 여전히 궁금합니다. 가능하다면 이런점은 주의해서 옮겨라 등.. 주의할 점이 있는지요.

=================================
나비아빠

익명 사용자의 이미지

저도 svn을 쓰고 싶은데요... svn을 쓰는 오픈 소스 프로젝트를 보니까.
리버젼이 100000 이렇게 뛰더군요.-_-;;
32비트 머신에서 정수형의 크기는 어느 정도가 되나요?-_-

프로젝트가 버전업 되면 카피해서 따로 리버젼을 시작해야 하는지..

project-1.0/trunk/ 뭐..이렇게요.-_-;;

pynoos의 이미지

navidad wrote:
답변 감사합니다.

말씀하신대로 관리자에게 요청할 예정입니다. 해줄지는 모르겠지만요.. ^^

그것과는 별개로 UNIX, Windows간 repository 변환(or 옮기는 작업)이 가능한지는 여전히 궁금합니다. 가능하다면 이런점은 주의해서 옮겨라 등.. 주의할 점이 있는지요.

svnadmin dump
svnadmin load

로 가능합니다. (저도 사용은 안해봤습니다 ^^)

Quote:
저도 svn을 쓰고 싶은데요... svn을 쓰는 오픈 소스 프로젝트를 보니까.
리버젼이 100000 이렇게 뛰더군요.-_-;;
32비트 머신에서 정수형의 크기는 어느 정도가 되나요?-_-

프로젝트가 버전업 되면 카피해서 따로 리버젼을 시작해야 하는지..

project-1.0/trunk/ 뭐..이렇게요.-_-;;

별로 걱정하실일이 없을 것 같은데요.. 한 개의 프로젝트로는 그렇게 커지지 않을 것이고 크면 저장소를 분리하면 됩니다. 걱정이 더 크신것 같네요 :)

댓글 달기

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