remote-helper: Fix refs advertisement for patches
Some of the old patches had missing objects and that causes problems during the ref advertisement, as the object is not found. In this patch, we check that the object exists and also that the patch is still open. Otherwise a remote tracking branch is created for every single patch ref.
This commit is contained in:
parent
0974a4a164
commit
885f4999da
|
|
@ -23,7 +23,6 @@ Your branch is up to date with 'rad/master'.
|
|||
$ git pull --all --ff
|
||||
From rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji
|
||||
f2de534..f567f69 master -> rad/master
|
||||
27857ec..f567f69 patches/50e29a111972f3b7d2123c5057de5bdf09bc7b1c -> rad/patches/50e29a111972f3b7d2123c5057de5bdf09bc7b1c
|
||||
From rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
|
||||
f2de534..f567f69 master -> alice@z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/master
|
||||
```
|
||||
|
|
|
|||
|
|
@ -72,7 +72,11 @@ fn patch_refs<R: ReadRepository + cob::Store>(stored: &R) -> Result<(), Error> {
|
|||
let patches = radicle::cob::patch::Patches::open(stored)?;
|
||||
for patch in patches.all()? {
|
||||
let (id, patch) = patch?;
|
||||
let head = patch.head();
|
||||
|
||||
if patch.is_open() && stored.commit(*head).is_ok() {
|
||||
println!("{} {}", patch.head(), git::refs::storage::patch(&id));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ pub trait ReadRepository: Sized {
|
|||
|
||||
/// Get the [`git2::Commit`] found using its `oid`.
|
||||
///
|
||||
/// Returns `None` if the commit did not exist.
|
||||
/// Returns `Err` if the commit did not exist.
|
||||
fn commit(&self, oid: Oid) -> Result<git2::Commit, git::ext::Error>;
|
||||
|
||||
/// Perform a revision walk of a commit history starting from the given head.
|
||||
|
|
|
|||
Loading…
Reference in New Issue