-
Notifications
You must be signed in to change notification settings - Fork 36
RebasingToNewDevel
Since the BALL history contained a complete copy of Qt and other libraries, its repository was unnecessary big. In order to get rid of this these files have been removed surgically by means of an interactive git rebase. This left the complete codebase unchanged, but unfortunately this causes the commit history to be inconsistent from the first removed commit onwards. If you still have old commit lingering around in your repository you will want to move them over to the new branch which you can find on the main BALL repository: {{{ http://ball-git.bioinf.uni-sb.de/BALL.git }}} on the branch master.
Here are instructions how to move your commit over to this branch: 1.Note that when completing the move the branch you obtain will be incompatible with every copy of that branch obtained by branching or pulling! This implies that you need some experience with git and should not do this if you are not fully awake. ;-)
1.Checkout a copy of your working branch. If anything went wrong you can just delete this new branch. {{{ git checkout -b rebase_branch }}}
1.Do a git rebase to the legacy branch of the main repository. This walk through assumes that the remote origin is the main repository. (You can verify this by typing git remote show origin | grep URL. The output should read: URL: http://ball-git.bioinf.uni-sb.de/BALL.git) {{{ git fetch origin git rebase origin/legacy }}}
1.When you have completed this all of your commits should sit on top of the origin/legacy branch. Take your time to verify this. Also pay attention that you did not introduce duplicate commits because of previous rebases! Sometimes it might be necessary to do an interactive rebase such that you can pick the commits you want to move.
1.Rebasing: a. If you had no commits mixed with commits on origin/legacy everything is fine and you can continue with 5b) If not some additional work is required: You will need to manually cherry-pick every mixed commit onto a clean checkout of origin/master. The order in which this has to be done is from oldest to newest commit. When you are done with cherry-picking check out your working branch again and continue with 5b. the only difference there is that you need to supply master instead of origin/master as onto argument for rebase. {{{ git checkout -b master origin/master git cherry-pick 231232134afdef ... git checkout your_working_branch }}} b. Locate your last commit and remember its hash value. In this example abcd1234 will be used. Now we will transplant your commits onto the master branch: {{{ git rebase --onto origin/master abcd1234~1 }}}