Skip to content

Conversation

@barney-s
Copy link

@barney-s barney-s commented Jun 21, 2021

This is to avoid wedge cases where the worktree was created but this function error'd without cleaning the worktree.
Next timearound, the sync loop fails to create the worktree and bails out.

We observed a case where due to #412, the next sync loop failed with this error:
" Run(git worktree add /repo/root/rev-nnnn origin/develop): exit status 128: { stdout: "Preparing worktree (detached HEAD nnnn)\n", stderr: "fatal: '/repo/root/rev-nnnn' already exists\n" }"

Fixes #411

@k8s-ci-robot k8s-ci-robot requested review from stp-ip and thockin June 21, 2021 21:55
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jun 21, 2021
Copy link
Contributor

@nan-yu nan-yu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A minor comment. Otherwise, LGTM

Copy link
Member

@janetkuo janetkuo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change looks good. @nan-yu and @thockin to take a look as well.

Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

As discussed on chat - a small e2e for this would help a lot. This doesn't directly port to v4, and I don't mind adapting it myself, but that test would help :)

@barney-s barney-s force-pushed the 411 branch 2 times, most recently from c243c4a to 42903a2 Compare June 22, 2021 06:13
@barney-s
Copy link
Author

Thanks.

As discussed on chat - a small e2e for this would help a lot. This doesn't directly port to v4, and I don't mind adapting it myself, but that test would help :)

I tried doing this for the e2e but it passes even without my change.

I did mkdir $ROOT/$REV; touch $ROOT/$REV/file first.
The sync wasnt bothered by it.

Next it tried git -C "$REPO" worktree add "$ROOT"/"$REV" --no-checkout
Still the same thing.

So i could not write and effective test case.

Iam suspecting the container is cleaning up the worktree as part of startup ?

+##############################################
+# Test worktree-cleanup
+##############################################
+testcase "worktree-cleanup"
+
+echo "$TESTCASE" > "$REPO"/file
+git -C "$REPO" commit -qam "$TESTCASE"
+REV=$(git -C "$REPO" rev-list -n1 HEAD)
+git -C "$REPO" worktree add "$ROOT"/"$REV" --no-checkout 
+GIT_SYNC \
+    --one-time \
+    --repo="file://$REPO" \
+    --branch=e2e-branch \
+    --rev="$REV" \
+    --root="$ROOT" \
+    --dest="link" \
+    > "$DIR"/log."$TESTCASE" 2>&1
+assert_link_exists "$ROOT"/link
+assert_file_exists "$ROOT"/link/file
+assert_file_eq "$ROOT"/link/file "$TESTCASE"
+# Wrap up
+pass
+

@thockin
Copy link
Member

thockin commented Jun 22, 2021

Can you docker pause the git-sync container rather than restart it, so you can corrupt the directory underneath it?

@barney-s
Copy link
Author

Without fix, the test case fails:

