From 1c7abe27ecce7cb3b95fee9f4ea190a9f8adad7b Mon Sep 17 00:00:00 2001 From: Christian Schilling Date: Wed, 8 May 2024 11:45:02 +0000 Subject: [PATCH] Make rev() detect all parents of the given commits The `:rev()` filter used to only apply filters if the specified revisions where encountered during traversal. However, this meant that if an ancestor commit is reachable by multiple paths in the history and some include the specified revision and some don't, the ancestor has multiple corresponding filtered commits. This resulted in duplicated commits in those more complicated histories and caused "non roundtrip" issues. Now the rev filter will compute if a commit is reachable from the specifed commit in any way and apply if so. Change: rev-all-parents Co-authored-by: Ralf Jung --- josh-core/src/cache.rs | 2 +- josh-core/src/filter/mod.rs | 49 ++++++++++++++++++- josh-core/src/housekeeping.rs | 4 +- josh-core/src/lib.rs | 27 +++++----- josh-filter/src/bin/josh-filter.rs | 11 +++-- josh-proxy/src/bin/josh-proxy.rs | 2 +- tests/filter/start.t | 47 +++++++++++------- tests/proxy/amend_patchset.t | 2 +- tests/proxy/authentication.t | 2 +- tests/proxy/caching.t | 4 +- tests/proxy/clone_absent_head.t | 2 +- tests/proxy/clone_all.t | 2 +- tests/proxy/clone_blocked.t | 2 +- tests/proxy/clone_invalid_url.t | 2 +- tests/proxy/clone_locked_refs.t | 2 +- tests/proxy/clone_prefix.t | 2 +- tests/proxy/clone_sha.t | 2 +- tests/proxy/clone_subsubtree.t | 2 +- tests/proxy/clone_subtree.t | 2 +- tests/proxy/clone_subtree_no_master.t | 2 +- tests/proxy/clone_subtree_tags.t | 2 +- tests/proxy/clone_with_meta.t | 2 +- tests/proxy/empty_commit.t | 2 +- tests/proxy/get_version.t | 2 +- tests/proxy/import_export.t | 2 +- tests/proxy/join_with_merge.t | 2 +- tests/proxy/markers.t | 2 +- tests/proxy/no_proxy.t | 2 +- tests/proxy/no_proxy_lfs.t | 2 +- tests/proxy/push_graphql.t | 2 +- tests/proxy/push_new_branch.t | 2 +- tests/proxy/push_prefix.t | 2 +- tests/proxy/push_review.t | 2 +- tests/proxy/push_review_already_in.t | 2 +- tests/proxy/push_review_nop_behind.t | 2 +- tests/proxy/push_review_old.t | 2 +- tests/proxy/push_review_topic.t | 2 +- tests/proxy/push_stacked.t | 2 +- tests/proxy/push_stacked_gerrit.t | 2 +- tests/proxy/push_stacked_split.t | 2 +- tests/proxy/push_stacked_sub.t | 2 +- tests/proxy/push_subdir_prefix.t | 2 +- tests/proxy/push_subtree.t | 2 +- tests/proxy/push_subtree_two_repos.t | 2 +- tests/proxy/unrelated_leak.t | 2 +- tests/proxy/workspace.t | 2 +- tests/proxy/workspace_create.t | 2 +- tests/proxy/workspace_discover.t | 2 +- tests/proxy/workspace_edit_commit.t | 2 +- tests/proxy/workspace_in_workspace.t | 2 +- .../proxy/workspace_invalid_trailing_slash.t | 2 +- tests/proxy/workspace_modify.t | 2 +- tests/proxy/workspace_modify_chain.t | 2 +- .../workspace_modify_chain_prefix_subtree.t | 2 +- tests/proxy/workspace_pre_history.t | 2 +- tests/proxy/workspace_publish.t | 2 +- tests/proxy/workspace_tags.t | 2 +- 57 files changed, 154 insertions(+), 90 deletions(-) diff --git a/josh-core/src/cache.rs b/josh-core/src/cache.rs index 3592c5ae7..bd66281c7 100644 --- a/josh-core/src/cache.rs +++ b/josh-core/src/cache.rs @@ -1,7 +1,7 @@ use super::*; use std::collections::HashMap; -const CACHE_VERSION: u64 = 18; +const CACHE_VERSION: u64 = 19; lazy_static! { static ref DB: std::sync::Mutex> = std::sync::Mutex::new(None); diff --git a/josh-core/src/filter/mod.rs b/josh-core/src/filter/mod.rs index f3d99a3b6..f9e9c10e0 100644 --- a/josh-core/src/filter/mod.rs +++ b/josh-core/src/filter/mod.rs @@ -14,6 +14,8 @@ lazy_static! { std::sync::Mutex::new(std::collections::HashMap::new()); static ref WORKSPACES: std::sync::Mutex> = std::sync::Mutex::new(std::collections::HashMap::new()); + static ref ANCESTORS: std::sync::Mutex>> = + std::sync::Mutex::new(std::collections::HashMap::new()); } /// Filters are represented as `git2::Oid`, however they are not ever stored @@ -485,9 +487,21 @@ fn apply_to_commit2( let id = commit.id(); - if let Some(startfilter) = filters.get(&id) { + for (&filter_tip, startfilter) in filters.iter() { + if filter_tip == git2::Oid::zero() { + continue; + } + if !ok_or!(is_ancestor_of(repo, id, filter_tip), { + return Err(josh_error(&format!( + "`:rev(...)` with non existing OID: {}", + filter_tip + ))); + }) { + continue; + } + // Remove this filter but preserve the others. let mut f2 = filters.clone(); - f2.remove(&id); + f2.remove(&filter_tip); f2.insert(git2::Oid::zero(), *startfilter); let op = if f2.len() == 1 { to_op(*startfilter) @@ -995,6 +1009,37 @@ pub fn make_permissions_filter(filter: Filter, whitelist: Filter, blacklist: Fil opt::optimize(filter) } +/// Check if `commit` is an ancestor of `tip`. +/// +/// Creates a cache for a given `tip` so repeated queries with the same `tip` are more efficient. +fn is_ancestor_of( + repo: &git2::Repository, + commit: git2::Oid, + tip: git2::Oid, +) -> Result { + let mut ancestor_cache = ANCESTORS.lock().unwrap(); + let ancestors = match ancestor_cache.entry(tip) { + std::collections::hash_map::Entry::Occupied(entry) => entry.into_mut(), + std::collections::hash_map::Entry::Vacant(entry) => { + tracing::trace!("is_ancestor_of tip={tip}"); + // Recursively compute all ancestors of `tip`. + // Invariant: Everything in `todo` is also in `ancestors`. + let mut todo = vec![tip]; + let mut ancestors = std::collections::HashSet::from_iter(todo.iter().copied()); + while let Some(commit) = todo.pop() { + for parent in repo.find_commit(commit)?.parent_ids() { + if ancestors.insert(parent) { + // Newly inserted! Also handle its parents. + todo.push(parent); + } + } + } + entry.insert(ancestors) + } + }; + Ok(ancestors.contains(&commit)) +} + #[cfg(test)] mod tests { use super::*; diff --git a/josh-core/src/housekeeping.rs b/josh-core/src/housekeeping.rs index bfc1b571e..1592d7946 100644 --- a/josh-core/src/housekeeping.rs +++ b/josh-core/src/housekeeping.rs @@ -295,12 +295,12 @@ pub fn refresh_known_filters( &to_filtered_ref(upstream_repo, filter_spec), upstream_repo, ) { - let mut u = filter_refs( + let (mut u, _) = filter_refs( transaction_overlay, filter::parse(filter_spec)?, &[from], filter::empty(), - )?; + ); u[0].0 = to_ref; updated_refs.append(&mut u); } diff --git a/josh-core/src/lib.rs b/josh-core/src/lib.rs index 0fc4ff979..085ad25f2 100644 --- a/josh-core/src/lib.rs +++ b/josh-core/src/lib.rs @@ -276,28 +276,33 @@ pub fn filter_refs( filterobj: filter::Filter, refs: &[(String, git2::Oid)], permissions: filter::Filter, -) -> JoshResult> { +) -> (Vec<(String, git2::Oid)>, Vec<(String, JoshError)>) { rs_tracing::trace_scoped!("filter_refs", "spec": filter::spec(filterobj)); let s = tracing::Span::current(); let _e = s.enter(); let mut updated = vec![]; + let mut errors = vec![]; tracing::trace!("filter_refs"); for k in refs { - let oid = ok_or!(filter_commit(transaction, filterobj, k.1, permissions), { - tracing::event!( - tracing::Level::WARN, - msg = "filter_refs: Can't filter reference", - warn = true, - from = k.0.as_str(), - ); - git2::Oid::zero() - }); + let oid = match filter_commit(transaction, filterobj, k.1, permissions) { + Ok(oid) => oid, + Err(e) => { + errors.push((k.0.to_string(), e)); + tracing::event!( + tracing::Level::WARN, + msg = "filter_refs: Can't filter reference", + warn = true, + from = k.0.as_str(), + ); + git2::Oid::zero() + } + }; updated.push((k.0.to_string(), oid)); } - Ok(updated) + (updated, errors) } pub fn update_refs( diff --git a/josh-filter/src/bin/josh-filter.rs b/josh-filter/src/bin/josh-filter.rs index 4628c33fc..69e76c551 100644 --- a/josh-filter/src/bin/josh-filter.rs +++ b/josh-filter/src/bin/josh-filter.rs @@ -236,12 +236,12 @@ fn run_filter(args: Vec) -> josh::JoshResult { if i.contains(":workspace=") { continue; } - let mut updated_refs = josh::filter_refs( + let (mut updated_refs, _) = josh::filter_refs( &transaction, josh::filter::parse(&i)?, &[(input_ref.to_string(), r.id())], josh::filter::empty(), - )?; + ); updated_refs[0].0 = "refs/JOSH_TMP".to_string(); josh::update_refs(&transaction, &mut updated_refs, ""); } @@ -296,7 +296,12 @@ fn run_filter(args: Vec) -> josh::JoshResult { git2::Oid::zero() }; - let mut updated_refs = josh::filter_refs(&transaction, filterobj, &refs, permissions_filter)?; + let (mut updated_refs, errors) = + josh::filter_refs(&transaction, filterobj, &refs, permissions_filter); + + for error in errors { + return Err(error.1); + } for i in 0..updated_refs.len() { if updated_refs[i].0 == input_ref { if reverse { diff --git a/josh-proxy/src/bin/josh-proxy.rs b/josh-proxy/src/bin/josh-proxy.rs index 57f326147..d92afe385 100644 --- a/josh-proxy/src/bin/josh-proxy.rs +++ b/josh-proxy/src/bin/josh-proxy.rs @@ -481,7 +481,7 @@ async fn do_filter( t2.repo() .odb()? .add_disk_alternate(repo_path.join("mirror").join("objects").to_str().unwrap())?; - let updated_refs = josh::filter_refs(&t2, filter, &refs_list, josh::filter::empty())?; + let (updated_refs, _) = josh::filter_refs(&t2, filter, &refs_list, josh::filter::empty()); let mut updated_refs = josh_proxy::refs_locking(updated_refs, &meta); josh::housekeeping::namespace_refs(&mut updated_refs, temp_ns.name()); josh::update_refs(&t2, &mut updated_refs, &temp_ns.reference(&head_ref)); diff --git a/tests/filter/start.t b/tests/filter/start.t index ff2e3ba36..96f55e55b 100644 --- a/tests/filter/start.t +++ b/tests/filter/start.t @@ -48,18 +48,24 @@ |/ * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 + $ josh-filter -s ":rev(ffffffffffffffffffffffffffffffffffffffff:prefix=x/y)" --update refs/heads/filtered + [5] :prefix=x + [5] :prefix=y + ERROR: `:rev(...)` with non existing OID: ffffffffffffffffffffffffffffffffffffffff + [1] + $ josh-filter -s ":rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y)" --update refs/heads/filtered [5] :prefix=x [5] :prefix=y [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) $ git log --graph --decorate --pretty=%H:%T refs/heads/filtered - * 8b4097f3318cdf47e46266fc7fef5331bf189b6c:5f47d9fdffdc726bb8ebcfea67531d2574243c5d + * 54651c29aa86e8512a7b9d39e3b8ea26da644247:5f47d9fdffdc726bb8ebcfea67531d2574243c5d |\ | * ee931ac07e4a953d1d2e0f65968946f5c09b0f4c:5d0da4f47308da86193b53b3374f5630c5a0fa3e | * cc0382917c6488d69dca4d6a147d55251b06ac08:8408d8fc882cba8e945b16bc69e3b475d65ecbeb - | * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 - * e707f76bb6a1390f28b2162da5b5eb6933009070:5d8a699f74b48c9c595f4615dd3755244e11d176 - * 0b4cf6c9efbbda1eada39fa9c1d21d2525b027bb:3d77ff51363c9825cc2a221fc0ba5a883a1a2c72 + * | daf46738b8fddd211a1609bf3b9de339fe7589eb:5d8a699f74b48c9c595f4615dd3755244e11d176 + |/ + * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 $ josh-filter -s ":rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y)" --update refs/heads/filtered @@ -68,12 +74,12 @@ [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [5] :rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) $ git log --graph --decorate --pretty=%H:%T refs/heads/filtered - * dbc12216fd70cd41937b99940b1f74dde60b4f44:5f47d9fdffdc726bb8ebcfea67531d2574243c5d + * 5fe60a2d55b652822b3d3f25410714e9053ba72b:5f47d9fdffdc726bb8ebcfea67531d2574243c5d |\ - | * 86871b8775ad3baca86484337d1072aa1d386f7e:5d0da4f47308da86193b53b3374f5630c5a0fa3e - | * 975d4c4975912729482cc864d321c5196a969271:de6937d89a7433c80125962616db5dca6c206d9d - | * 0b4cf6c9efbbda1eada39fa9c1d21d2525b027bb:3d77ff51363c9825cc2a221fc0ba5a883a1a2c72 - * 08158c6ba260a65db99c1e9e6f519e1963dff07b:6d18321f410e431cd446258dd5e01999306d9d44 + | * 0822879dab0a93f29848500e72642d6c8c0db162:5d0da4f47308da86193b53b3374f5630c5a0fa3e + | * 5c145ed574623e7687f4c7a5d1d40b48687bf17c:de6937d89a7433c80125962616db5dca6c206d9d + * | 08158c6ba260a65db99c1e9e6f519e1963dff07b:6d18321f410e431cd446258dd5e01999306d9d44 + |/ * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 $ cat > filter.josh < :rev( @@ -104,16 +110,17 @@ > ) > EOF $ josh-filter -s --file filter.josh --update refs/heads/filtered + [1] :prefix=z [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/z) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) - [5] :prefix=x [5] :prefix=y [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) + [6] :prefix=x $ cat > filter.josh < :rev( > e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y @@ -122,37 +129,39 @@ > EOF $ josh-filter -s --file filter.josh --update refs/heads/filtered Warning: reference refs/heads/filtered wasn't updated + [1] :prefix=z [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/z) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) - [5] :prefix=x [5] :prefix=y [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) + [6] :prefix=x $ git log --graph --decorate --pretty=%H:%T refs/heads/filtered - * e8b8c260e894186db18bffef15da3f5d292902f8:5f47d9fdffdc726bb8ebcfea67531d2574243c5d + * 1c4fe25dc386c77adaae12d6b1cd3abfa296fc3c:5f47d9fdffdc726bb8ebcfea67531d2574243c5d |\ - | * d817c466a639fca29059705144ef9f63e194c3b5:5d0da4f47308da86193b53b3374f5630c5a0fa3e - | * 28b0f8962384c35ff4f370c0fb8d75bc9b035248:b9d380f578c1cb2bb5039977f64ccf1a804a91de - | * 26cbb56df84c5e9fdce7afc7855025862e835ee2:105b58b790c53d350e23a51ad763a88e6b977ae7 - * 08158c6ba260a65db99c1e9e6f519e1963dff07b:6d18321f410e431cd446258dd5e01999306d9d44 - * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 + | * 17a13131b354b75d39aa29896f0500ac1b5e6764:5d0da4f47308da86193b53b3374f5630c5a0fa3e + | * 8516b8e4396bc91c72cec0038325d82604e8d685:b9d380f578c1cb2bb5039977f64ccf1a804a91de + | * 9f0db868b59a422c114df33bc6a8b2950f80490b:a087bfbdb1a5bad499b40ccd1363d30db1313f54 + * 74a368bd558785377d64ecdb3a47f2d1b4f25113:6d18321f410e431cd446258dd5e01999306d9d44 + * 26cbb56df84c5e9fdce7afc7855025862e835ee2:105b58b790c53d350e23a51ad763a88e6b977ae7 $ josh-filter -s :linear --update refs/heads/filtered + [1] :prefix=z [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,975d4c4975912729482cc864d321c5196a969271:prefix=x/z) [2] :rev(0000000000000000000000000000000000000000:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [2] :rev(0000000000000000000000000000000000000000:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [3] :linear - [5] :prefix=x [5] :prefix=y [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) + [6] :prefix=x $ git log --graph --decorate --pretty=%H:%T refs/heads/filtered * f8e8bc9daf54340c9fce647be467d2577b623bbe:5f47d9fdffdc726bb8ebcfea67531d2574243c5d * e707f76bb6a1390f28b2162da5b5eb6933009070:5d8a699f74b48c9c595f4615dd3755244e11d176 @@ -188,12 +197,12 @@ [2] :rev(0000000000000000000000000000000000000000:prefix=y,0b4cf6c9efbbda1eada39fa9c1d21d2525b027bb:prefix=z) [3] :linear [3] :rev(0000000000000000000000000000000000000000:prefix=x,0b4cf6c9efbbda1eada39fa9c1d21d2525b027bb:prefix=z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=y) - [5] :prefix=x [5] :prefix=y [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/y,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(975d4c4975912729482cc864d321c5196a969271:prefix=x/z,e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) [5] :rev(e707f76bb6a1390f28b2162da5b5eb6933009070:prefix=x/y) + [6] :prefix=x $ git log --graph --decorate --pretty=%H:%T refs/heads/filtered * 2944f04c33ea037f7696282bf20b2e570524552e:047b1b6f39e8d95b62ef7f136189005d0e3c80b3 diff --git a/tests/proxy/amend_patchset.t b/tests/proxy/amend_patchset.t index 5b9132dd8..e60bd6825 100644 --- a/tests/proxy/amend_patchset.t +++ b/tests/proxy/amend_patchset.t @@ -124,7 +124,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/authentication.t b/tests/proxy/authentication.t index c3a5bf8f6..0d887992c 100644 --- a/tests/proxy/authentication.t +++ b/tests/proxy/authentication.t @@ -124,7 +124,7 @@ "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/caching.t b/tests/proxy/caching.t index 198123dda..6fe2e6f79 100644 --- a/tests/proxy/caching.t +++ b/tests/proxy/caching.t @@ -51,7 +51,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf @@ -162,7 +162,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_absent_head.t b/tests/proxy/clone_absent_head.t index 4ec601ed2..9663cc77b 100644 --- a/tests/proxy/clone_absent_head.t +++ b/tests/proxy/clone_absent_head.t @@ -85,7 +85,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_all.t b/tests/proxy/clone_all.t index 997adf058..dfe84ea99 100644 --- a/tests/proxy/clone_all.t +++ b/tests/proxy/clone_all.t @@ -53,7 +53,7 @@ "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_blocked.t b/tests/proxy/clone_blocked.t index bdaeebff8..c3556d004 100644 --- a/tests/proxy/clone_blocked.t +++ b/tests/proxy/clone_blocked.t @@ -9,7 +9,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_invalid_url.t b/tests/proxy/clone_invalid_url.t index 78c9a577e..5638ff505 100644 --- a/tests/proxy/clone_invalid_url.t +++ b/tests/proxy/clone_invalid_url.t @@ -32,7 +32,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_locked_refs.t b/tests/proxy/clone_locked_refs.t index e289890de..6103ae643 100644 --- a/tests/proxy/clone_locked_refs.t +++ b/tests/proxy/clone_locked_refs.t @@ -111,7 +111,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_prefix.t b/tests/proxy/clone_prefix.t index f4c01ec47..a928e56c6 100644 --- a/tests/proxy/clone_prefix.t +++ b/tests/proxy/clone_prefix.t @@ -74,7 +74,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_sha.t b/tests/proxy/clone_sha.t index f94f6b783..2b1f6035f 100644 --- a/tests/proxy/clone_sha.t +++ b/tests/proxy/clone_sha.t @@ -98,7 +98,7 @@ Check (2) and (3) but with a branch ref "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_subsubtree.t b/tests/proxy/clone_subsubtree.t index 748f751c5..eea2ae17c 100644 --- a/tests/proxy/clone_subsubtree.t +++ b/tests/proxy/clone_subsubtree.t @@ -87,7 +87,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_subtree.t b/tests/proxy/clone_subtree.t index fa200a7e1..8f5bba9a6 100644 --- a/tests/proxy/clone_subtree.t +++ b/tests/proxy/clone_subtree.t @@ -85,7 +85,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_subtree_no_master.t b/tests/proxy/clone_subtree_no_master.t index c07d4a7ff..e1195d49f 100644 --- a/tests/proxy/clone_subtree_no_master.t +++ b/tests/proxy/clone_subtree_no_master.t @@ -78,7 +78,7 @@ "real_repo.git" = [":/sub1"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_subtree_tags.t b/tests/proxy/clone_subtree_tags.t index 5b9bb0240..1fbe4bc74 100644 --- a/tests/proxy/clone_subtree_tags.t +++ b/tests/proxy/clone_subtree_tags.t @@ -115,7 +115,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/clone_with_meta.t b/tests/proxy/clone_with_meta.t index 268558356..c35b2bb79 100644 --- a/tests/proxy/clone_with_meta.t +++ b/tests/proxy/clone_with_meta.t @@ -129,7 +129,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/empty_commit.t b/tests/proxy/empty_commit.t index 9a654ef69..126423fda 100644 --- a/tests/proxy/empty_commit.t +++ b/tests/proxy/empty_commit.t @@ -83,7 +83,7 @@ should still be included. "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/get_version.t b/tests/proxy/get_version.t index af1074b4e..4680a00a6 100644 --- a/tests/proxy/get_version.t +++ b/tests/proxy/get_version.t @@ -7,7 +7,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/import_export.t b/tests/proxy/import_export.t index 45e5cad73..0543b3ac3 100644 --- a/tests/proxy/import_export.t +++ b/tests/proxy/import_export.t @@ -301,7 +301,7 @@ Flushed credential cache "repo2.git" = [":prefix=repo2"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/join_with_merge.t b/tests/proxy/join_with_merge.t index 9fee18b4d..88a98c374 100644 --- a/tests/proxy/join_with_merge.t +++ b/tests/proxy/join_with_merge.t @@ -59,7 +59,7 @@ "real_repo.git" = [":prefix=sub1"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/markers.t b/tests/proxy/markers.t index a333c947b..5e2b4c73b 100644 --- a/tests/proxy/markers.t +++ b/tests/proxy/markers.t @@ -340,7 +340,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/no_proxy.t b/tests/proxy/no_proxy.t index c004c924d..59efe06f4 100644 --- a/tests/proxy/no_proxy.t +++ b/tests/proxy/no_proxy.t @@ -35,7 +35,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/no_proxy_lfs.t b/tests/proxy/no_proxy_lfs.t index c24c5663f..3ce7e01d9 100644 --- a/tests/proxy/no_proxy_lfs.t +++ b/tests/proxy/no_proxy_lfs.t @@ -50,7 +50,7 @@ $ bash ${TESTDIR}/destroy_test_env.sh . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_graphql.t b/tests/proxy/push_graphql.t index a9c1a8ba8..9e11441cd 100644 --- a/tests/proxy/push_graphql.t +++ b/tests/proxy/push_graphql.t @@ -69,7 +69,7 @@ "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_new_branch.t b/tests/proxy/push_new_branch.t index ab543e541..03f3205e5 100644 --- a/tests/proxy/push_new_branch.t +++ b/tests/proxy/push_new_branch.t @@ -114,7 +114,7 @@ Check the branch again ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_prefix.t b/tests/proxy/push_prefix.t index b82b4aeb2..f6498c5b5 100644 --- a/tests/proxy/push_prefix.t +++ b/tests/proxy/push_prefix.t @@ -56,7 +56,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_review.t b/tests/proxy/push_review.t index 9af9ccf95..89e5795bc 100644 --- a/tests/proxy/push_review.t +++ b/tests/proxy/push_review.t @@ -87,7 +87,7 @@ Make sure all temporary namespace got removed ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_review_already_in.t b/tests/proxy/push_review_already_in.t index 213c49100..d6dd0f8b9 100644 --- a/tests/proxy/push_review_already_in.t +++ b/tests/proxy/push_review_already_in.t @@ -48,7 +48,7 @@ test for that. "real_repo.git" = [] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_review_nop_behind.t b/tests/proxy/push_review_nop_behind.t index ce425f7e5..ec7e73c31 100644 --- a/tests/proxy/push_review_nop_behind.t +++ b/tests/proxy/push_review_nop_behind.t @@ -55,7 +55,7 @@ This is a regression test for that problem. "real_repo.git" = [] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_review_old.t b/tests/proxy/push_review_old.t index e29410cd8..2532f8af6 100644 --- a/tests/proxy/push_review_old.t +++ b/tests/proxy/push_review_old.t @@ -85,7 +85,7 @@ Flushed credential cache ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_review_topic.t b/tests/proxy/push_review_topic.t index 6c6d85cc6..719856a8c 100644 --- a/tests/proxy/push_review_topic.t +++ b/tests/proxy/push_review_topic.t @@ -42,7 +42,7 @@ Make sure all temporary namespace got removed ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_stacked.t b/tests/proxy/push_stacked.t index c96ad72dd..1ee3c9d81 100644 --- a/tests/proxy/push_stacked.t +++ b/tests/proxy/push_stacked.t @@ -151,7 +151,7 @@ Make sure all temporary namespace got removed ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_stacked_gerrit.t b/tests/proxy/push_stacked_gerrit.t index 6cfdc7fa9..ace09e144 100644 --- a/tests/proxy/push_stacked_gerrit.t +++ b/tests/proxy/push_stacked_gerrit.t @@ -134,7 +134,7 @@ Make sure all temporary namespace got removed "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_stacked_split.t b/tests/proxy/push_stacked_split.t index 089d5a2da..b0398820f 100644 --- a/tests/proxy/push_stacked_split.t +++ b/tests/proxy/push_stacked_split.t @@ -76,7 +76,7 @@ Make sure all temporary namespace got removed "real_repo.git" = ["::sub1/"] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_stacked_sub.t b/tests/proxy/push_stacked_sub.t index a7d50bb18..b07890d7e 100644 --- a/tests/proxy/push_stacked_sub.t +++ b/tests/proxy/push_stacked_sub.t @@ -132,7 +132,7 @@ Make sure all temporary namespace got removed ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_subdir_prefix.t b/tests/proxy/push_subdir_prefix.t index e6caec969..9bd1b98eb 100644 --- a/tests/proxy/push_subdir_prefix.t +++ b/tests/proxy/push_subdir_prefix.t @@ -48,7 +48,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_subtree.t b/tests/proxy/push_subtree.t index 70faaa30c..10f2758ce 100644 --- a/tests/proxy/push_subtree.t +++ b/tests/proxy/push_subtree.t @@ -90,7 +90,7 @@ Make sure all temporary namespace got removed ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/push_subtree_two_repos.t b/tests/proxy/push_subtree_two_repos.t index 367d5d691..db48d4d9e 100644 --- a/tests/proxy/push_subtree_two_repos.t +++ b/tests/proxy/push_subtree_two_repos.t @@ -118,7 +118,7 @@ Put a double slash in the URL to see that it also works ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/unrelated_leak.t b/tests/proxy/unrelated_leak.t index 4954abde3..cc03a84c9 100644 --- a/tests/proxy/unrelated_leak.t +++ b/tests/proxy/unrelated_leak.t @@ -133,7 +133,7 @@ Flushed credential cache ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace.t b/tests/proxy/workspace.t index 9cd33d984..ac74070ec 100644 --- a/tests/proxy/workspace.t +++ b/tests/proxy/workspace.t @@ -225,7 +225,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_create.t b/tests/proxy/workspace_create.t index 99c065fb6..21c8cbb74 100644 --- a/tests/proxy/workspace_create.t +++ b/tests/proxy/workspace_create.t @@ -442,7 +442,7 @@ Note that ws/d/ is now present in the ws ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_discover.t b/tests/proxy/workspace_discover.t index 3a8ea2dc6..51df2b341 100644 --- a/tests/proxy/workspace_discover.t +++ b/tests/proxy/workspace_discover.t @@ -102,7 +102,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_edit_commit.t b/tests/proxy/workspace_edit_commit.t index c683475df..5b1fe40c9 100644 --- a/tests/proxy/workspace_edit_commit.t +++ b/tests/proxy/workspace_edit_commit.t @@ -181,7 +181,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_in_workspace.t b/tests/proxy/workspace_in_workspace.t index 732e0e627..c85aad10f 100644 --- a/tests/proxy/workspace_in_workspace.t +++ b/tests/proxy/workspace_in_workspace.t @@ -245,7 +245,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_invalid_trailing_slash.t b/tests/proxy/workspace_invalid_trailing_slash.t index 649c6f472..53c12dbfa 100644 --- a/tests/proxy/workspace_invalid_trailing_slash.t +++ b/tests/proxy/workspace_invalid_trailing_slash.t @@ -184,7 +184,7 @@ Flushed credential cache ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_modify.t b/tests/proxy/workspace_modify.t index d637a0ddc..15bbd077a 100644 --- a/tests/proxy/workspace_modify.t +++ b/tests/proxy/workspace_modify.t @@ -441,7 +441,7 @@ Note that ws/d/ is now present in the ws ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_modify_chain.t b/tests/proxy/workspace_modify_chain.t index a14b0259e..81017c4d4 100644 --- a/tests/proxy/workspace_modify_chain.t +++ b/tests/proxy/workspace_modify_chain.t @@ -249,7 +249,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_modify_chain_prefix_subtree.t b/tests/proxy/workspace_modify_chain_prefix_subtree.t index 679f0b62f..5c784fd17 100644 --- a/tests/proxy/workspace_modify_chain_prefix_subtree.t +++ b/tests/proxy/workspace_modify_chain_prefix_subtree.t @@ -304,7 +304,7 @@ Note that ws/d/ is now present in the ws ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_pre_history.t b/tests/proxy/workspace_pre_history.t index 56629c528..f04e43971 100644 --- a/tests/proxy/workspace_pre_history.t +++ b/tests/proxy/workspace_pre_history.t @@ -88,7 +88,7 @@ file was created ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_publish.t b/tests/proxy/workspace_publish.t index af474b9cf..f70f4f946 100644 --- a/tests/proxy/workspace_publish.t +++ b/tests/proxy/workspace_publish.t @@ -125,7 +125,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf diff --git a/tests/proxy/workspace_tags.t b/tests/proxy/workspace_tags.t index 3a6026471..5d388fef2 100644 --- a/tests/proxy/workspace_tags.t +++ b/tests/proxy/workspace_tags.t @@ -231,7 +231,7 @@ ] . |-- josh - | `-- 18 + | `-- 19 | `-- sled | |-- blobs | |-- conf