Re: migrating from SVN to Git
Phil Clayton <[email protected]> Sat, 09 Mar 2013 20:25:06 +0000
| Newsgroups | gmane.comp.lang.ml.mlton.devel |
|---|---|
| Message-ID | <[email protected]> |
On 03/03/13 03:14, Matthew Fluet wrote: > Anyways, I'm looking for feedback on the decision to migrate to Git... Although I'm not a developer of MLton, I thought I would comment to endorse this decision. I found Git a huge improvement over Subversion, even for projects where I am the only developer and the repo exists solely on my local machine! When I worked on a Subversion project, I eventually found myself using Git via the git-svn interface. The main reason was that I often break down the implementation of a new feature into a series of ideal changes [1] and Git supports this very well: it allows a patch series to be prepared privately. This was a nightmare with Subversion: preparing a series of working copies, making sure each contained all the previous changes... The other reason was that 'svn log' (and other commands) require access to the repo. This was irritating with remote repos because - I often use a laptop with no internet access (from a train) - one project was behind an 'air wall', so the repository was accessible only from a particular physical location (but that's an unusual situation). The usual criticism of DVCSs is about carrying around the whole repository but I actually want to do that (see above) and it's hardly a huge overhead [2]. I consider the main criticism of Git to be its complexity. If users are sufficiently competent, that's not an issue. Phil [1] In my opinion, a revision history is vastly more useful if changes are presented in a way that makes it easy to - understand what has changed and - reuse them across development branches. For example, changes should be logically grouped. A revision history is surely not about capturing the series of changes that actually occurred when privately implementing a new feature. It should be an ideal series of changes that typically involves some iteration. For example, I don't want to expose my mistakes to others, not for reasons of pride but because I don't want to waste their time by confusing them with mistakes that I correct in later changes. (Who reads out the first draft of a speech or prints the first draft of a book?!) So, for me, the main problem with Subversion was the inability to change what has been committed. (Sensibly, once a commit is made public it cannot be changed but, due to the centralized nature of a Subversion repository, all commits must be assumed public.) [2] Excluding archived branches: [pclayton@rizzo git]$ time git clone https://github.com/MLton/mlton.git Cloning into 'mlton'... remote: Counting objects: 64431, done. remote: Compressing objects: 100% (12324/12324), done. remote: Total 64431 (delta 51794), reused 64079 (delta 51519) Receiving objects: 100% (64431/64431), 31.41 MiB | 688 KiB/s, done. Resolving deltas: 100% (51794/51794), done. real 0m57.359s user 0m5.113s sys 0m1.744s [pclayton@rizzo git]$ time git clone https://github.com/MLton/mltonlib.git Cloning into 'mltonlib'... remote: Counting objects: 14343, done. remote: Compressing objects: 100% (4966/4966), done. remote: Total 14343 (delta 7434), reused 14343 (delta 7434) Receiving objects: 100% (14343/14343), 1.96 MiB | 615 KiB/s, done. Resolving deltas: 100% (7434/7434), done. real 0m6.226s user 0m0.481s sys 0m0.251s [pclayton@rizzo git]$ du -sm * 69 mlton 9 mltonlib [pclayton@rizzo git]$ ------------------------------------------------------------------------------ Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the endpoint security space. For insight on selecting the right partner to tackle endpoint security challenges, access the full report. http://p.sf.net/sfu/symantec-dev2dev