+ docker run -i --rm --label git-sync-e2e=1075626333 --network=host -u 516392:89939 -v /tmp/git-sync-e2e.1075626333:/tmp/git-sync-e2e.1075626333:rw -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/slow_git.sh:/slow_git.sh:ro -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/askpass_git.sh:/askpass_git.sh:ro -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/test_sync_hook_command.sh:/test_sync_hook_command.sh:ro -v /tmp/git-sync-e2e.1075626333/dot_ssh/id_test:/etc/git-secret/ssh:ro --env XDG_CONFIG_HOME=/tmp/git-sync-e2e.1075626333 e2e/git-sync:v3.3.2-6-g42903a2-dirty__linux_amd64 --add-user --v=5 --wait=20 --repo=file:///tmp/git-sync-e2e.1075626333/repo --branch=e2e-branch --rev=HEAD --root=/tmp/git-sync-e2e.1075626333/root --dest=link
INFO: detected pid 1, running init handler
I0622 19:18:21.248821      13 main.go:507] "level"=0 "msg"="starting up" "pid"=13 "args"=["/git-sync","--add-user","--v=5","--wait=20","--repo=file:///tmp/git-sync-e2e.1075626333/repo","--branch=e2e-branch","--rev=HEAD","--root=/tmp/git-sync-e2e.1075626333/root","--dest=link"]
I0622 19:18:21.248939      13 main.go:852] "level"=0 "msg"="cloning repo" "origin"="file:///tmp/git-sync-e2e.1075626333/repo" "path"="/tmp/git-sync-e2e.1075626333/root"
I0622 19:18:21.248954      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="" "cmd"="git clone --no-checkout -b e2e-branch file:///tmp/git-sync-e2e.1075626333/repo /tmp/git-sync-e2e.1075626333/root"
I0622 19:18:21.321156      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git rev-parse HEAD"
I0622 19:18:21.323348      13 main.go:690] "level"=0 "msg"="syncing git" "rev"="HEAD" "hash"="f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec"
I0622 19:18:21.323376      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git fetch -f --tags origin e2e-branch"
I0622 19:18:21.337408      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git gc --prune=all"
I0622 19:18:21.378239      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git worktree add /tmp/git-sync-e2e.1075626333/root/f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec origin/e2e-branch --no-checkout"
I0622 19:18:21.386107      13 main.go:722] "level"=0 "msg"="adding worktree" "path"="/tmp/git-sync-e2e.1075626333/root/f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "branch"="origin/e2e-branch"
I0622 19:18:21.386268      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root/f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "cmd"="git reset --hard f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec"
I0622 19:18:21.390583      13 main.go:783] "level"=0 "msg"="reset worktree to hash" "path"="/tmp/git-sync-e2e.1075626333/root/f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "hash"="f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec"
I0622 19:18:21.390690      13 main.go:788] "level"=0 "msg"="updating submodules"
I0622 19:18:21.390727      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root/f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "cmd"="git submodule update --init --recursive"
I0622 19:18:21.442152      13 main.go:647] "level"=1 "msg"="creating tmp symlink" "root"="/tmp/git-sync-e2e.1075626333/root" "dst"="f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "src"="tmp-link"
I0622 19:18:21.442266      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="ln -snf f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec tmp-link"
I0622 19:18:21.443788      13 main.go:652] "level"=1 "msg"="renaming symlink" "root"="/tmp/git-sync-e2e.1075626333/root" "old_name"="tmp-link" "new_name"="link"
I0622 19:18:21.443819      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="mv -T tmp-link link"
I0622 19:18:21.447188      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git cat-file -t HEAD"
I0622 19:18:21.449384      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git rev-parse HEAD"
I0622 19:18:21.451536      13 main.go:569] "level"=1 "msg"="next sync" "wait_time"=20000000000
I0622 19:18:41.451994      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root/link" "cmd"="git rev-parse HEAD"
I0622 19:18:41.455153      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root/link" "cmd"="git ls-remote -q origin refs/heads/e2e-branch"
I0622 19:18:41.461151      13 main.go:995] "level"=0 "msg"="update required" "rev"="HEAD" "local"="f26a35bfbd87d025ead8d260b7b26a7c7ecae9ec" "remote"="19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b"
I0622 19:18:41.461254      13 main.go:690] "level"=0 "msg"="syncing git" "rev"="HEAD" "hash"="19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b"
I0622 19:18:41.461321      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git fetch -f --tags origin e2e-branch"
I0622 19:18:41.480851      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git gc --prune=all"
I0622 19:18:41.522462      13 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.1075626333/root" "cmd"="git worktree add /tmp/git-sync-e2e.1075626333/root/19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b origin/e2e-branch --no-checkout"
I0622 19:18:41.525274      13 main.go:722] "level"=0 "msg"="adding worktree" "path"="/tmp/git-sync-e2e.1075626333/root/19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b" "branch"="origin/e2e-branch"
E0622 19:18:41.525340      13 main.go:172] "msg"="too many failures, aborting" "error"="Run(git worktree add /tmp/git-sync-e2e.1075626333/root/19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b origin/e2e-branch --no-checkout): exit status 128: { stdout: "Preparing worktree (detached HEAD 19f0e0d)\n", stderr: "fatal: '/tmp/git-sync-e2e.1075626333/root/19f0e0d5d43de5e8be595acb1c5f40bb0dfc563b' already exists\n" }" "failCount"=0

With fix, the testcase passes:

