겁내면서 해봤는데 막상 해보니 별거 없...네?


일단 꼬부기로 시도.

귀찮(?)으니 위에 기본값으로 도전

현재는 머지 되어야 할 head에서 merge를 누름 (branch에서 수정한 내용을 head로 병합)


일단 from 이니까.. branch의 경로를 입력해주고 log를 보고 합칠 범위를 고르면 된다.

한번 밖에 수정안해서.. 그냥 마지막 녀석 하나만 병합


귀찮으니 기본값...


겁나니까 Test merge도 해보고


문제 없으니 Merge를 과감하게 클릭!


그러고 나서 확인해보니..

working copy가 바뀌었네?


merge를 commit 하기 전인데


commit 하니 그냥 하나 추가..

닫히는(?) 선으로 연결될줄 알았더니 시무룩..


음.. 잘못한건 아니겠지? ㅠㅠ

auto merge라는 개념으로는 머.. 서버에 바로 적용되거나 하는건 아닐려나..

'프로그램 사용 > Version Control' 카테고리의 다른 글

svn 콘솔 에디터(주석)  (0) 2016.06.21
svn relocate / ubuntu  (0) 2016.06.21
tortoiseSVN merge 페이지 번역  (0) 2015.12.02
svnadmin dump로 덤프/합치기  (0) 2015.11.26
svn merge  (0) 2015.08.19
Posted by 구차니

머징


분리된 개발라인을 유지하는데 사용되는 브랜치에서, 당신은 몇몇 단계에서 브랜치에서 일어난 것을 트렁크 안으로 혹은 반대로 머지를 원할 것이다 

당신이 이것을 사용하기 시작하기 전에 매우 복잡하게 되더라도 서브버전에서 브랜칭과 머징이 어떻게 작동하는지 이해하는 것은 중요하다. 어떻게 사용되는지에 대한 다양한 예제와 전체 설명이 있는 서브버전 책의 "브랜칭과 머징" 챕터를 읽는 것을 매우 강력히 권장한다.


다음 알아야할 내용은 머징은 워킹카피안에서 이뤄진다는 것이다. 브랜치 안으로 변경점을 머지 하고 싶다면, 브랜치를 위한 워킹 카피를 체크아웃 해야 하고, 워킹카피에서 TortoiseSVN -> Merge의 머지 위자드를 실행한다.


일반적으로 수정되지 않은 워킹카피로의 머지를 수행하는 것은 좋은 생각이다. 당신의 워킹카피에 다른 변경점이 있다면 그것들을 먼저 커밋해라. 머지가 당신이 예상한대로 작동하지 않는다거나 변경점을 되돌리고 싶어 한다면, Revert 명령을 통해 머지 이전을 포함한 모든 변경점을 파기하게 될 것이다.


아래에 기술 하듯, 근소하게 다른 방향으로 다뤄지는 머지의 3개의 일반적인 사용예가 있다.  머지 위자드의 첫 페이지에서는 당신이 사용할 방법을 고르도록 물어 볼 것이다.


리비전 범위 머지

  이 방법은 당신이 하나나 혹은 그 이상의 리비전들을 하나의 브랜치로 (혹은 트렁크) 만들고

  다른 브랜치들을 가로질러 변경점을 복사(port)하길 원할 때 사용된다.


  서브버전에게 이것을 어떻게 행하는지 물어 보면: " 브랜치 A의 리비전 1 [부터] 브랜치 A의 리비전 7 [까지] 얻어야 할 변경점을 계산하고, 이 변경점 들을 나의 워킹카피(브랜치 B나 트렁크)로 적용한다.


  리비전 범위를 비워둔다면, 서브버전은 올바른 리비전 범위르르 계산하기 위해 머지-추적 기능을 이용한다. 이것은 자동머지나 reintegrate 로 알려져 있다.


