On 2014-08-17 11:00-0700 Alan W. Irwin wrote:

>>> To make this file proposal concrete, I am suggesting storing the file
>>> in PLplot_repo_information/README_svn2git_conversion (a directory and
>>> name that are unlikely to be deleted by accident by anyone) that
>>> states the commands we used to do the conversion and test it (the
>>> contents of the AWIREADME file I sent you plus additional
>>> documentation of the subversion branches that were converted to git
>>> and then deleted with explicit instructions on how to resurrect each
>>> one of them). I think we should also store in that directory the 4
>>> files we used for the conversion, i.e., the two files used with
>>> svn-all-fast-export, the convert tags bash script that was sourced,
>>> and my standalone bash script to test the results in that directory.
>>> Do you see git (or any other) issues with these ideas?
>>
>> This is fine with me.
>
> Good.

Hi Hazen:

So we were all in agreement that storage (in a file) of the SHA1 id of
the HEAD commits from each branch to be deleted would be enough to
guarantee branch resurrection, but it turns out that is incorrect.
Further reading shows that git automatically garbage collects
(deletes) all "unreachable" commits after a suitable default period
(usually 90 days, I think).  So there are lots of warnings in the
results for google searching for the terms <git resurrect branch> that
the techniques only work for a while until garbage collection occurs.

However, I found
<http://stackoverflow.com/questions/1055877/will-a-commit-be-garbage-collected-if-its-refered-to-by-tag-but-not-by-branch>
which indicated the part of the git-gc manual which notes

"git gc tries very hard to be safe about the garbage it collects. In
particular, it will keep not only objects referenced by your current
set of branches and tags..."

It is good that tags don't get garbage collected, because we have
that situation (tag with no branch) for all our release tags. That is

git branch --contains v5_10_0

produces no results which means the important commit (corresponding to
the plplot-5.10.0 release) pointed to by that tag is not on a branch.

So the variation on what was agreed to above to allow anyone to
resurrect the historical svn branches that we want to delete is the
branch HEAD's should all be tagged (so the garbage collection git
monsters don't eat those commits alive) with a tag name something like
svn_historical_branch_<branch_name>, then the branch deleted.

Note I have already copied (because I had no interest in the history),
added, committed and pushed the test_ada subdirectory that was the
only part of those historical branches that I am currently aware of
that has important use going forward.  But if someone else wants to
copy something from these historical branches, then branch
resurrection should be available to them indefinitely without worrying
about garbage collection.

So as far as I am concerned, you can proceed with the above
process.  I could do it locally, but I am not sure how to
propagate the deleted branches and corresponding new tags
to the official repo.  Also, once the official repo is
updated that way, how are those deleted branches and new
tags propagated to everyone else?  Will the next
"git fetch" or "git pull" do that automatically?

Once you have completed the above process, and the resulting deleted
branches and new tags are propagated (see the question above) to my
local repo, then I would be willing to write up the resurrection
process (and list all the relevant svn_historical_branch_... tags) in
the file documenting our conversion from svn to git.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to