안녕하세요. SVN 몇가지 질문들 입니다.

crusien의 이미지

현재 PowerBuilder9 버젼으로 개발을 하고 있습니다. 버젼 관리 시스템을 구축해 볼려고 여기 저기 알아 보다가 SVN을 선택하고 2003서버에 서

버구축도 해놓았습니다.

클라이언트 툴은 TortoiseSVN으로 선택했구요. 일단 혼자 사용하기에는 전혀 무리가 없지만 현재 개발자가 4명이 개발하고 있으며, 그 중에 두

명은 하나의 오브젝트파일을 같이 다루기 때문에 항상 충돌이 일어 날 수 밖에 없습니다. WinMerge나 diff등 파일 비교는 오브젝트 바이너리라

서 아예 불가능한것 같구요. 그래서 Merge기능을 써볼려고 하는데 만약 클라이언트 저장소인 project/trunk/에 서버로부터 체크아웃받은게 있

고 이것을 project/branches/v1.0에 브랜치를 만들어서 소스 수정한후 병합 옵션에서 시작:project/trunk 종료:project/branches/v1.0

실제저장:project/trunk로 하였을때 소스 내용이 바뀌었음에도 불구하고 병합후에 trunk소스를 확인해 보면 변화가 없군요.

원래 오브젝트 타입은 병합 자체가 안되는건가요? 아니면 제가 잘못이해 하고 있거나 하고 있는건 아닌지 궁금 합니다.

ktd2004의 이미지

첫번째로 오브젝트 파일은 병합되지 않습니다.
* 충돌이 발생하고, 두개의 리비전(이전과 새로운)중 하나를 선택하셔야 합니다.

시작과 종료를 정확하게 이해해야만 할 것 같습니다.

project/trunk 에서 계속 어떤 작업을 하고 있습니다.
어떤 팀원이 새로운 기능을 구현할려고 하는데 작업량이 꽤 많습니다.
그리고 구현이 완료되었을때, 제품에 적용할지의 여부도 불투명합니다.
* 해당 팀원은 project/trunk를 project/branches/new_func 으로 복사해서 project/branches/new_func 에서 작업을 진행합니다.

드디어 new_func 작업이 완료되었습니다. 그리고 제품에 적용하기로 결정이 되었습니다.
그럼 new_func의 처음부터 끝까지(완료된 시점까지)를 trunk에 머지하게 됩니다.
* 즉, 시작과 끝 위치가 project/branches/new_func 이 됩니다.

콘솔 명령어로 보면

$ svn info
저장소 : <a href="http://xx.xx.xx.xx/project/trunk
$" rel="nofollow">http://xx.xx.xx.xx/project/trunk
$</a> svn merge -r 33:77 <a href="http://xx.xx.xx.xx/project/branches/new_func
" rel="nofollow">http://xx.xx.xx.xx/project/branches/new_func
</a>

* 위에서 33은 new_func이 복사된 리비전입니다.
* 위에서 77은 new_func이 완료된 리비전입니다. 즉 new_func 디렉토리에 대한 HEAD 리비전입니다.

도움이 되시길 바랍니다.

yyuka의 이미지

전 질문자도 아니고 svn을 쓰고 있지도 않습니다만, (Perforce쓰고 있습니다.)
제가 고민하던 것에 대한 답입니다.

하지만 바이너리 화일에 대해선 완벽하게 공동작업을 할수 없는거네요.

한명이 해당 바이너리 화일을 락을 걸든지 해서 그 개발자 일이 끝날때까지 기다렸다가 Trunk에 반영하고 나면
그제서야 그 다음 사람이 그걸 Trunk로 부터 받아서 작업을 하는 수밖에는 없는것 같네요.

Branching을 한다고 해도 A와B 개발자 모두 해당 바이너리 화일을 여러번 수정하고 한다면 나중에 충돌이 생기는 건 피할수가 없겠네요.

ktd2004의 이미지

그 중에 두명은 하나의 오브젝트파일을 같이 다루기 때문에 항상 충돌이 일어 날 수 밖에 없습니다.

제가 본문에서 놓친게 있는데, 위의 말이 어떤 뜻인지가 중요한 것 같습니다.

제가 PowerBuild를 사용해본적이 없어서 잘 모르겠는데요..
C나 C++의 경우에 오브젝트 파일이나 실행파일(소스파일이 아닌)은 프로젝트에 넣어서는 안됩니다.

오브젝트 파일이나 실행파일들은 svn:ignore 속성에 추가해주어야 하죠.

만약 위에서 언급하신 충돌이 발생하는 오브젝트 파일이 다음에 언급한 것과 같은 것이라면
버전관리에 넣어서는 안됩니다.
* 소스 코드로부터 빌드시에 만들어지는 파일이나 디렉토리(obj, exe, lib, Debug, Release)
* 소스 코드가 아닌 개발 환경이 변경되면 수정되는 파일들
(VC 기준으로 , *.aps, *.ncb, *.opt, *.plg, *.clw, *.positions, README.TXT)

이런 파일들은 절대로 버전관리에 들어가서는 안됩니다.
오히려 이런 파일들은 svn:ignore 속성에 추가해야합니다.

댓글 달기

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