The following steps (which are reproduced in the rere_tracked test on #725 ) causes a problem:
Create a testnet with two peers, peer1, and peer2
Make peer1 track peer2
Create a project in peer1s storage
Create a commit in the project as peer1, point refs/heads/master at it
Pull the project from peer1 to peer2
Create a commit in peer2, point refs/heads/master at it
Pull the project from peer2 into peer1
Assert that the reference refs/namespaces/<project>/refs/remotes/<Peer 2>/heads/master exists in peer1s storage.
This fails if rere is enabled with the patched libgit which respects the force flag on fetchspecs, or equivalently/ if we set the force flag on the peek fetchspec in librad::git::types::refspec::peek() to Force::True (therefore I don't think this is a correctness problem with libgit).
The following steps (which are reproduced in the
rere_tracked
test on #725 ) causes a problem:peer1
, andpeer2
peer1
trackpeer2
peer1
s storagepeer1
, pointrefs/heads/master
at itpeer1
topeer2
peer2
, pointrefs/heads/master
at itpeer2
intopeer1
refs/namespaces/<project>/refs/remotes/<Peer 2>/heads/master
exists inpeer1
s storage.This fails if
rere
is enabled with the patched libgit which respects the force flag on fetchspecs, or equivalently/ if we set the force flag on thepeek
fetchspec inlibrad::git::types::refspec::peek()
toForce::True
(therefore I don't think this is a correctness problem with libgit).