svn merge에 관한 몇가지 궁금증

grieda의 이미지

안녕하세요, SVN을 사용하면서 명확하지 않은 부분이 있어서 몇가지 문의를 드리고자 합니다.

1. Merge 할 때 그대로 overwrite하는 방법은 없나요?
Branch 를 하고 시간이 지나면 trunk와 branch 의 sync가 많이 차이가 나서 그런지 여러가지 conflict가 나는 경우가 있습니다.
Merge를 하면서 conflict나 sync가 안 맞을 경우에는 수정을 할것인지 overwrite (Their files)를 물어보는데 trunk에 있는 내용을 그대로 overwrite하는 경우가 대부분이어서 거의 tf를 선택하는 경우가 대부분 입니다.
혹시 merge를 할 때 묻지않고 trunk의 파일로 그대로 overwrite할수 있는 방법은 없는지요?

2. Branch 를 한후 Merge가 필요한지?
저 같은 경우는 branch 를 하고 난 후 local 에 Branch 소스를 모두 받은 후 trunk 의 내용을 Branch 로 Merging을 합니다.
저도 왜 그러는지는 정확히 알지 못하는데, 듣기로는 branch한 후에 merging을 수행하는 이유는 나중에 다시 trunk로 merging을 하기 위해 기준(?)을 남기기 때문이라고 들었습니다.

이 부분이 잘 이해가 안되는데 Branch가 Trunk를 copy 한 것인데 왜 다시 굳이 Local에서Merging을 하고 난 후 다시 그 내용을 commit해야 하는지요?

3. svn resolve conflict file name --accept woking
Merging을 할 때 Tree Conflict 가 나는 경우가 있습니다. 대부분 파일이 삭제 되거나 local 에서 추가가 된경우인데, 사실 이 부분이 잘 이해가 되지 않습니다.
Branch 를 하면 trunk의 내용을 그대로 말 그래도 복사하는 것이고 trunk에 있는 최신 변경사항을 그대로 반영하는것인데 왜 tree conflict가 나는지가 잘 이해가 되지 않더라구요. 여기저기 찾아보니 문제가 일어나는 파일을

svn resolve conflict file name --accept woking

로 하면 문제가 해결되던데, 위의 명령이 어떤 뜻인지 잘 이해가 되지 않네요.
제가 이해하기로는 conflict를 현재 파일구조 그대로 적용한다라는 것으로 해석(?)되는대요 맞는지요? 그렇다면 새로 추가되거나 삭제되었다고 나오는 파일은 어떻게 되는 것인지요

4. conflict 는 파일에 일일이 resolve시켜주어야만 하는지?

가끔 conflict가 한두개가 아니라 수십개가 나는 경우가 있습니다.
이럴 경우에 일일이 파일을 Resolve시켜주시고 하고 너무 많다 싶으면 그냥 포기하고 파일을 수작업으로 copy/paste하는 경우가 많습니다.
찾아보니 resolve를 한꺼번에 처리하는 방법은 없다고 하는데 정말 방법이 없는건가요?
제가 Merge하는 경우는 대부분 trunk의 내용을 그대로 Branch 에 적용하는 경우가 대부분이기 때문에 한꺼번에 resolve해도 지장이 없습니다.

너무 한꺼번에 많은 질문을 드렸네요..

도움 부탁드립니다.

감사합니다.

세이군의 이미지

Branch는 Trunk의 특정 시점의 내용을 분리하는 것으로 Branch가 생성된 이후에 Trunk에 생긴 변경사항은 Branch에 반영되지 않습니다.
Branch를 만드는 이유는 두가지로 볼 수 있습니다.
1. 특정 서비스만을 위한 기능이 추가되는 경우, 범용 서비스로 개발을 진행하였는데 특정 클라이언트만의 요구사항을 반영해야만 하는 경우
2. 실험적 기능을 추가하는 경우

어느정도 개발이 진행되면 Branch에 있는 기능을 Trunk에 반영해야 하는 일이 생깁니다.
예를 들면 실험적인 기능을 위해 Branch를 만들었는데 이 기능의 호응도가 매우 높아서 정규 기능으로 포함시키려고 하는 경우입니다.
이때는 Branch에 있는 내용을 Trunk로 merge를 해야 합니다.
이 과정에서 Trunk에 있는 파일과 Branch에 있는 파일간에 충돌이 발생하는 것입니다. 같은 위치에 전혀 다른 코드가 들어가면 이런 일이 종종 생깁니다.

주의점 : merge를 실행하기 전에 Trunk와 Branch 모두 최신 상태가 맞는지 확인하시고 실행하시기 바랍니다. 어느 한쪽이라도 최신 상태가 아니라면 100% conflict 가 발생합니다.

댓글 달기

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