]> source.dussan.org Git - jgit.git/commit
GC should not pack objects only referenced by ORIG_HEAD,... 69/72569/2
authorChristian Halstrick <christian.halstrick@sap.com>
Wed, 11 May 2016 20:36:10 +0000 (22:36 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Wed, 18 May 2016 20:49:22 +0000 (22:49 +0200)
commit6590c0a92ac987489dfa49281a20e5ea956e043d
tree09819175483cc65bfdd84ec70fa0db36534a0921
parent0afd62efa868791895eb1f563bb08f6511fe9a79
GC should not pack objects only referenced by ORIG_HEAD,...

There are references which are returned by
RefDatabase.getAdditionalRefs() which are allowed to point to
non-existing objects. These refs should not save objects from being
garbage collected. Examples for these references are ORIG_HEAD,
MERGE_HEAD, FETCH_HEAD and CHERRY_PICK_HEAD. Native git will not take
these references into account when doing a gc and therefore these
references may point to non-existing objects after a gc. Teach JGit's
GC to behave the same: ignore additional refs if they don't start with
"refs/". Examples for refs returned by getAdditionalRefs() which do
start with "refs/" are the bootstrap refs when using reftree's (see
commit 115f1ad3974d1162b33d1c8eff466019d1f249f3). See also
http://article.gmane.org/gmane.comp.version-control.git/294126.

Bug: 479697
Change-Id: I10e40589f13e72aacdd9f86f3b44696fd1cd068a
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java