Git从Netbeans推到Gerrit

时间:2014-02-24 15:55:09

标签: git netbeans gerrit

我在从Netbeans 7.4(在Linux上)向Gerrit提交审核提交时遇到了问题。我的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”时,我收到“没有为本地主机指定的跟踪远程分支”错误。当我使用“Git - > Remote - > Push ...”时,我的提交总是直接添加到主分支。 Netbeans日志:

==[IDE]== 2014-02-24 16:37:53 Pushing - gitTestWeb3
git branch
git remote -v
setting up remote: origin
git push ssh://xxx@git.yyyy.com:9418/xxx/gitTestWeb3 refs/heads/master:refs/heads/master
Remote Repository Updates
Branch Update : master
Old Id        : 38806fc76a933f4538a5f0b9fc500bd69309faba
New Id        : 38806fc76a933f4538a5f0b9fc500bd69309faba
Result        : UP_TO_DATE

Local Repository Updates
Branch Update : origin/master
Old Id        : 9d048427bb50d7de642083a903a18a11568eadec
New Id        : 38806fc76a933f4538a5f0b9fc500bd69309faba
Result        : FAST_FORWARD

==[IDE]== 2014-02-24 16:37:54 Pushing - gitTestWeb3 finished.

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

BTW它也接缝git hooks没有被解雇;我安装了Gerrit的commit-msg,但是在NB提交后没有修改消息;它从命令行运行得很好。

BTW2完全相同的git配置与eclipse(事件Juno)完美配合。从主人那里获取提取物,而所有推动都来自refs / for / master进行审查。

1 个答案:

答案 0 :(得分:0)

为了让这个从IDE工作(使用稍微宽松的定义"来自IDE"这里),我不得不自己动手。希望NetBeans团队或社区中的一些有时间的英雄将根据repo类型和已安装的钩子从IDE中的提交对话框中获得此功能。只要您的终端在NetBeans中运行(在我的情况下是Windows上的Cygwin),您就可以非常轻松地获取所需的挂钩消息Change Id,并且还可以使Gerrit发布工作。

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

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
}

Amend Last Commit仍然可以在IDE的提交对话框中正常工作,并填写正确的消息并更改ID,这样很高兴。我喜欢使用IDE的提交对话框,而不仅仅是命令行,因为它具有很好的内置并排功能。尽管如此,所有这些并不像我想的那么干净,但它现在运行良好,而且我不需要启动任何其他工具或离开NetBeans,所以我希望它帮助