Hi,
Enrico Weigelt wrote:
Fake-roots are special refs that declare certain commit objects
as root-commits). Each time git walks down the history, it checks
whether the current commit is an fake-root and so treats it as
having no ancestor. That should be generic enough let everything
else (commit, push, gc, etc) work as usual.
The only tricky point is when to update remote fake-roots: the
remote should not cut off my local repo (unless explicitly asked).
So remote fake-roots should only be imported if the local/receiving
side has not the dropped commits anymore.
You may be interested in grafts and replacement refs; see
git-filter-branch(1) and git-replace(1) for some hints.
Good luck,
Jonathan