You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-filter-repo/differences

49 lines
2.4 KiB
Plaintext

git-filter-branch
Ease of use differences in usability:
Easier path selection and renaming
Rewrite sha1sums (and abbreviations) in commit messages
Defaults to pruning empty commits (but only BECOME empty commits)
- (Technical notes, on kinds of empty:
- Empty due to blob filtering resulting in later patch becoming empty
- Empty due to path filtering
- Empty branch causing merge to lose parent(s) -- 3 styles
- One or more parents had no changes themselves or in their history
- Most recent non-empty commit on all branches was either the
merge-base or an ancestor (i.e. keeping the merge commit would
mean merging a commit with itself)
- Most recent non-empty commit on one parent's side of history is
an ancestor of another parent (i.e. that side no longer has any
interesting changes, and the parent corresponding to the empty
side should be removed)
- Empty ref due to entire history before it being empty
Deletes stuff not requested in the rewrite (unless overridden), so that
it doesn't confuse user or accidentally get re-pushed
Typically far faster to execute
Bails if not in a clean clone by default
- Users have a far easier time restoring if they can just nuke the clone
- Avoids the default need for users to mess with backups of original refs
(either for restoration, or for pruning to make sure repo is clean)
Repacks and shrinks repo for you (unless overridden)
- Makes it easier to ensure you've cleaned out unwanted stuff
Advantages over git-repo-filter:
- Filters every file once per revision even if unmodified between commits;
allows filtering differently for different commits.
bfg repo-cleaner
Ease of use differences in usability:
Automatic repack and shrink repo (instead of documenting extra steps)
No stupid 'fix your current branch first manually, then run'
Pathname inclusion, not just exclusion
Full pathname matching, instead of just *basename* (globs for basename)
Capability differences:
Prunes commits which become empty due to filtering
Lots of general filtering options outside of removing a few big files
Advantages of BFG repo cleaner:
- Very focused on just removing crazy big files, and sensitive data
-