SVN to GitHub mirror using SubGit

At the moment SubGit requires file-level access to Git repository which is not feasible with repositories hosted on GitHub. However, due to distributed nature of Git, one can establish reliable two-way mirror between SVN and SubGit-managed Git repository and then synchronize that Git repository with GitHub.

  1. Configure GitHub

    Create new GitHub project

  2. Configure local server (the machine where Git repository will reside)

  3. Configure local repository

    Specify an username and password to be used by SubGit in subgit/passwd file. By default, there's the 'subgit secret' credential pair in the file; replace it by 'user password' pair to be used to access SVN server by SubGit.

  4. Perform SubGit installation into local Git repository:

  5. Sync local Git repository with GitHub

see command example --> (to be placed in drop-down block):

$ git remote add github https://github.com/user/project
            
    - enable caching your GitHub password in Git:
    
        - in Linux:
        
               $ git config --global credential.helper cache
                
        - in MacOS X:
        
               $ git config --global credential.helper osxkeychain    
            
    - push local repository content into GitHub repository
    
            $ git push github --all --follow-tags
            
    you'll be asked for GutHub credentials; once provided they will be cached for future push requests.

see command example --> (to be placed in drop-down block):

$ git push github --all --follow-tags
            
            Username for 'https://github.com': user
            Password for 'https://user@github.com': 
            Counting objects: 212, done.
            Delta compression using up to 2 threads.
            Compressing objects: 100% (193/193), done.
            Writing objects: 100% (212/212), 19.24 KiB | 0 bytes/s, done.
            Total 212 (delta 109), reused 0 (delta 0)
            remote: Resolving deltas: 100% (109/109), done.
            To https://github.com/user/project.git
             * [new branch]      Lib_test -> Lib_test
             * [new branch]      ano_branch -> ano_branch
             * [new branch]      another_full -> another_full
             * [new branch]      br_rev31 -> br_rev31
             * [new branch]      br_rev33 -> br_rev33
             * [new branch]      br_rev35 -> br_rev35
             * [new branch]      br_rev37 -> br_rev37
             * [new branch]      branch_rev27 -> branch_rev27
             * [new branch]      branch_rev27_1 -> branch_rev27_1
             * [new branch]      bugs/b_4517 -> bugs/b_4517
             * [new branch]      bugs/rev39_b1 -> bugs/rev39_b1
             * [new branch]      bugs/rev39_b2 -> bugs/rev39_b2
             * [new branch]      feat_4489 -> feat_4489
             * [new branch]      features/feat_4510 -> features/feat_4510
             * [new branch]      features/feat_5612 -> features/feat_5612
             * [new branch]      features/feat_5614 -> features/feat_5614
             * [new branch]      features/rev39_f1 -> features/rev39_f1
             * [new branch]      features/rev39_f2 -> features/rev39_f2
             * [new branch]      full_branch -> full_branch
             * [new branch]      john_br -> john_br
             * [new branch]      master -> master
             * [new branch]      new_branch -> new_branch
             * [new branch]      snapshots/rev39_s1 -> snapshots/rev39_s1
             
    - create post-receive hook script and make it executable:
    
            $ echo 'git push --all --follow-tags github' > GIT_REPO/hooks/user-post-receive
            $ chmod ug+x GIT_REPO/hooks/user-post-receive

In order to maintain reliable two-way mirror using setup described above, Git users have to push their changes to SubGit-managed Git repository rather than submitting changes to GitHub repository directly. If nevertheless you need to fetch changes from GitHub - follow the instruction in GitHub mirror full guide.

  1. Try and buy

Note: trial period for SubGit mirror is 30 days, after that period you should buy a license key at https://subgit.com/pricing.

Once you receive an email with a license key, upload this license key to your server and run the following command:

$ sudo subgit register --key subgit.key GIT_REPO

see command example --> (to be placed in drop-down block):

$ sudo subgit register --key subgit.key /home/user/repo.git

        SubGit version 3.2.4 ('Bobique') build #3670

        Registration information:

            Registered for:       Example company
            Purchase ID:          OS-111111111111111
            Expiration date:      April 23, 2028

            You may use this key to register 9 more repositories (out of 10).

        REGISTRATION SUCCESSFUL

        Thank you for registering SubGit!
        Visit http://www.subgit.com/ in case you have any questions and for more information on SubGit.

Would you have any assistance, don't hesitate to contact us at support@subgit.com