Things I love about git
rakeroutes.com
rakeroutes.com
Actually, it does have a github. It's called "github" and is available at http://github.com.
See https://github.com/blog/966-improved-subversion-client-suppo...
But it looks like it's just limited support. Does it support all the github things like forks, pull requests, etc? Do you have a link to an SVN repo on github? I'd love to check one out.
- fork a repo on github
- use svn to access that repo
- use svn to make a local/remote branch
- code code code
- commit and push up to github
- then use github pull requests as usual?Commit file X, then commit file Y.
You can also commit only a part of file X! `git add -i` brings you to an interactive 'add' mode where you can view, split and add each hunk individually.
There's also `git add -p` that takes you straight into the patch mode.
Are there simply no benefits to using a centralized system, or is no one bragging about them like all of these Git fans?
The primary reason I switched my last employer from SVN to Git is because we frequently found ourselves in merge-conflict hell. Our workflow under Git was really very similar to our workflow under SVN.
For that reason, you can essentially write a wrapper on top of git to turn it into a centralized VCS that acts similarly to Perforce/SVN/etc., by enforcing a certain workflow that essentially eliminates merge conflicts.
Of course, you lose a lot of the power of git when you do this (the same power that's responsible for many posts like these), but to cut a long story short: it's not an apples-to-apples comparison.
A bit old(2009) so it may have changed, but here is a rant about the scalability of git vs perforce. http://stevehanov.ca/blog/index.php?id=50 and a little newer post on git scalability issues: http://news.ycombinator.com/item?id=3548824
svn-bisect [1]
partial commits can be made @ line level also, w/ `git add --edit`
-e, --edit
Open the diff vs. the index in an editor and let the user edit it...
http://www.kernel.org/pub/software/scm/git/docs/git-add.htmlI'll add that in later when I fix my omission of git add -p.
I don't know if it was buggy or if we were doing something wrong, but it still caused merging disasters even though in theory it should have been able to avoid them.
c--d--e
/
a--b
\
f
Now we want the change from commit d applied on the branch with head f so we cherry-pick the revision into place. This essentially applies the delta of revision d as a patch over revision f. c--d--e
/
a--b
\
f--d'
Now we make another change (rev g)and then decide that what was done in revision d was incorrect, so we undo those changes (rev h). c--d--e
/
a--b
\
f--d'--g--h
Now we decide that we want to merge branch with head e into branch with head h. c--d--e----
/ \
a--b i
\ /
f--d'--g--h
In Git or Mercurial, the change originally made in revision d (and later undone in revision h) will appear in revision i. Subversion won't make this mistake because when revision d will already be marked as merged into that branch.I'm much happier with the DAG model of Git and Mercurial than I was with the Subversion branching model, but the DAG model is not universally superior.
What? Git has pull requests.