On 1/30/2014 5:51 PM, Alan W. Irwin wrote: > On 2014-01-30 16:35-0500 Hazen Babcock wrote: > >> Hello, >> >> I know this has come up before. However, I've been using git alot at >> work and I feel that it has many advantages over SVN and I think we >> should again consider switching over (after the next release of course). >> To get an idea of the power of git I would suggest reading the first 3 >> chapters of this (online) book: >> http://git-scm.com/book >> >> And I was even inspired enough to create a git clone of the PLplot >> project which is available here: >> https://github.com/HazenBabcock/PLplot >> >> The conversion was performed using svn2git as described here: >> https://github.com/nirvdrum/svn2git >> >> While I did run into some issues (and bugs in conversion program) along >> the way, I believe that it is "complete and accurate", and includes all >> the branches and version tags. > > Hi Hazen: > > Can you confirm you have been able to preserve all our svn history > (which includes our cvs history) in that git repository back to > revision 1? If so, that would be a very promising sign concerning the > quality of the svn2git conversion tool (or workarounds you used > for its conversion bugs). > > I am more welcoming towards the idea of converting PLplot to a git > repository than previously. Thanks to many git recommendations like > yours, I do plan to start learning how to use git in the near future. > My one collaborator for the timeephemeris project (much less > complicated than PLplot) also prefers git, and because of his needs > and because I thought it was time to learn git I plan to switch that > project from svn to git in the next month or so and will presumably > learn git rather fast after that. So let's see how that goes, but > assuming that conversion and my practical use of git after that is a > success, then I would be willing to go along with a switch to git > later this year if our other PLplot core developers are willing to do > that as well. > > I have just reviewed the subset of the svn commands that I ordinarily > use with PLplot > and other projects. > > Those are > add > cat > checkout (co) > commit (ci) > copy (cp) > delete (del, remove, rm) > diff (di) > export > help (?, h) > log > move (mv, rename, ren) > propdel (pdel, pd) > propedit (pedit, pe) > propget (pget, pg) > proplist (plist, pl) > propset (pset, ps) > revert > status (stat, st) > update (up) > > You don't have to do this to convince me since I am going to be > learning git regardless later this year, but it might help your case > with those developers here who are not familiar yet with git and are > wondering how painful using git is going to be to create a short > summary of how a developer would go about normal PLplot development in > a git world. I further suggest you keep that summary as simple as > possible (just giving the minimal git commands that do the equivalent > of the above svn commands) because one of the intimidating factors for > git is the large command set with large numbers of options. That > complexity makes git very powerful indeed, but also makes it > difficult/intimidating to learn.
Hi Alan, Regarding the conversion: 1. The first ever commit? $git log | tail Author: furnish <furn...@users.sourceforge.net> Date: Wed May 20 21:36:02 1992 +0000 Initial checkin of the whole PLPLOT project. commit 60a5c3966d86eef16dbf391dc40647fa3fcedb30 Author: no_author <no_aut...@users.sourceforge.net> Date: Wed May 20 21:36:02 1992 +0000 New repository initialized by cvs2svn. 2. Alan's first commit? $git log | grep airwin -A 5 | tail [snip] Author: airwin <air...@users.sourceforge.net> Date: Wed May 10 21:24:06 2000 +0000 Alan W. Irwin. Logic for changing power of 10 to scale z axes is now consistent between the left and right z axes. 3. Hazen's first commit? $git log | grep hbabcock -A 5 | tail [snip] Author: hbabcock <hbabc...@users.sourceforge.net> Date: Sun Feb 6 18:25:25 2005 +0000 Added AquaTerm driver As an aside, since a git repository is always local this is fast operation. Anyway, it looks like history is all there? I provide some (untested) examples of how one might use git below, but I think that the git book really does a great job of explaining things, and it doesn't actually take that long to read the first 3 chapters :). 1. Basic (SVN like) work: git clone https://github.com/HazenBabcock/PLplot.git .. work on file1.x .. git add file1.x git commit -m file1.x .. work on file2.x .. .. what did I change anyway? .. git status git add file2.x git commit -m file2.x .. that was a mistake .. git reset HEAD~1 .. make correction .. git add file2.x git commit -m file2.x git push origin master (all the work is local until the changes are pushed back to the remote repository by git push) 2. Work on a branch: .. dev1 .. git branch -b epa_build .. work on epa_build .. add .. commit .. .. push epa_build to a remote repository so that other can evaluate .. git push origin epa_build .. dev2 .. git fetch git checkout epa_build .. tests & agrees that epa_build works well .. .. dev1 .. .. merge epa_build into master .. git checkout master git merge epa_build git push origin master .. delete the epa_build branch if it is no longer needed .. git branch -d epa_build 3. Work with someone who is not a PLplot developer (this is where I think git really has an advantage): .. non-dev .. git clone dev-repo git branch -b go_bindings .. work on go_bindings .. git push non-dev-repo go_bindings .. dev1 .. git remote add non-dev-repo git fetch non-dev-repo git checkout go_bindings .. see what has been changed in go_bindings compared to master .. git diff go_bindings..master .. makes some changes, suggests others .. git push dev-repo go_bindings .. non-dev .. git fetch dev-repo git checkout go_bindings git merge dev-repo/go_bindings .. implements changes .. git push non-dev-repo go_bindings .. dev1 .. git fetch non-dev-repo git checkout go_bindings git merge non-dev-repo/go_bindings .. likes go_bindings .. git checkout master git merge go_bindings git push origin master Where non-dev-repo is a publicly available repository. Note that git makes it much easier for someone who is not a core developer to contribute and it makes it much easier to evaluate the contributions as you don't have to keep swapping and applying patch files and/or both have write access to the same repo. It appears that git does not have a properties feature like SVN, so I don't think there is anything like the SVN prop commands. -Hazen ------------------------------------------------------------------------------ WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel