Skip to content

a svn merge tool that is a bit like simplified git rebase

Notifications You must be signed in to change notification settings

karenc/svn_rebase

Repository files navigation

svn_rebase(1)                                                    svn_rebase(1)



NAME
       svn_rebase - rebase a svn repository

SYNOPSIS
       svn_rebase  [-r REVISIONS|--revisions=REVISIONS] [-d DESTINATION|--des‐
       tination=DESTINATION] [-m|--manual-commit] source_url

       svn_rebase [-c|--continue] [-a|--abort]

DESCRIPTION
       This script does merging using svn merge with multiple revisions.   For
       example:

           svn_rebase -r1000-1005,1008 http://svnserver/path

       will merge revisions 1000-1005 and 1008 from http://svnserver/path into
       the current directory.

       It merges one revision at a time.  If there's a conflict, the user  can
       resolve it manually and continue the merge.

       ---

       Reasons for using this script:

           svnmerge also allows merging multiple commits.  svnmerge will merge
       all the commits into the current tree and let the user commits it.  The
       problem  comes  when  the user merges lots of commits in one go, losing
       version history and making "svn ann" useless.

           This script will commit after merging every commit, and commit with
       the  original message with the original revision number.  So it is pos‐
       sible to use "svn ann" to find out which commit changed what  line  and
       the commit message with it.


OPTIONS
       -h, --help
           Show the help message for this program.

       -a, --abort
           Remove the state of the rebasing process.

       -c, --continue
           Restart  the  rebasing  process  after having resolved a merge con‐
       flict.

       -m, --manual-commit
           After merging a commit, let the user commit manually.

       -r REVISIONS, --revisions=REVISIONS
           Revisions to merge

       -d DESTINATION, --destination=DESTINATION
           Target directory of the merges.



EXAMPLES
       You created a branch from trunk, trunk has since changed.  You want  to
       update your branch with trunk changes.

       1. Remove the branch:
          $ svn rm https://svnserver/branches/branch
          $ svn commit
            ...
          Committed revision 1234

       2. Copy the current trunk into a new branch:
          $          svn          cp          https://svnserver/branches/trunk
       https://svnserver/branches/branch
          $ svn commit
          $ svn co https://svnserver/branches/branch
          $ cd branch

       3. Start rebasing: (Use the branch before we rename it)
          $ svn_rebase https://svnserver/branches/branch@1233

       4. Resolve conflicts if there are any:
          It'll show a message like: Use "svn  commit  -F  commit_message"  to
       commit
          - Manually edit files to resolve conficts
          - $ svn resolve file1
          - $ svn commit -F commit_message

       5. Continue the merge:
          $ svn_rebase --continue


BUGS
       If  you  found  any  bugs  or have any feature requests, please open an
       issue at http://github.com/karenc/svn_rebase/issues.


AUTHOR
       Karen Chan <[email protected]>



                                                                 svn_rebase(1)


------------------------------------------------------------


svn_merge(1)                                                      svn_merge(1)



NAME
       svn_merge  -  merge  changesets  from one svn repository to the working
       directory

SYNOPSIS
       svn_merge [-r REVISIONS|--revisions=REVISIONS] [-d DESTINATION|--desti‐
       nation=DESTINATION] [-m|--manual-commit] source_url

       svn_merge [-c|--continue] [-a|--abort]

DESCRIPTION
       This  script does merging using svn merge with multiple revisions.  For
       example:

           svn_merge -r1000-1005,1008 http://svnserver/path

       will merge revisions 1000-1005 and 1008 from http://svnserver/path into
       the current directory.

       It  merges one revision at a time.  If there's a conflict, the user can
       resolve it manually and continue the merge.

       ---

       Reasons for using this script:

           svnmerge also allows merging multiple commits.  svnmerge will merge
       all the commits into the current tree and let the user commits it.  The
       problem comes when the user merges lots of commits in  one  go,  losing
       version history and making "svn ann" useless.

           This script will commit after merging every commit, and commit with
       the original message with the original revision number.  So it is  pos‐
       sible  to  use "svn ann" to find out which commit changed what line and
       the commit message with it.


OPTIONS
       -h, --help
           Show the help message for this program.

       -a, --abort
           Remove the state of the merging process.

       -c, --continue
           Restart the merging process after having resolved a merge conflict.

       -m, --manual-commit
           After merging a commit, let the user commit manually.

       -r REVISIONS, --revisions=REVISIONS
           Revisions to merge

       -d DESTINATION, --destination=DESTINATION
           Target directory of the merges.



EXAMPLES
       Scenario 1: Merging from one tree to another tree

       You want to merge changes from one branch  into  another  branch.   For
       example, you created a branch from trunk to fix a ticket, now it's done
       and you want to merge it back into trunk.

       1. Go to the trunk directory

       2. Start merging:
          $ svn_merge https://svnserver/branches/trunk_1234

       3. Resolve conflicts and continue the merge

       4. Resolve conflicts if there are any:
          It'll show a message like: Use "svn  commit  -F  commit_message"  to
       commit
          - Manually edit files to resolve conficts
          - $ svn resolve file1
          - $ svn commit -F commit_message

       5. Continue the merge:
          $ svn_merge --continue

       -----

       Scenario 2: Merging some changesets from one tree to another tree

       You  want  to cherry pick changesets to merge from one tree to another.
       For example, you want to get some changesets from "branch" to "trunk".

       1. Go to the trunk directory

       2. Select changesets to merge:
          $ svn_merge -r1000-1005,1008 https://svnserver/branches/branch

          Or if your target directory is different from your source directory:
          $       svn_merge       -r       1000-1005,1008       -d        dir2
       https://svnserver/branches/branch/dir

          Or if you want to manually commit the changes:
          $ svn_merge -m https://svnserver/branches/branch


BUGS
       If  you  found  any  bugs  or have any feature requests, please open an
       issue at http://github.com/karenc/svn_rebase/issues.


AUTHOR
       Karen Chan <[email protected]>



                                                                  svn_merge(1)

About

a svn merge tool that is a bit like simplified git rebase

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published