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

Reply via email to