My plan is to maintain, within git, the mapping between original and rebased commit, so that pulls, merges and rebases could tell what has already been seen and done, rather than attempting to replay commits.
I propose to model them as weak parents , akin to weak references: they link to a parent, but they don't demand the parent to be available, or keep the parent around, or cause the parent to be transmitted along with the branch. If the other party has it, it can be used to improve merges and rebases; otherwise, it's ignored. This is along the same lines as my correspondence table. There are two differences: * Store it within git itself vs separately. If changing git is a feasible approach, I agree inside git is better. In the new version of my plan, I adopted the idea of storing it within git. * Weak parents vs correspondence table for pull. The semantics of these is different. I think the correspondence table better fits the desired semantics. -- Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org, www.gnu.org