Version 6 (modified by 13 years ago) ( diff ) | ,
---|
Git
Table of Contents
Sahana Eden has decided to move from Bzr/LaunchPad to Git/GitHub
Why?
- The current repository is huge & bloated, taking too long to download.
- Even simple changes take an age to Pull down to servers
- Web2py no longer supports Bzr/LaunchPad, so we want to be able to maintain a common tool to work with both repositories.
- New developers are likely to be more familiar with Git/GitHub
How?
The preferred approach is to have a clean repository, in order to get the maximum benefit from the migration...although it is technically possible to migrate the commit history. Commit History will instead be maintained on the LaunchPad site as an archive
Migrating existing Branches
Merge branch with trunk using normal Bzr tools
Assuming that you have already forked Eden Trunk, then you will need to create a new repository manually for additional branches, as you cannot fork your own project on GitHub:
- https://github.com/repositories/new
cd web2py/applications mv <mybranch> <mybranch2> git clone git@github.com:flavour/eden.git <mybranch>
- Delete the contents of <mybranch> other than
.git
&.gitignore
- Edit
.git/config
:[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@github.com:<mygitusername>/<mybranch>.git
- Copy all the contents from <mybranch2> into <mybranch>
cd <mybranch> git commit -a git push origin master git remote add upstream git://github.com/flavour/eden.git
Developer Workflow
We suggest adopting the Story Branch pattern, which allows squashing commits in order to keep the main Trunk as clean as possible
cd <mybranch> # Update your working directory with latest code from Trunk git checkout master git pull git checkout -b <mystory> git commit -am "My Story" # Quick review of code (no test code left in, etc) git diff master # Merge latest Trunk git checkout master git pull git checkout <mystory> git rebase master # Push to your branch on GitHub git checkout master git merge <mystory> git push # Cleanup git branch -d <mystory>
Developer Configuration
git config --global user.name "Your Name" git config --global user.email your@email.com git config --global github.user yourgithubusername git config --global github.token yourtoken git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" git config --global merge.tool diffmerge git config --global diff.tool diffmerge git config --global difftool.diffmerge.cmd 'C:/Program Files (x86)/Git/etc/wrappers/git-diff-diffmerge-wrapper.sh' "$LOCAL" "$REMOTE" git config --global difftool.prompt false git config --global merge.tool diffmerge git config --global mergetool.diffmerge.cmd 'C:/Program Files (x86)/Git/etc/wrappers/git-merge-diffmerge-wrapper.sh' "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE" "$PWD/$MERGED" git config --global mergetool.prompt false git config --global mergetool.trustExitCode false git config --global mergetool.keepBackup false
Windows
Install Console & Diffmerge & configure Powershell.
Developer Tools
Pre-commit hook to update VERSION (& run tests?), e.g. based on http://tech.yipit.com/2011/11/16/183772396/
Resources
- Community Book: http://book.git-scm.com
- Tips & Tricks: http://gitready.com
Attachments (2)
-
merge.cmd
(186 bytes
) - added by 13 years ago.
Windows script to help with merge conflicts
-
pre-commit
(190 bytes
) - added by 3 years ago.
pre-commit
Download all attachments as: .zip