두개의 다른 트리를 머지

  이것은 reintegrate 방법보다 더욱 일반적인 경우입니다.서브버전에게 이것을 어떻게 행하는지 물어 보면: " 트렁크의 head 리비전 [부터] 브랜치의 head 리비전 [까지] 얻어야 할 변경점을 계산하고, 이 변경점 들을 나의 (트렁크의)워킹카피에 적용한다. 최종 결과로 트렁크는 브랜치와 완전 동일하게 보이게 된다.


  만약 당신의 서버/저장소가 머지-추적을 지원하지 않는다면 브랜치를 트렁크로 머지하는 유일한 방법이다. 다른 사용예는 벤더 브랜치를 사용할때 발생하고, 당신은 새로운 벤더를 뒤 따르는 트렁크 코드의 변경점을 머지해야 한다. 더 자세한 정보는 서브 버전 책의 "벤더 브랜치" 챕터를 읽기 바란다.

  


---

요거 아래로는 세부 내용이니 일단 패스

[링크 : https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html]

'프로그램 사용 > Version Control' 카테고리의 다른 글

svn relocate / ubuntu  (0) 2016.06.21
svn merge... 두근두근  (6) 2016.02.17
svnadmin dump로 덤프/합치기  (0) 2015.11.26
svn merge  (0) 2015.08.19
svn switch - shares no common ancestry with  (0) 2015.06.16
Posted by 구차니

$ svnadmin help dump

dump: usage: svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]


$ svnadmin dump repos/ > repos.dmp

svnadmin: Expected FS format between '1' and '4'; found format '6'


하.. 이 써글 버전..

꺼부기 에서 최신버전 해놨더니 DB 버전이 6이 되어버려서

리눅스에서는 구버전인지라.. 인식이 안되나 보다.. ㅠㅠ


옳은 해결방법은 아니지만 강제로 db 버전을 4라고 속여서 궈궈 ㅠㅠ

