Download raw body.
Fix regression: honor fetch_all_branches again
I was wondering why "got fetch" stopped fetching all branches of
FreeBSD src.git. That was a regression between 0.92 and 0.93.
got_repo_remote_repo_dup() fails to copy fetch_all_branches, which
means "fetch_all_branches yes" in got.conf is ignored.
ok?
-----------------------------------------------
commit 86770e34a698eafcf2372140ac1482ff51909f53 (local)
from: Christian Weisgerber <naddy@mips.inka.de>
date: Sat Sep 30 19:22:41 2023 UTC
honor fetch_all_branches configuration again
Fix a regression in db82695e31945b3ce001a5fb69674c3638622368 where
the fetch_all_branches configuration setting from got.conf was dropped
and always defaulted to "no".
Add regression test.
diff 1ef7649d68d2231933ee3e0059257bea8f3f8a7f 86770e34a698eafcf2372140ac1482ff51909f53
commit - 1ef7649d68d2231933ee3e0059257bea8f3f8a7f
commit + 86770e34a698eafcf2372140ac1482ff51909f53
blob - c428c4539fe5daebf60dc208642df9cafeb4a217
blob + b3b8dfbf8803c64c39fe81209b84b6fa8fd4d79a
--- lib/repository.c
+++ lib/repository.c
@@ -945,6 +945,8 @@ got_repo_remote_repo_dup(struct got_remote_repo **newp
new->mirror_references = repo->mirror_references;
+ new->fetch_all_branches = repo->fetch_all_branches;
+
new->nfetch_branches = repo->nfetch_branches;
if (repo->fetch_branches) {
new->fetch_branches = calloc(repo->nfetch_branches,
blob - 9691b8c6b78c7f1c45800d06ebdf34bbac31399f
blob + 43b93382975fd45e5fa0e500f6a776d9343347c1
--- regress/cmdline/fetch.sh
+++ regress/cmdline/fetch.sh
@@ -474,6 +474,49 @@ test_fetch_all() {
if [ $ret -ne 0 ]; then
diff -u $testroot/stdout.expected $testroot/stdout
fi
+
+ (cd $testroot/repo && git checkout -q foo)
+ echo "modified beta on foo" > $testroot/repo/beta
+ git_commit $testroot/repo -m "modified beta"
+ local commit_id2=`git_show_head $testroot/repo`
+
+ # set the default HEAD branch back to master
+ (cd $testroot/repo && git checkout -q master)
+
+ # remove default branch from got.conf, fetch all branches
+ ed -s $testroot/repo-clone/got.conf <<-EOF
+ /branch {/c
+ fetch_all_branches yes
+ .
+ w
+ EOF
+
+ got fetch -q -r $testroot/repo-clone
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ echo "got fetch command failed unexpectedly" >&2
+ test_done "$testroot" "$ret"
+ return 1
+ fi
+
+ got ref -l -r $testroot/repo-clone > $testroot/stdout
+
+ echo "HEAD: refs/heads/master" > $testroot/stdout.expected
+ echo "refs/heads/foo: $commit_id" >> $testroot/stdout.expected
+ echo "refs/heads/master: $commit_id" >> $testroot/stdout.expected
+ echo "refs/remotes/origin/HEAD: refs/remotes/origin/master" \
+ >> $testroot/stdout.expected
+ echo "refs/remotes/origin/foo: $commit_id2" >> $testroot/stdout.expected
+ echo "refs/remotes/origin/master: $commit_id" \
+ >> $testroot/stdout.expected
+ # refs/hoo/boo/zoo is missing because it is outside of refs/heads
+ echo "refs/tags/1.0: $tag_id" >> $testroot/stdout.expected
+
+ cmp -s $testroot/stdout $testroot/stdout.expected
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ diff -u $testroot/stdout.expected $testroot/stdout
+ fi
test_done "$testroot" "$ret"
}
--
Christian "naddy" Weisgerber naddy@mips.inka.de
Fix regression: honor fetch_all_branches again