Intros to git:
- basic git tutorial video 60 min
 - git user manual
 - git man pages
 - git crash course for svn users
 - working with a remote repository (github, pull, fetch, push) (video 10 minutes)
 - git magic (Ben Lynn)
 
Working with git and Subversion:
- Basic introduction to using git-svn
 - remote tracking branches (also applies to git-svn tracked branches)
 
Blogs, Opinions:
- Linus Torvalds on git (at google, video 70 minutes)
 - staging/index explanation and uses
 
Books:
- pragmatic-version-control-using-git
 - http://progit.org/ (available fully online)
 
ONGOING NOTES:
my development procedure (to be completed and tested):
- setup git repo by cloning (only) the subversion trunk (but full history!)
 
- cd d:/git
 - git svn clone http://svn1.sbb.ch/polar/client/trunk
 - cd trunk
 
- create a branch for own work
 
- git checkout -b test3
 
- get updates from subversion
 
- frequently (daily?) run "git svn fetch" to pull changes into the remote branch without doing anything - slow because svn need to create diff sets for each change. Run in background.
 - rebase/merge master frequently "git svn rebase -m" - puts master and svn in sync
 
- merge branch locally
 
- git checkout master // switch to workspace to master
 - git merge test3 // merge changes from test3 branch
 - git mergetool // to handle conflicts using the graphical tortoisemerge
 - git add 
// mark merge conflicts as resolved  - git commit -m "manually merged conflicts"
 
- commit to subversion
 
- ensure master branch and remote git-svn are in sync (git svn rebase -m)
 - git svn dcommit
 - empty directories in svn must be manually removed
 
- initial clone for our client/trunk SVN takes several hours (~4h for 2000 revisions)
 - fetch, update or rebase takes quite a while (up to 1h - many svn changes because of experiments with mvn release)
 
Useful-looking at first glance, yet to grok:
git helper scripts
git ready
merging screencast (video 10 minutes)
Noteworthy features of git:
- merges that work unless there really is a conflict
 - speed
 - staging/index - ability to work on multiple things and separate a commitable set from the resulting mixture of changes, even if changes affect the same files
 - easy addition to the most recent commit, shuffling and reordering of commit chunks after the fact
 - gitk visual representation of all branches, changes, merges
 - distributed - not very relevant in central-SVN context, although useful for local feature branches
 
Keine Kommentare:
Kommentar veröffentlichen