2014-02-24 72 views
4

從Netbeans 7.4(在Linux上)推送提交給Gerrit的提交時遇到問題。我的混帳配置:從Netbeans推送到Gerrit的Git

 
[core] 
     repositoryformatversion = 0 
     filemode = true 
     logallrefupdates = true 
     bare = false 
[remote "origin"] 
     url = ssh://[email protected]:9418/xxx/gitTestWeb3 
     fetch = +refs/heads/master:refs/remotes/origin/master 
     push = HEAD:refs/for/master 
[user] 
     name = Mxxx Cxxx 
     email = [email protected] 
[branch "master"] 
     remote = origin 
     merge = refs/for/master 
[push] 
     default = 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://[email protected]: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的配置?或者我應該配置別的東西?

順便說一句,它也接縫,git鉤子不被解僱;我已經安裝了Gerrit的commit-msg,但NB提交後沒有修改消息;從命令行它完美地工作。

BTW2完全相同的git配置與eclipse(事件Juno)完美結合。提取是由主人完成,而所有的推動來到refs/for/master進行審查。

+0

這樣做有沒有想通?我正在NB 8.0.1中工作,並希望嘗試它,但我希望有人已經審查過它。 – idclaar

回答

0

爲了從IDE中獲得這個工作(在這裏使用了「從IDE開始」的一個稍微鬆散的定義),我不得不自己推出一些。希望NetBeans團隊或有時間掌握的社區中的某位英雄能夠根據回購類型和安裝的鉤子從IDE中的提交對話框中獲得此工作。只要你的終端在NetBeans中工作(在我的情況下是Windows上的Cygwin),你可以很容易地獲得你需要的鉤子消息Change Id,並且也可以讓Gerrit發佈工作。

我首先將commit-msg鉤子複製到我的路徑(我的用戶的bin)中的一個目錄中,並在腳本的最後一行添加[email protected],以便可以從命令行調用腳本的功能。然後我添加了一個用於調用它的別名,以及用於從本地回購庫執行Gerrit發佈的另一個別名。我還創建在NetBeans簡單的提交信息模板提交對話框中的「加載模板」彈出對話框,如下所示:

Change-Id: I 

有了這個獲得預填充值的信息是很好的,因爲它讓我想起了(我們只是開始使用Gerrit)代碼審查需要完成,我需要填寫其餘的變更ID。這是我做這件事的.bashrc別名:

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

得到消息的改變ID部分的其餘部分,添加任何其他線路上面的變化和commiting後,我準備打電話給別名從我的分支根目錄的命令行發佈到Gerrit。下面是:

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

的修改最後一次提交仍然IDE的提交對話框工作正常,並且正確的消息在填充和更換ID,所以這是不錯的。我喜歡使用IDE的提交對話框,而不是單獨使用命令行,因爲它的內置並行處理功能非常棒。儘管如此,所有這些都沒有我想要的那麼幹淨,但現在它運行良好,而且我不必啓動任何其他工具或離開NetBeans,所以我希望它有所幫助。