Skip to content

Files from protected commits loose their history, show up as if in last commit only #53

Description

@vorburger

Hello @rtyley , first of all, once again thanks for this amazing tool. Here's feedback of something I'm struggling with - unless I misunderstand, files from protected commits loose their history, show up as if in last commit only? Apologies if this terminology isn't 100% accurate, here's what I mean:

The use case is purging old un-used "big" (mostly binary) files from an originally big (4 GB-ish) repo resulting from a git svn clone import from Subversion. So I so something like: java -jar ../bin/bfg*.jar --private -b 512K . - works great, super fast.

As there are some files >512k on HEAD, and because "BFG assumes that your latest commit is a good one, with none of the dirty files you want removing from your history still in it." (great, tx), I obviously get some:

Scanning packfile for large blobs: 387045
Scanning packfile for large blobs completed in 2,230 ms.
Found 1089 blob ids for large blobs - biggest=653983912 smallest=262726
Total size (unpacked)=5219004150
Found 24785 objects to protect
Found 3 commit-pointing refs : HEAD, refs/heads/master, refs/remotes/git-svn

Protected commits

These are your protected commits, and so their contents will NOT be altered:

  • commit 41c3b0f9 (protected by 'HEAD') - contains 116 dirty files :
    • badaboum (479.7 KB)```

What's... "sub-optimal" is that e.g. the badaboum file in the repo now appears to have (deleted first and then) created in the last commit - it's history appears to have been lost! :( I'm sure this is for a good technical reason of the current implementation - but is there any way to fix / improve this, or any advise/trick/work around you may have? To illustrate:

git show | grep folder/badaboum
diff --git a/folder/badaboum b/folder/badaboum
+++ b/folder/badaboum
diff --git a/folder/badaboum.REMOVED.git-id b/folder/badaboum.REMOVED.git-id
--- a/folder/badaboum.REMOVED.git-id
diff --git a/folder/badaboum_template b/folder/badaboum_template
+++ b/folder/badaboum_template
diff --git a/folder/badaboum_template.REMOVED.git-id b/folder/badaboum_template.REMOVED.git-id
--- a/folder/badaboum_template.REMOVED.git-id

Ideally, I would have hope that files like badaboum just... stay wherever they are in the history. Possible?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions