SVN 에서 Merge 관련 문의드립니다.

-@Naver의 이미지

현재 Visual Studio 확장으로 AnkhSVN 을 사용하여 여러명이 프로젝트를 진행하고 있습니다.

이번에 큰 기능추가 작업이 있어서 branch 기능을 이용하려고 하는데요

동일한 trunk 소스로 branches를 만든후에

trunk에는 A라는 코딩을 하고

branches에는 B라는 코딩을 하였을때

B의 내용을 trunk에 적용하려고 Merge two different trees 옵션으로 머지를 하면

A와 B의 차이점을 C라고 한다면

trunk에 C가 적용이 되는게 아니라 A는 사라지고 B만 적용이 됩니다.

시작과 끝을 바꿔서 해도 한쪽이 사라지는건 마찬가지 입니다.

동일한 부분이라면 충돌이 나고 다른 부분이라면 turnk에서 변경했던 소스가 남아 있어야 하지 않나요?

제가 생각하는 개념과 달라서 문의드립니다!

academic의 이미지

svn의 버전에 따라서 좀 다릅니다만, 먼저 trunk의 변경 사항을 branch에 리비전 구간 병합으로 먼저 적용하고, 그 다음에 branch의 변경사항을 trunk에 재통합해야 합니다.

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

-@Naver의 이미지

아 그럼 trunk 변경사항을 branch 에 병합할때는 리비전 구간 병합하고
branch 변경사항을 trunk 에 병합할때는 두개의 서로다른 트리 병합해야한다는 말씀이신건가요?

academic의 이미지

말씀하신대로 먼저 trunk 변경사항을 branch 에 병합해야 합니다. TortoiseSVN 용어로는 Merge a range of revisions 이죠. AnkhSVN 에서는 어떻게 용어가 되어 있는지 모르겠네요.

그 다음에 branch 변경 사항을 trunk에 병합할 때는 svn 버전에 따라 다른데요, 1.7 이전 버전인가까지는 reintegrate 옵션으로 병합해줘야 합니다. (TortoiseSVN 용어로는 Reintegrating a branch). 그 다음 버전부터는 굳이 reintegrate 옵션을 안 줘도 되는 것으로 알고 있습니다.

두 개의 서로 다른 트리 병합(merge two different trees)은 올바른 방법이 아닙니다. 그건 trunk/branch 관계가 아닌, 서로 별개의 소스 트리를 병합할 때 사용하는 방법입니다.

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

ktd2004의 이미지

질문하신 내용으로는 "Merge two different trees"가 아닌
"Merge a range of revisions" 기능을 사용하시는게 맞을 것 같습니다.
(TortoiseSVN으로 말씀드립니다.)

1. trunk에서 A라는 기능을 작업한다.
2. branches/B 에서 B라는 기능을 작업한다.
3. 이제 B 작업한 것을 A에 merge하려고 한다면.

1. 먼저 branches/B에서 trunk를 merge해서 충돌같은게 발생하는지 확인한다.
2. branches/B에서 trunk를 merge했으면
3. trunk에서 branches/B를 merge한다. -끝-

svn이 예전에는 merge한 revision과 아직 merge하지 않은 revision을 구분해서 merge해야했습니다.
요즘 svn은 내부적으로 svn:mergeinfo 속성을 이용해서 merge한 revison들을 기록해 두고 있으므로.
특별히 merge하고자하는 revision을 지정하지 않고 그냥 merge하면 알아서 merge가 됩니다.

댓글 달기

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