gpt4 book ai didi

Git 从 Netbeans 推送到 Gerrit

转载 作者:太空狗 更新时间:2023-10-29 13:47:12 26 4
gpt4 key购买 nike

我在从 Netbeans 7.4(在 Linux 上)推送提交以供审查时遇到问题。我的 git 配置:

[core]        repositoryformatversion = 0        filemode = true        logallrefupdates = true        bare = false[remote "origin"]        url = ssh://xxx@git.yyyy.com:9418/xxx/gitTestWeb3        fetch = +refs/heads/master:refs/remotes/origin/master        push = HEAD:refs/for/master[user]        name = Mxxx Cxxx        email = xxxx@yyyy.com[branch "master"]        remote = origin        merge = refs/for/master[push]        default = upstream

当我尝试启动“Git -> Remote -> Push to Upstream”时,我收到“No tracked remote branch specified for local master”错误。当我使用“Git -> Remote -> Push...”时,我的提交总是直接添加到 master 分支。 Netbeans 日志:

==[IDE]== 2014-02-24 16:37:53 Pushing - gitTestWeb3git branchgit remote -vsetting up remote: origingit push ssh://xxx@git.yyyy.com:9418/xxx/gitTestWeb3 refs/heads/master:refs/heads/masterRemote Repository UpdatesBranch Update : masterOld Id        : 38806fc76a933f4538a5f0b9fc500bd69309fabaNew Id        : 38806fc76a933f4538a5f0b9fc500bd69309fabaResult        : UP_TO_DATELocal Repository UpdatesBranch Update : origin/masterOld Id        : 9d048427bb50d7de642083a903a18a11568eadecNew Id        : 38806fc76a933f4538a5f0b9fc500bd69309fabaResult        : FAST_FORWARD==[IDE]== 2014-02-24 16:37:54 Pushing - gitTestWeb3 finished.

是否有任何方法可以强制 Neteans git 插件支持 git 配置?或者我应该配置其他东西吗?

顺便说一句,它还表明 git hooks 没有被触发;我安装了 Gerrit 的 commit-msg,但是 NB commit 后没有修改消息;从命令行它完美地工作。

BTW2 完全相同的 git 配置与 eclipse (event Juno) 完美配合。提取是从 master 完成的,而所有推送都到达 refs/for/master 以供审查。

最佳答案

为了在 IDE 中实现这一点(这里使用“从 IDE 中”的松散定义),我不得不自己动手做一些工作。希望 NetBeans 团队或社区中有时间的一些英雄能够根据 repo 类型和已安装的 Hook 从 IDE 中的提交对话框中完成这项工作。只要您的终端在 NetBeans(在我的例子中是 Windows 上的 Cygwin)中工作,您就可以很容易地获得您需要的 Hook 消息 Change Id,并且还可以让 Gerrit 发布工作。

我首先将钩子(Hook)中的 commit-msg 复制到我的路径中的一个目录(我的用户的 bin),并在脚本的最后一行添加了 $@ 以便脚本的功能可以从命令行调用。然后我添加了一个用于调用它的别名,以及另一个用于从我的本地存储库执行 Gerrit 发布的别名。我还在 NetBeans 提交对话框的“加载模板” pop 对话框中创建了一个简单的提交消息模板,如下所示:

Change-Id: I

在提交消息中预先填充这个很好,因为它提醒我(我们刚刚开始使用 Gerrit)需要完成代码审查,我需要填写其余的更改 ID。这是我的 .bashrc 别名:

alias getChangeId="commit-msg _gen_ChangeId 2>/dev/null"

在获取消息的其余更改 ID 部分并在其上方添加任何其他行以进行更改和提交之后,我准备好从分支根目录的命令行调用别名以发布到 Gerrit .就是这样:

alias gerritPublish='_gerritPublish'
_gerritPublish ()
{
localBranch=`git rev-parse --abbrev-ref HEAD`
git push -u --progress "origin" HEAD:refs/publish/dev/$localBranch
}

在 IDE 的提交对话框中,Amend Last Commit 仍然可以正常工作,并填写正确的消息和更改 ID,所以拥有它真是太好了。我喜欢使用 IDE 的提交对话框而不是单独的命令行,因为它非常适合内置并排比较。尽管如此,所有这些都没有我想要的那么干净,但它目前运行良好,我不必启动任何其他工具或离开 NetBeans,所以我希望它有所帮助。

关于Git 从 Netbeans 推送到 Gerrit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992512/

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