+ docker run -i --rm --label git-sync-e2e=127887619 --network=host -u 516392:89939 -v /tmp/git-sync-e2e.127887619:/tmp/git-sync-e2e.127887619:rw -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/slow_git.sh:/slow_git.sh:ro -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/askpass_git.sh:/askpass_git.sh:ro -v /usr/local/google/home/barni/workspace/src/k8s.io/git-sync/test_sync_hook_command.sh:/test_sync_hook_command.sh:ro -v /tmp/git-sync-e2e.127887619/dot_ssh/id_test:/etc/git-secret/ssh:ro --env XDG_CONFIG_HOME=/tmp/git-sync-e2e.127887619 e2e/git-sync:v3.3.2-6-g42903a2-dirty__linux_amd64 --add-user --v=5 --wait=20 --repo=file:///tmp/git-sync-e2e.127887619/repo --branch=e2e-branch --rev=HEAD --root=/tmp/git-sync-e2e.127887619/root --dest=link
INFO: detected pid 1, running init handler
I0622 19:11:03.704452      12 main.go:507] "level"=0 "msg"="starting up" "pid"=12 "args"=["/git-sync","--add-user","--v=5","--wait=20","--repo=file:///tmp/git-sync-e2e.127887619/repo","--branch=e2e-branch","--rev=HEAD","--root=/tmp/git-sync-e2e.127887619/root","--dest=link"]
I0622 19:11:03.704626      12 main.go:852] "level"=0 "msg"="cloning repo" "origin"="file:///tmp/git-sync-e2e.127887619/repo" "path"="/tmp/git-sync-e2e.127887619/root"
I0622 19:11:03.704664      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="" "cmd"="git clone --no-checkout -b e2e-branch file:///tmp/git-sync-e2e.127887619/repo /tmp/git-sync-e2e.127887619/root"
I0622 19:11:03.775407      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git rev-parse HEAD"
I0622 19:11:03.777810      12 main.go:690] "level"=0 "msg"="syncing git" "rev"="HEAD" "hash"="b2cb0fadaac2adcd48440958429cd3d297a1dfc6"
I0622 19:11:03.777845      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git fetch -f --tags origin e2e-branch"
I0622 19:11:03.793344      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git gc --prune=all"
I0622 19:11:03.833887      12 main.go:679] "level"=1 "msg"="removing worktree" "path"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6"
I0622 19:11:03.833957      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git worktree prune"
I0622 19:11:03.836282      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git worktree add /tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6 origin/e2e-branch --no-checkout"
I0622 19:11:03.844065      12 main.go:722] "level"=0 "msg"="adding worktree" "path"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "branch"="origin/e2e-branch"
I0622 19:11:03.844477      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "cmd"="git reset --hard b2cb0fadaac2adcd48440958429cd3d297a1dfc6"
I0622 19:11:03.848607      12 main.go:783] "level"=0 "msg"="reset worktree to hash" "path"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "hash"="b2cb0fadaac2adcd48440958429cd3d297a1dfc6"
I0622 19:11:03.848647      12 main.go:788] "level"=0 "msg"="updating submodules"
I0622 19:11:03.848657      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "cmd"="git submodule update --init --recursive"
I0622 19:11:03.900621      12 main.go:647] "level"=1 "msg"="creating tmp symlink" "root"="/tmp/git-sync-e2e.127887619/root" "dst"="b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "src"="tmp-link"
I0622 19:11:03.900665      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="ln -snf b2cb0fadaac2adcd48440958429cd3d297a1dfc6 tmp-link"
I0622 19:11:03.902324      12 main.go:652] "level"=1 "msg"="renaming symlink" "root"="/tmp/git-sync-e2e.127887619/root" "old_name"="tmp-link" "new_name"="link"
I0622 19:11:03.902544      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="mv -T tmp-link link"
I0622 19:11:03.905322      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git cat-file -t HEAD"
I0622 19:11:03.907933      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git rev-parse HEAD"
I0622 19:11:03.910115      12 main.go:569] "level"=1 "msg"="next sync" "wait_time"=20000000000
I0622 19:11:23.910450      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/link" "cmd"="git rev-parse HEAD"
I0622 19:11:23.913109      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/link" "cmd"="git ls-remote -q origin refs/heads/e2e-branch"
I0622 19:11:23.920295      12 main.go:995] "level"=0 "msg"="update required" "rev"="HEAD" "local"="b2cb0fadaac2adcd48440958429cd3d297a1dfc6" "remote"="6ec5d987be25a8a705420d73d90ccfca0a5db15c"
I0622 19:11:23.920334      12 main.go:690] "level"=0 "msg"="syncing git" "rev"="HEAD" "hash"="6ec5d987be25a8a705420d73d90ccfca0a5db15c"
I0622 19:11:23.920344      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git fetch -f --tags origin e2e-branch"
I0622 19:11:23.942501      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git gc --prune=all"
I0622 19:11:23.988908      12 main.go:679] "level"=1 "msg"="removing worktree" "path"="/tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c"
I0622 19:11:23.989317      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git worktree prune"
I0622 19:11:23.991758      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git worktree add /tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c origin/e2e-branch --no-checkout"
I0622 19:11:23.999759      12 main.go:722] "level"=0 "msg"="adding worktree" "path"="/tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c" "branch"="origin/e2e-branch"
I0622 19:11:24.000007      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c" "cmd"="git reset --hard 6ec5d987be25a8a705420d73d90ccfca0a5db15c"
I0622 19:11:24.004250      12 main.go:783] "level"=0 "msg"="reset worktree to hash" "path"="/tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c" "hash"="6ec5d987be25a8a705420d73d90ccfca0a5db15c"
I0622 19:11:24.004273      12 main.go:788] "level"=0 "msg"="updating submodules"
I0622 19:11:24.004283      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root/6ec5d987be25a8a705420d73d90ccfca0a5db15c" "cmd"="git submodule update --init --recursive"
I0622 19:11:24.044927      12 main.go:647] "level"=1 "msg"="creating tmp symlink" "root"="/tmp/git-sync-e2e.127887619/root" "dst"="6ec5d987be25a8a705420d73d90ccfca0a5db15c" "src"="tmp-link"
I0622 19:11:24.044962      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="ln -snf 6ec5d987be25a8a705420d73d90ccfca0a5db15c tmp-link"
I0622 19:11:24.046075      12 main.go:652] "level"=1 "msg"="renaming symlink" "root"="/tmp/git-sync-e2e.127887619/root" "old_name"="tmp-link" "new_name"="link"
I0622 19:11:24.046099      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="mv -T tmp-link link"
I0622 19:11:24.048092      12 main.go:679] "level"=1 "msg"="removing worktree" "path"="/tmp/git-sync-e2e.127887619/root/b2cb0fadaac2adcd48440958429cd3d297a1dfc6"
I0622 19:11:24.048476      12 main.go:1047] "level"=5 "msg"="running command" "cwd"="/tmp/git-sync-e2e.127887619/root" "cmd"="git worktree prune"
I0622 19:11:24.050808      12 main.go:569] "level"=1 "msg"="next sync" "wait_time"=20000000000

Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the test case. Can you try to minimize the sleeps?

