[Git] Svn To Git 마이그레이션 샘플소스

    728x90
    반응형

    authors-file

    Git사용자와 SVN사용자 매핑

    git svn 명령어에서 사용되며, SVN 커밋의 작성자 정보를 Git 형식으로 변환할 때 사용자 매핑을 정의하는 파일을 지정한다.

     

    매핑파일생성

    #authors-file 생성
    [root@]$ vi authors-file.txt
    #SVN사용자와 Git 사용자정보 매핑
    
    user1 = user1 <user1@email.com>
    user2 = user2 <user2@email.com>
    ...

    SVN Checkout

    git svn 명령어

    Git과 SVN 간의 상호작용을 지원한다.

    SVN을 Git으로 clone 또는 Git에서 SVN으로 Push할 수 있다.

     

    git svn 명령어 샘플

    #SVN Repo를 Git Repo로 Clone
    [root@]$ git svn clone {SVN Repo IP:PORT/svnRepo} --authors-file={authros-file.txt} --no-metadata
    
    옵션
    --no-metadata: SVN 메타데이터를 생략한다.(Revision Id 등)
    --authors-file=<파일>: SVN사용자와 Git사용자 정보를 매핑하는 파일을 지정한다.
    -T<브랜치>, -b<브랜치>, -t<태그>: 특정 branch나 tag를 지정하여 클론한다.
    Initialized empty Git repository in C:/Users/Desktop/git/sample-project/.git/
    W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: File not found: revision 100, path '/trunk/sample-project'
    W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
    This may take a while on large repositories
    r1545 = a856ab55570de15f3fd9ae2ae2bcdec2591bdb1e (refs/remotes/git-svn)
            A       src/main/java/test/sample/online/service/...
            A       gradle.properties
            A       build.gradle
            A       settings.gradle
            A       .classpath
            A       .project
            A       .gitignore
    W: +empty_dir: bin
    W: +empty_dir: src/main/resources
    W: +empty_dir: src/test/java
    W: +empty_dir: src/test/resources
    r1546 = 2efa313c3d54390ac67f58608799ff5cba652dcc (refs/remotes/git-svn)
    Checked out HEAD:
      svn://svnUrl/trunk/sample-project r2702
    creating empty directory: bin
    creating empty directory: src/main/resources
    creating empty directory: src/test/java
    creating empty directory: src/test/resources

    Branch Checkout

    Commit을 원하는 Branch로 변경

    Remote를 추가한 후, 그대로 사용하게 되면 master로만 Commit이 작동한다.

     

    git checkout 명령어 샘플

    #remote를 추가한 후, Checkout
    [root@]$ cd {svnRepo}
    [root@]$ git remote add origin {git remote ip:port/gitRepo.git}
    [root@]$ git checkout -b {gitBranch}

    Commit

    Git Push

    Commit을 실행해 Commit History 및 계정정보가 맞게 마이그레이션 되었는지 확인한다.

     

    Git commit 명령어 샘플

    #Commit&Push
    [root@]$ git push -u origin {gitBranch}
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    remote:
    remote: To create a merge request for dev1, visit:
    remote:   {GitUrl}/root/svn-to-git/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev1
    remote:
    To {GitUrl}/root/svn-to-git.git
     * [new branch]      dev1 -> dev1
    branch 'dev1' set up to track 'origin/dev1'.


     

    728x90
    반응형

    댓글