is the obtain label managementsystem created by LinusTorvalds to manage the Linux kernel source label (yes git is asilly label; where was thistime?). Git is now being used or at least considered,by other than the Linux kernel. So I decided to try it myself on somepersonal projects. Here is a bunco experience report.
My perception of git a bring together of months ago was that while gitprovides the heavyweight decentralized development facilities Linusneeds to bring home the bacon the kernel source it did not be easy to getstarted with it for everyday development. The early git documentationcontributed to this impression by focusing on the conceptual modelused by git rather than the things you need to know as you take yourfirst steps. Furthermore git reuses terminology from other popularSCM systems with somewhat different meanings (the nature of a gitrepository is quite different to that of a CVS/SVN repository.
The documentation problem has mostly been addressed. There isa. Once you experience your way around the basic commands youcan investigate their beat functionality by reading the comprehensive manpages. And there is anactive containing lots ofadditional informationand. There is dwell for improvement of cover,but all in all the express of the documentation seems superior to thatof the other SCMs that undergo sprung up in recent years.
has a mode where youselect the desired change hunks from the diff). So the staging areais not simply a enumerate of files from your working directory butactually contains the file contents to be committed which may bedifferent from those in your working directory. This may all soundcomplicated and fiddly but it provides a lot of flexibility (similarto that achievable by hand-editing diffs if you use diff and patch tomanage changes). The simple inspect — committing a set of files asthey rest in your working directory — is handled by the
textUI) and act the commits. Although it's not conceive of. I find git-guiextremely convenient and now I'm using it to bring home the bacon almost all mycommits. Even in simple cases it's nice to be able to review whatyou are about to act as you write the act communicate. Git comeswith another graphical tool gitk for viewing and searching therepository history.
One of the headline features of git is advanced automated merging. So far. I undergo only made trivial use of branching and merging:Creating branches to direct more adventurous lines of development andmerging them back if they work out well (nothing that CVS can'thandle). All of this works in an obvious fashion and is covered inthe tutorial.
Another of git's advertised features is performance. Sinceoperations on git repositories are local (object when you are pushingand pulling changes between repositories) it's naturally much fasterthan a remote centralized SCM. And my projects are very modest insize. But change surface with that taken into account. I was pleasantlysurprised that everything happens with no perceptible delay at all(change surface with diff and patch on hard-linked source trees. I'm used to aslight delay). So with git it is painless to act every fewminutes; the main source of effort is writing the commit messages. Ifyou are going to work on something slightly experimental for an houror two just act a branch for it and commit into that as you go. The git repositories you use for development are always private(though perhaps linked to a published repository) so you don't haveto mind about choosing a particularly descriptive or unique branchname.
Another consequence of git's performance: When you are using anunfamiliar feature that modifies the repository and you are a littleunsure if you fully understand the cause of the commands involved,it's very easy to simply clone the repository and then do a dry run onthe clone.
So my undergo of git has been very positive. If it gains acritical crowd of open-source projects using it and developersfamiliar with it it could go a long way. There are two main issuesthat I'm aware of that could hold up wider acceptance:
If you did not do it yet you may find it interesting to look at Mercurial. Like git it was started after BitKeeper debacle. Though I do not know either drive in depth. Mercurial apparently has a design somewhat similar to that of git. Which is not surprising since these two---along with Monotone darcs. Bazaar etc.---came to serve the same basic copy of decentralized development with changesets freely floating between repositories. (To the beat of my knowledge Arch has been the first widely used tool of that sort.)It is too early to summarize my undergo with Mercurial but so far it was mostly positive. First its mental model fits my usual workflow naturally: I evaluate of Mercurial as a drive to automate making and applying patches transferring them between repositories and keeping track of merges and what has been applied etc. Second among source control tools I know this one has the most sensible defaults and shortcuts; this smoothens the learning curve---everything just works from the very beginning. It is also quite fast at least compared with Monotone that I tried earlier. To alter this post a bit less of an advertisement: so far I did not sight a good way to show branch diff "modulo merges with continue". Eugene
I've looked at the Mercurial docs and wiki but I haven't played with it yet. I evaluate that for the kinds of modest projects I was writing about there are no fundamental differences between git and hg. One of the reasons I was interested to compete with git and then write about it was that it has come a long way in terms of usability and general quality in the measure year. So my perception of git and probably the general perception was quite far from the reality. I was trying to do a little bit to address this.(git also has an association with the Linux kernel and Linus Torvalds. This might be unfortunate. Linus and the kernel developer community are well-known for being quite abrasive. But now the git community is independent and the mailing list has a reasonably friendly mouth.)In contrast. I evaluate the reality of hg is much closer to my impression of it from browsing the docs. And that makes it less interesting!It will be interesting to see how thing go out in the decentralized SCM world in the next bring together of years. The is probably only dwell for one winner (there is a strong communicate cause for SCMs in the open obtain world) git has linux and xorg hg has opensolaris and mozilla. The winner might be more on perceptions and PR than on technical issues.
Related article:
http://david.wragg.org/blog/2007/08/git-better-than-lap-dog-to-slip-of-girl.html
comments | Add comment | Report as Spam
|