[링크 : http://stackoverflow.com/.../subversion-svn-e160043-expected-fs-format-between-1-and-4]


$ vi repos/db/format

6

layout sharded 1000


$ sudo vi repos/db/format

4

layout sharded 1000


$ svnadmin dump /home/minimonk/repos > repos.dmp

* Dumped revision 0.

...

* Dumped revision 135.


$ file repos.dmp
repos.dmp: Subversion dumpfile (version: 2)

$ svnadmin help load
load: usage: svnadmin load REPOS_PATH

Read a 'dumpfile'-formatted stream from stdin, committing
new revisions into the repository's filesystem.  If the repository
was previously empty, its UUID will, by default, be changed to the
one specified in the stream.  Progress feedback is sent to stdout.

Valid options:
  -q [--quiet]             : no progress (only errors) to stderr
  --ignore-uuid            : ignore any repos UUID found in the stream
  --force-uuid             : set repos UUID to that found in stream, if any
  --use-pre-commit-hook    : call pre-commit hook before committing revisions
  --use-post-commit-hook   : call post-commit hook after committing revisions
  --parent-dir ARG         : load at specified directory in repository

으아아아 해보지 않으니 안되는걸 알리가.. ㅠㅠ
< 로 stdin에서 파일을 받아야 하는데 왜 그걸 안알랴준거야!!!

$ sudo svnadmin load repos1 --parent-dir temp < repos.dmp
<<< Started new transaction, based on original revision 1
     * adding path : temp/rev133-150114 ... done.
     * adding path : temp/rev133-150114/App ... done.

...

------- Committed new rev 1213 (loaded from original rev 135) >>>

완료!!
svn repo browser로 보니 원하는 경로였던
svn 저장소 상의 /temp에 잘 들어가있고 리비전 히스토리까지 다 들어가 있다!! 우오오오

그런데.. 새로 받아야지 UUID가 달라서 switch도 relocate도 안된다 ㅠㅠ



[링크 : http://unix.stackexchange.com/questions/6676/svn-switch-relocate-wrong-uuid]


2015/06/06 - [프로그램 사용/CVS / SVN / GIT / Mercurial] - svn 저장소 합치기

2011/01/08 - [프로그램 사용/CVS / SVN / GIT / Mercurial] - SVN 저장소 합치기 - merging SVN repositories


'프로그램 사용 > Version Control' 카테고리의 다른 글

svn merge... 두근두근  (6) 2016.02.17
tortoiseSVN merge 페이지 번역  (0) 2015.12.02
svn merge  (0) 2015.08.19
svn switch - shares no common ancestry with  (0) 2015.06.16
svn 저장소 합치기  (0) 2015.06.06
Posted by 구차니

dry run 이라는 옵션도 있네.

merge는 안하고 항상 혼자 쓰다 보니..

그냥 trunk 날리고 branch를 다시 trunk로 복사하거나(이력으로 인해)

trunk와 branch를 수동 머지 했는데 조금 편한법을 찾아 봐야겠다 ㅠㅠ


[링크 : http://asbear.tistory.com/72]

    [링크 : http://asbear.tistory.com/50]

[링크 : http://egloos.zum.com/codenongsa/v/258234]

[링크 : http://jee1.tistory.com/888]

[링크 : http://greenbay.usc.edu/csci577/tools/Subversion/Subversion_User_Manual.pdf]



+

2015.12.02

[링크 : http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.merge.html]

[링크 : https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html]

[링크 : http://hoiogi.tistory.com/20]

Posted by 구차니

서버내에서 프로젝트 파일들 버전별로 엉성하게 관리하던거 정리하면서

로컬 저장소의 경로를 바꾼다고 switch 하는데 "shares no common ancestry with" 에러 발생 -_-

찾아봐도 무슨 소리인지 모르겠고..



걍 아래 ignore ancestry 하면 저장소 이동 완료

먼가 찜찜해...


[링크 : http://svnbook.red-bean.com/en/1.7/svn.branchmerge.switchwc.html]


+

고민을 해보니.. 리비전 이력상 구버전을 신버전 위치로 바꾸려고 하지만

신버전 위치에 구버전 리비전 이력이 없다면... 그럴거 같기도 하고.. 조금은 더 파악해 봐야겠다



음.. switch는 relocate와 달리.. 머랄까.. branch간 update + merge 기능이라고 해야하려나?

결론은.. 내가 한 행위에 대해서는(서버측 경로 변경) relocate로 해결해주는게 옳다


The svn switch command transforms an existing working copy to reflect a different branch.

Because svn switch is essentially a variant of svn update, it shares the same behaviors; any local modifications in your working copy are preserved when new data arrives from the repository.

[34] You can, however, use svn relocate if the URL of your server changes and you don't want to abandon an existing working copy. See svn relocate in Chapter 9, Subversion Complete Reference for more information and an example.

'프로그램 사용 > Version Control' 카테고리의 다른 글

svnadmin dump로 덤프/합치기  (0) 2015.11.26
svn merge  (0) 2015.08.19
svn 저장소 합치기  (0) 2015.06.06
svn diff syntax highlight 적용해서 보기  (0) 2015.01.30
svn add *.so ignored / --no-ignore  (0) 2015.01.06
Posted by 구차니

개인적으로 만들어서 사용하던 로컬 저장소를 메인 소스에

소스가 아닌 히스토리까지 합치려고 하면

다음과 같이 하면 된다고 하는데..

딱히 합쳐볼 만한 프로젝트가 없어서 해보긴 겁나고.. ㄷㄷ


$ svnadmin dump > project<n>.dmp

$ svn mkdir "<repo url>/project<n>"

$ svnadmin load --parent-dir "project<n>" <filesystem path to repos>


[링크 : http://stackoverflow.com/questions/267256/combining-multiple-svn-repositories-into-one]

[링크 : https://blog.tinned-software.net/merge-two-svn-repositories/]

[링크 : http://geekswithblogs.net/kariemali/archive/2009/06/02/how-to-merge-two-svn-repositories.aspx]


2011/01/08 - [프로그램 사용/CVS / SVN / GIT / Mercurial] - SVN 저장소 합치기 - merging SVN repositories

2011/05/09 - [프로그램 사용/CVS / SVN / GIT / Mercurial] - svnadmin dump / load를 이용한 저장소 합치기



Posted by 구차니

콘솔에서 보려니 까매서.. 눈에 안보이는 까막눈...



$ svn diff | view -

빔: 표준입력에서 읽는 중...


$ whereis view

view: /usr/bin/view /usr/share/man/man1/view.1.gz

$ ll /usr/bin/view

lrwxrwxrwx 1 root root 22 2014-08-25 16:42 /usr/bin/view -> /etc/alternatives/view*

$ ll /etc/alternatives/view

lrwxrwxrwx 1 root root 18 2014-08-25 16:42 /etc/alternatives/view -> /usr/bin/vim.gnome*


[링크 : http://www.commandlinefu.com/commands/view/2420/colored-svn-diff]

Posted by 구차니

svn add나 import 시에

/etc/subversion/config

~/.subversion/config와 상관없이 ignore 되는 확장자가 발생을 하는데

일단 이런 현상을 겪기 싫다면.. --no-ignore를 기본적으로 사용하는게 좋을듯 하다.



$ svn help import

import: 버전관리 대상이 아닌 파일과 디렉토리를 추가합니다.

사용법: import [PATH] URL


  PATH의 하위 디렉토리를 재귀적으로 URL에 추가합니다.

  PATH가 생략되면 '.' 이 사용됩니다. 필요한 경우,

  저장소 상에 상위 디렉토리가 자동으로 생성됩니다.

  PATH가 디렉토리이면, 그 내용은 URL에 모두 추가 됩니다.

  --force가 지정되면 버전관리 할 수 없는 장치 파일이나

  파이프등은 무시됩니다


옵션:

  -q [--quiet]             : 아무것도 출력하지 않거나, 요약 정보만 출력합니다

  -N [--non-recursive]     : obsolete; try --depth=files or --depth=immediates

  --depth ARG              : 적용할 단계를 제한합니다. 가능한 인자 ('empty', 'files',

                            'immediates', or 'infinity')

  --auto-props             : 자동 속성기능을 활성화합니다

  --force                  : 강제로 실행합니다

  --no-auto-props          : 자동 속성기능을 비활성화합니다

  -m [--message] ARG       : 커밋 로그 메시지를 지정합니다

  -F [--file] ARG          : arg에서 로그 메시지를 읽습니다

  --force-log              : 로그 메시지의 유효성을 확인하지 않습니다

  --editor-cmd ARG         : arg를 외부 편집기로 사용합니다

  --encoding ARG           : 값을 arg에 해당하는 문자코드로 취급합니다

  --with-revprop ARG       : set revision property ARG in new revision

                             using the name[=value] format

  --no-ignore              : svn:ignore로 지정한 것과 디폴트로 무시하는 파일들을 무시하지 않습니다


글로벌 옵션:

  --username ARG           : arg를 접속에 필요한 사용자 ID로 사용합니다

  --password ARG           : arg를 접속에 필요한 패스워드로 사용합니다

  --no-auth-cache          : 인증 정보를 캐시에 저장하지 않습니다

  --non-interactive        : 대화식 사용자 입력을 기다리지 않습니다

  --trust-server-cert      : accept unknown SSL server certificates without

                             prompting (but only with '--non-interactive')

  --config-dir ARG         : arg로 지정된 디렉토리에서 사용자 구성화일을 읽습니다

  --config-option ARG      : set user configuration option in the format:

                                 FILE:SECTION:OPTION=[VALUE]

                             For example:

                                 servers:global:http-library=serf 


$ svn help add

add: 파일과 디렉토리를 버전관리 대상에 넣습니다. 저장소에

추가하도록 스케쥴링 되며, 다음 커밋할 때, 추가됩니다.

사용법: add PATH...


옵션:

  --targets ARG            : ARG로 주어진 파일 내용을 옵션으로 추가합니다

  -N [--non-recursive]     : obsolete; try --depth=files or --depth=immediates

  --depth ARG              : 적용할 단계를 제한합니다. 가능한 인자 ('empty', 'files',

                            'immediates', or 'infinity')

  -q [--quiet]             : 아무것도 출력하지 않거나, 요약 정보만 출력합니다

  --force                  : 강제로 실행합니다

  --no-ignore              : svn:ignore로 지정한 것과 디폴트로 무시하는 파일들을 무시하지 않습니다

  --auto-props             : 자동 속성기능을 활성화합니다

  --no-auto-props          : 자동 속성기능을 비활성화합니다

  --parents                : 임시 상위개체 삽입


글로벌 옵션:

  --username ARG           : arg를 접속에 필요한 사용자 ID로 사용합니다

  --password ARG           : arg를 접속에 필요한 패스워드로 사용합니다

  --no-auth-cache          : 인증 정보를 캐시에 저장하지 않습니다

  --non-interactive        : 대화식 사용자 입력을 기다리지 않습니다

  --trust-server-cert      : accept unknown SSL server certificates without

                             prompting (but only with '--non-interactive')

  --config-dir ARG         : arg로 지정된 디렉토리에서 사용자 구성화일을 읽습니다

  --config-option ARG      : set user configuration option in the format:

                                 FILE:SECTION:OPTION=[VALUE]

                             For example:

                                 servers:global:http-library=serf


$ vi /etc/subversion/config

 96 ### Section for configuring miscelleneous Subversion options.

 97 [miscellany]

 98 ### Set global-ignores to a set of whitespace-delimited globs

 99 ### which Subversion will ignore in its 'status' output, and

100 ### while importing or adding files and directories.

101 ### '*' matches leading dots, e.g. '*.rej' matches '.foo.rej'.

102 # global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo

103 #   *.rej *~ #*# .#* .*.swp .DS_Store 


Warning: There is an error in the book: 

The default value of global-ignores was changed in svn 1.5 and 

now includes *.so *.so.[0-9]* files, 

but the one displayed in the book was not updated. 


[링크 : http://svn.haxx.se/users/archive-2009-05/0899.shtml]


[링크 : http://stackoverflow.com/.../svn-propget-svnignore-returns-nothing-but-svn-is-obviously-ignoring-my-files]

[링크 : http://svn.haxx.se/users/archive-2009-02/0821.shtml]

Posted by 구차니

externals에서 내 프로젝트에서 원하는 경로에

외부 저장소를 불러오거나

특정 리비전을 불러와야 할 경우에 대해서 사용하는 추가적인 기능이다


개인 리파지터리 만들어서 해봐야지..


---

2014.12.30 added


Step 1. 원하는 폴더에서 우클릭으로 TortoiseSVN - Properties

Step 2. Properties 창에서 New - Externals


Step 3. svn:externals - New


Step 4. Local path는 절대 경로가 아닌 우클릭한 경로 기준의 상대경로로

           프로젝트를 저장할 폴더명 만 적어 주면된다 -_ㅠ

           URL은 외부 프로젝트의 경로를 적어준다.

           아래의 Revision은 일단.. 항상 최신 버전을 받아와야 한다면 HEAD를 특정 리비전을 위해서는 Revision으로


Step 5. 별다른거 없이.. Added가 나오는데 프로젝트로 전부 추가되는거 봐서는...

           큰 프로젝트를 svn:externals로 추가할경우 상당한 시간이 걸릴 것으로 예상된다.


Step 6. svn:externals에 추가후에 commit을 하던 update 후에 commit을 하던

           뜨는건 modified(property change only) 라고 뜬다. 즉, 내 저장소의 용량에는 영향이 없다는 것?


Step 7. repo. browser로 보면 이렇게 바로가기로 출력된다.


---


[링크 : http://baboc.tistory.com/97]

[링크 : http://itbaby.egloos.com/4295117]

[링크 : http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html]

Posted by 구차니
해당 파일을 남겨야 한다면
1. 파일 이름 변경
2. svn del 파일이름
3. 파일 이름 복구

해당 파일을 남길 필요가 없다면
1. svn del 파일이름

[링크 : https://kldp.org/node/52211]


+ 혹시나 해서 테스트 한 내용 백업파일을 만들어 두길 잘했지 ㅋㅋ
아무튼 svn del을 하면 해당 파일을 삭제하게 되니 주의요망!
$ svn st
?       libliveMedia.a.bak
A       libliveMedia.a

$ ll libliveMedia.a* 
-rw-r--r--  1 minimonk minimonk 1489620 2014-11-17 09:13 libliveMedia.a
-rw-r--r--  1 minimonk minimonk 1489620 2014-11-17 09:14 libliveMedia.a.bak

$ svn del --force libliveMedia.a
D         libliveMedia.a

$ ll libliveMedia.a*
-rw-r--r-- 1 minimonk minimonk 1489620 2014-11-17 09:14 libliveMedia.a.bak

$ svn st
?       libliveMedia.a.bak 

 
Posted by 구차니