- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在尝试执行 gerrit-cherry-pick
时遇到以下错误,我执行了 git remote -v
并且可以看到 origin
指向 ssh://waccount@tech-gerrit.sd.company.com:29418/tech-ci.git
,任何人都可以提供有关为什么会出现此错误的指导吗?如何进一步调试并修复它?
2018-08-09 21:13:15 change-merged runCmd 169 INFO : Running command git --git-dir=/gerrit_v2/hooks/tech_projects/tech-ci/.git --work-tree=/gerrit_v2/hooks/tech_projects/tech-ci remote -v
2018-08-09 21:13:15 change-merged runCmd 173 INFO :
origin ssh://waccount@tech-gerrit.sd.company.com:29418/tech-ci.git (fetch)
origin ssh://waccount@tech-gerrit.sd.company.com:29418/tech-ci.git (push)
2018-08-09 21:13:15 change-merged runCmd2 180 INFO : Running command /gerrit_v2/hooks/gerrit-cherry-pick origin 20633/2
2018-08-09 21:13:15 change-merged runCmd2 187 INFO : fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Gerrit-cherry-pick:
usage() {
echo >&2 "usage: $0 remote changeid..."
echo >&2 "usage: $0 --continue"
echo >&2 "usage: $0 --skip"
echo >&2 "usage: $0 --abort"
echo >&2 "usage: $0 [--close|--replace] remote"
exit 1
}
die() {
echo >&2 "fatal: $1"
exit 1
}
GIT_DIR=$(git rev-parse --git-dir) || exit
CL="$GIT_DIR/GERRIT_CHANGES"
STATE="$GIT_DIR/rebase-gerrit"
TODO="$STATE/todo"
RESOLVEMSG="
When you have resolved this problem run \"$0 --continue\".
If you would prefer to skip this patch, run \"$0 --skip\".
"
pop_action() {
sed -e 1d <"$TODO" >>"$TODO".new
mv -f "$TODO".new "$TODO"
}
mark_done() {
read commit changeid <"$TODO"
changeid=$(get_changeid "$changeid")
head_after=$(git rev-parse HEAD^0)
head_before=$(cat "$STATE/head_before")
if ! test $head_after = $head_before
then
echo $head_after >"$CL/$changeid"
fi
pop_action
}
do_next() {
while test -s "$TODO"
do
read commit changeid <"$TODO"
git rev-parse HEAD^0 >"$STATE/head_before"
git format-patch \
-k --stdout --full-index --ignore-if-in-upstream \
$commit^..$commit |
git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" || exit
mark_done
done
echo >&2 "Done."
rm -rf "$STATE"
}
git_am_opt=
if test -f "$STATE/git_am_opt"
then
git_am_opt=$(cat "$STATE/git_am_opt")
fi
while test $# != 0
do
case "$1" in
--continue)
test -f "$TODO" || die "No cherry-pick in progress?"
git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" --resolved || exit
mark_done
do_next
exit
;;
--skip)
test -f "$TODO" || die "No cherry-pick in progress?"
git reset --hard HEAD || exit
git am --skip || exit
pop_action
do_next
exit
;;
--abort)
test -f "$TODO" || die "No cherry-pick in progress?"
git reset --hard HEAD
git am --skip
rm -rf "$STATE"
;;
--close|--replace)
shift
test -d "$CL" || die "No changes to close"
test $# = 1 || usage
remote=$1
printf %s "git push $remote" >&2
rs=$(cd "$CL" && for change_id in *; do
test "$change_id" = '*' && die "No changes to close"
c=$(cat "$change_id");
echo "$c:refs/changes/$change_id";
echo ' \' >&2;
printf %s " $c:refs/changes/$change_id" >&2
done)
echo >&2
echo >&2
git push $remote $rs
rc=$?
test $rc = 0 && rm -rf "$CL"
exit $rc
;;
--whitespace=*)
git_am_opt="$git_am_opt $1"
;;
--committer-date-is-author-date|--ignore-date)
git_am_opt="$git_am_opt $1"
;;
-C*)
git_am_opt="$git_am_opt $1"
;;
-s|--signoff)
git_am_opt="$git_am_opt $1"
;;
-*)
usage
;;
*)
break
;;
esac
shift
done
get_changeid() {
case $1 in
*/*) echo ${1%%/*} ;;
*) echo $1 ;;
esac
}
to_ref() {
case $1 in
*/*)
change_id=${1%%/*}
patchset_id=${1##*/}
;;
*)
change_id=$1
patchset_id=1
;;
esac
hash=$(($change_id % 100))
case $hash in
[0-9]) hash="0$hash" ;;
esac
echo "refs/changes/$hash/$change_id/$patchset_id"
}
get_revid() {
grep $(to_ref $1) <"$GIT_DIR/FETCH_HEAD" | cut -f1
}
# Initialize state
#
test $# -lt 2 && usage
remote="$1"
shift
mkdir "$STATE" || die "cherry-pick already in progress"
echo $git_am_opt >"$STATE/git_am_opt"
if ! git fetch $remote $(for id; do to_ref $id; done)
then
rm -rf $STATE
exit 1
fi
(for id
do
if revid=$(get_revid $id)
then
echo "$revid $id"
else
echo >&2 "fatal: $id not found"
exit 1
fi
done) >"$TODO"
mkdir -p "$CL"
echo >&2
do_next
最佳答案
这表明执行该命令的用户帐户没有在 ~waccount/.ssh/authorized_keys
中注册的 ~/.ssh/id_rsa.pub
默认公共(public) SSH key > 在 tech-gerrit.sd.company.com
服务器上。
如果可能,尝试在相同的命令序列中执行
ssh -Tv -p 2941 waccount@tech-gerrit.sd.company.com
这将显示有关失败的连接尝试的更多详细信息。
如果不可能,请尝试并确保环境变量 GIT_SSH_COMMAND
设置为“ssh -v
”。
关于git - gerrit-cherry-pick :fatal: 'origin' does not appear to be a git repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51779013/
我们的团队使用一种标准,在所有提交消息前加上“bz12345:”(其中 12345 被您正在处理的错误替换),我希望能够搜索具有该错误编号的所有提交。 我已阅读 http://gerrit.googl
Gerrit Review 中的“跟进”按钮有什么作用?什么时候应该使用它? 我正在使用 Gerrit 2.13.8。 最佳答案 我看到提到了这个功能here因为我自己也很好奇,所以也尝试了一下。 .
我想从 Gerrit 复制一小段代码,但行号也被复制了。有什么办法可以去掉这些行号吗? 最佳答案 IE 的更新:安装一个 page-css-editing 插件,如“Internet Explorer
我们在 Gerrit 中有一个隐藏的项目。我对这个“功能”有两个问题: 在哪里可以在磁盘或数据库上找到此设置,以便验证项目的状态? 如何使隐藏的项目再次激活? 我是 Gerrit 的管理员,并且可以通
如何订阅 gerrit 项目,以便在上传新更改时收到通知。 谢谢, 拉维 最佳答案 Settings->Watched Projects->Browse,选择合适的项目,如果需要输入分支名称,点击Wa
我有一个名为“UI_Developers”的 gerrit 组 我正在使用以下命令提交我的更改以供审核: git push origin HEAD:refs/for/master%r=abc@morg
我正在 gerrit 中为我的公司设置访问控制,并且在我们当前的内部流程中,同行评审员和编码员(他们往往是同一群人)之间存在交叉。我们还希望只需要 1 个审阅者对代码进行同行评审,如果看起来不错就提交
我目前正在使用 Gerrit 来管理一个项目,我收到了有关 gerrit 太健谈的投诉。是否有办法过滤谁收到哪些电子邮件(即代码审查所有者收到所有电子邮件,而审查者仅在添加到新代码审查或添加新补丁集时
我以前都是写commit message来连接issue系统的,比如issue #9548,redmine起始页是固定的,不知道是否可以在gerrit系统中用hook或者plugin的方式写。 因此,
我的 gerrit 废弃提交中有一些更改,有什么方法可以再次合并它吗? 最佳答案 您可以: 点击更改(“重新调整基础以解决合并冲突”文本) 点击“恢复”按钮重新打开更改 关于gerrit - 如何找回
问题 您如何搜索过去从给定审阅者那里收到过 CodeReview-2 的提交? 上下文 基本上,我想对我曾经拒绝过的每一个提交进行回顾,以便我可以将这些评论分享给更多人。使用搜索词 reviewer:
在我们的Gerrit installation中(2.8.1-2-g724b796) 我想搜索我的无法合并但必须重新设置基础的变更集。例如,this change将“可以合并”设置为“否”,并且需要手
我想使用 gerrit web UI 添加一个新的用户/用户组,但是,我无法看到任何方法来做到这一点。命令行对于多个用户来说太乏味了。有人可以首先告诉这是否可能吗? 我正在使用 gerrit 2.9.
如果我对 Gerrit 中的一项更改有多个补丁集版本,则似乎我只能提交最新的补丁集版本(因为只有一个具有必要的按钮)。有没有简单的方法来代替 提交旧补丁集版本之一 相同的变化,只在那个 Gerrit
我想更改默认的 Gerrit commit-msg Hook 以自动添加 Signed-off-by。但是,我在 Gerrit 服务器中找不到文件 commit-msg,似乎 commit-msg 包
我在 Gerrit 上有一个正在审查的补丁列表(31 个补丁,一个接一个),我想知道如何在我的本地 git 上一次拉取它们。 我知道可以通过图形界面下载补丁: Checkout: git fetch
我正在尝试对 gerrit 事件执行一些操作 添加/创建新存储库时。 创建新补丁集时。 当更改 merge 到特定分支时。 想法是在任何存储库中发生上述任何情况时在 API 端点上获取事件。 我在 A
首先,我有一些零碎的理解。 我想要的是使用 gerrit 更改网址 :- http://review.xx.yy.com/gerrit/#/c/240262/ 我想通过使用 REST API(使用 c
我的工作场所开始使用 Gerrit 来管理我们所有的项目。我以前从未使用过 Gerrit。我正在尝试找出一个好的工作流程来使用它来提交代码以供审核。 我创建了一个分支foo。我做出了 promise
试图理解 gerrit 中的 refs/for/refs/* 功能。这个问题与 refs/for/master 无关。 我们什么时候可以使用这个 refs/for/refs/* 功能。 有人可以为此解
我是一名优秀的程序员,十分优秀!