SVN 에서 Trunk 추가 문의

익명 사용자의 이미지

안녕하세요

Visual Studio 에서 ankhsvn 으로 Trunk (Platform 1이라고 하겠습니다.)및 Branch 만들어서 사용중입니다.
Trunk (Platform 1)에서 사용중이던 소스를 새로운 Trunk (Platform 2라고 하겠습니다)를 만들려고 하는데
어떻게 하면 될까요??
Platform 1처럼 동일하게 SVN trunk 로 다시 만들면 될까요??

작성자의 이미지

현재 작업중인 프로젝트를 trunk 로 만들려면 저장소를 다시 새로 만들면 되나요??

ktd2004의 이미지

monorepo vs polyrepo를 한번 검색해 보시면 도움이 될 것 같습니다.

polyrepo
 - repo1/trunk   (Platform1)
        /branches
        /tags
 - repo2/trunk   (Platform2)
        /branches
        /tags
monorepo
 - repo/Platform1/trunk
                 /branches
                 /tags
       /Platform2/trunk
                 /branches
                 /tags

polyrepo는 각 프로젝트별로 완전히 저장소(소스)가 분리되는 형태이고.
monorepo는 하나의 저장소에 각각의 프로젝트가 존재하고 프로텍트별로 trunk,branches,tags가 존재하는 형태입니다.

apache(subversion)의 저장소가 monorepo 형식이죠.
* https://svn.apache.org/repos/asf/
* https://svn.apache.org/repos/asf/subversion/

만약 프로젝트의 연관성이 크다면 monorepo 방식이 맞을 것 같습니다.
프로젝트별로 merge할 일이 많이 생길테니까요...

작성자의 이미지

프로젝트의 연관성을 생각해봐야겠네요.
polyrepo repo1 main (trunk?)에서 작업하던 것을 repo2로 만들거나 옮길 수도 있나요?
아니면 monorepo 처럼 platform1 을 platform2 로 복사하거나 생성할 수 있는지도 알아봐야겠네요.
감사합니다

ktd2004의 이미지

ms windows 환경에서 svn을 사용하신다면 tortoisesvn을 추천해 드립니다.

tortoisesvn내에서 windows 탐색기처럼 생성/삭제/이동/이름변경 같은걸 맘껏 하실 수 있습니다.

작성자의 이미지

제가 사용하고 있는 구조가 monorepo 맞나요? (사진 01, 02)
Platform1 (예시)이라는 저장소 안에 Trunk(.sln), branches 가 있고 branches 안에 B,C,D..etc 여러 프로젝트 폴더가 있습니다.
여기서 Platform1 의 trunk? branches? 있는 소스를 분리해서 Platform2 개념으로 새로 생성하려고 합니다.
말씀해주신 그림의 monorepo 에서 platform2로 하면 좋을 지 poly(multi)repo 의 repo2 저장소를 새로 생성할 지 study를 해봐야겠습니다.

댓글 첨부 파일: 
ktd2004의 이미지

제가 visualsvn은 다루어 보지 못해서 정확한 답변이 될지는 모르겠습니다.

일단 이미지 상으로 보면 polyrepo 형식인것 같습니다.

monorepo 형태가 되려면 다음과 같은 형식이 되어야 합니다.

repositories/myrepo/project1/trunk
                            /branches
                            /tags
                   /project2/trunk
                            /branches
                            /tags

polyrepo의 장점과 단점은

장점
* 각 project(repo)별로 각자의 revision number를 가진다.
* 각 project(repo)별로 삭제/추가/백업할 수 있다.
단점
* 각 project(repo)별 변경사항들을 다른 project(repo)에 merge하기가 까다롭니다.

monorepo의 장점과 단점은

단점
* 하나의 repo만 백업/복구하면 모든 project를 백업/복구할 수 있다.
* 하나의 project의 변경사항들을 다른 project에 merge하기 쉽니다.
단점
* 각 project의 revision 번호가 일괄적이지 않다.

작성자의 이미지

그림에서 말씀 못 드린 것이 있는데, 일단 저는 최상단에 있는 repositories 중 한 개의 Platform1 (A라고 하겠습니다)만 사용하고 있습니다. A 에서 trunk 와 branches 로 작업중입니다.
나머지 B, C 폴더는 테스트용으로 만든 것입니다..
D repositories 를 새로 만들거나 polyrepo 로 작업 하였을 때, 이미 Platform1 으로 받아서 작업중인 소스를 다른 곳으로 옮길 수가 있는건지요?

ktd2004의 이미지

visualsvn을 사용해 보지 못해서 정확한 답변은 아닐 수 있습니다.

결론적으로는 visualsvn도 어딘가에 Platform1이라는 저장소를 가지고 있습니다.
하드디스크에 디렉토리 형태로요...

이 디렉토리를 복사해서 Platform2를 만들면 똑같은 내용의 Platform1과 Platform2라는 저장소가 생깁니다.

만약 새롭게 시작하고 싶으시다면(Platform1/trunk의 소스로 새로운 저장소를 만든다면)

Platform2 저장소를 만들고, trunk를 checkout 받으신 후에 Platform1의 trunk의 파일및 디렉토리들(.svn은 제외)을 그대로 복사해서 add한 후에 commit하시면 되겠지요...

댓글 달기

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