I agree with @nan-yu comment (https://github.com/kubernetes/git-sync/pull/414/files#r655741357) - just a short change to the comment there.

Other than that, LGTM

Copy link
Contributor

@nan-yu nan-yu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@barney-s
Copy link
Author

Thanks for the test case. Can you try to minimize the sleeps?

I agree with @nan-yu comment (https://github.com/kubernetes/git-sync/pull/414/files#r655741357) - just a short change to the comment there.

Other than that, LGTM

Reduced sleep. Addressed @nan-yu 's comment.

This is to avoid wedge cases where the worktree was created but this function error'd without cleaning the worktree.
Next timearound, the sync loop fails to create the worktree and bails out.

We observed a case where due to kubernetes#412, the next sync loop failed with this error:
" Run(git worktree add /repo/root/rev-nnnn origin/develop): exit status 128: { stdout: \"Preparing worktree (detached HEAD nnnn)\\n\", stderr: \"fatal: '/repo/root/rev-nnnn' already exists\\n\" }"
Copy link
Member

@thockin thockin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 22, 2021
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: barney-s, janetkuo, nan-yu, thockin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 22, 2021
@k8s-ci-robot k8s-ci-robot merged commit 9cd1e24 into kubernetes:release-3.x Jun 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

remove the worktree dir if it already exists

5 participants