gpt4 book ai didi

git - 如何指定在 git 中使用哪个 SSH key 进行 git push 以便将 gitorious 作为镜像?

转载 作者:IT王子 更新时间:2023-10-29 00:51:46 25 4
gpt4 key购买 nike

我在 git.debian.org (alioth) 上托管了一个项目,我想配置一个接收后 Hook 来更新 http://gitorious.org 上的存储库镜像。

我想我必须使用 git push --mirror gitorious

现在,我需要让 Alioth 在 gitorious 上获得授权才能成功推送。我该怎么做?

我想我需要在 gitorious 上配置一个用户并为其创建一个 ssh key 。然后当我在接收后 Hook 中执行 git push 时,确保使用了这个 ssh key 。

我可以使用 ~/.ssh/config 但问题是许多用户可以在 alioth 上推送,每个人都必须登录并配置 ~/.ssh/配置。相反,我想要一个命令行选项或一个环境变量来告诉 ssh 使用哪个 key 。我可以这样做吗?

此外,您对如何实现镜像有其他想法吗?而且,是否有可能以其他方式配置它(gitorious push alioth)?

最佳答案

答案可以在 git reference manual 中找到.

GIT_SSH

If this environment variable is set then git fetch and git push will use this command instead of ssh when they need to connect to a remote system. The $GIT_SSH command will be given exactly two arguments: the username@host (or just host) from the URL and the shell command to execute on that remote system.

To pass options to the program that you want to list in GIT_SSH you will need to wrap the program and options into a shell script, then set GIT_SSH to refer to the shell script.

Usually it is easier to configure any desired options through your personal .ssh/config file. Please consult your ssh documentation for further details.

所以,我需要写一个包装脚本,我写了这个push-gitorious.sh脚本:

#!/bin/sh


if [ "run" != "$1" ]; then
exec ssh -i "$GITORIOUS_IDENTITY_FILE" -o "StrictHostKeyChecking no" "$@"
fi

remote=YOUR_SSH_GITORIOUS_URL

echo "Mirroring to $remote"

export GITORIOUS_IDENTITY_FILE="`mktemp /tmp/tmp.XXXXXXXXXX`"
export GIT_SSH="$0"

cat >"$GITORIOUS_IDENTITY_FILE" <<EOF
YOUR SSH PRIVATE KEY

EOF
cat >"$GITORIOUS_IDENTITY_FILE.pub" <<EOF
YOUR SSH PUBLIC KEY

EOF

#echo git push --mirror "$remote"
git push --mirror "$remote"

rm -f "$GITORIOUS_IDENTITY_FILE"
rm -f "$GITORIOUS_IDENTITY_FILE.pub"

exit 0

当然要填写私钥(公钥在脚本里有,仅供引用,还需要填写gitorious URL

在 post-receive 钩子(Hook)中,你必须放置:

path/to/push-gitorious.sh run

run选项很重要,否则会直接运行ssh。

警告:没有对远程主机身份进行检查。如果需要,您可以从 ssh 命令行中删除该选项并自定义 known_hosts。在这个用例中,我认为这并不重要。

关于git - 如何指定在 git 中使用哪个 SSH key 进行 git push 以便将 gitorious 作为镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3496037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com