This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 250370 - git pull with non-conflict merge always causes NoMessageException: commit message not specified
Summary: git pull with non-conflict merge always causes NoMessageException: commit mes...
Status: RESOLVED FIXED
Alias: None
Product: versioncontrol
Classification: Unclassified
Component: Git (show other bugs)
Version: 8.0.2
Hardware: PC Linux
: P3 normal (vote)
Assignee: Ondrej Vrabec
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-02-11 13:49 UTC by fwelland
Modified: 2015-02-15 06:50 UTC (History)
1 user (show)

See Also:
Issue Type: ENHANCEMENT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description fwelland 2015-02-11 13:49:08 UTC
On a GIT branch, I will issue a git pull to make sure I have all the latest from 'master' prior to any push and subsequent pull requests.    In most cases, pull will suck over some non-conflicting changes into my branch. 

I response to rebase/merge dialog -- I select merge.   To which I always get a dialog with:   

NoMessageException: commit message not specified


dropping back to cli, a git status shows some uncommited stuff that came over with the pull/merge.    A simple get commit will commit and dump me into my CLI comment editor (vim) with a comment already there.    Simply accepting the default comment; I can continue and the commit succeeds.    

This used to not happen.   I tend to be bleeding edge but only GA stuff.   I don't think 8 or 801 worked this way and I am pretty confident 7.x didn't.   

Further in past, I distinctly remember seeing auto generated comments during pull requests, indicating NB did a merge and then commit for me on non-conflicting pulls. 

So I the auto merge after pull is goofed up a bit. 



Particulars:
Product Version: NetBeans IDE 8.0.2 (Build 201411181905)
Java: 1.7.0_75; Java HotSpot(TM) 64-Bit Server VM 24.75-b04
Runtime: Java(TM) SE Runtime Environment 1.7.0_75-b13
System: Linux version 3.18.5-201.fc21.x86_64 running on amd64; UTF-8; en_US (nb)
User directory: /home/fwelland/.netbeans/8.0.1
Cache directory: /home/fwelland/.cache/netbeans/8.0.1



IDE LOG stack trace:

INFO [org.netbeans.modules.git]: org.eclipse.jgit.api.errors.NoMessageException: commit message not specified
org.eclipse.jgit.api.errors.NoMessageException: commit message not specified
	at org.eclipse.jgit.api.CommitCommand.processOptions(CommitCommand.java:530)
	at org.eclipse.jgit.api.CommitCommand.call(CommitCommand.java:163)
	at org.eclipse.jgit.api.MergeCommand.call(MergeCommand.java:367)
	at org.netbeans.libs.git.jgit.commands.MergeCommand.run(MergeCommand.java:99)
Caused: org.netbeans.libs.git.GitException
	at org.netbeans.libs.git.jgit.commands.MergeCommand.run(MergeCommand.java:108)
	at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:80)
	at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:77)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.netbeans.libs.git.jgit.commands.GitCommand.execute(GitCommand.java:77)
	at org.netbeans.libs.git.GitClient.merge(GitClient.java:965)
	at org.netbeans.modules.git.client.GitClient$39.call(GitClient.java:630)
	at org.netbeans.modules.git.client.GitClient$39.call(GitClient.java:626)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker$1$1.call(GitClient.java:887)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker$1.call(GitClient.java:906)
	at org.netbeans.modules.git.FilesystemInterceptor.runWithoutExternalEvents(FilesystemInterceptor.java:480)
	at org.netbeans.modules.git.Git.runWithoutExternalEvents(Git.java:282)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethodIntern(GitClient.java:916)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:847)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:829)
	at org.netbeans.modules.git.client.GitClient$CommandInvoker.access$400(GitClient.java:823)
	at org.netbeans.modules.git.client.GitClient.merge(GitClient.java:626)
	at org.netbeans.modules.git.ui.fetch.PullAction$GitProgressSupportImpl$Merge.call(PullAction.java:328)
	at org.netbeans.modules.git.ui.fetch.PullAction$GitProgressSupportImpl$Merge.call(PullAction.java:315)
	at org.netbeans.modules.git.ui.fetch.PullAction$GitProgressSupportImpl$1.call(PullAction.java:230)
	at org.netbeans.modules.git.ui.fetch.PullAction$GitProgressSupportImpl$1.call(PullAction.java:205)
	at org.netbeans.modules.versioning.indexingbridge.Bridge$1.call(Bridge.java:64)
	at org.netbeans.modules.parsing.api.indexing.IndexingManager.runProtected(IndexingManager.java:396)
	at org.netbeans.modules.versioning.indexingbridge.Bridge.runWithoutIndexing(Bridge.java:59)
	at org.netbeans.modules.versioning.util.IndexingBridge.runWithoutIndexing(IndexingBridge.java:139)
	at org.netbeans.modules.versioning.util.IndexingBridge.runWithoutIndexing(IndexingBridge.java:102)
	at org.netbeans.modules.git.utils.GitUtils.runWithoutIndexing(GitUtils.java:927)
[catch] at org.netbeans.modules.git.ui.fetch.PullAction$GitProgressSupportImpl.perform(PullAction.java:205)
	at org.netbeans.modules.git.client.GitProgressSupport.performIntern(GitProgressSupport.java:114)
	at org.netbeans.modules.git.client.GitProgressSupport.run(GitProgressSupport.java:107)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1423)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
Comment 1 Ondrej Vrabec 2015-02-11 14:30:43 UTC
I don't know how to reproduce, it does not happen to me.
When this happens and before you fix it by committing from CLI, could you check that .git/MERGE_MSG exists and contains a meaningful message?
Comment 2 Ondrej Vrabec 2015-02-11 14:33:35 UTC
.. pls check also that .git/MERGE_HEAD exists
Comment 3 Ondrej Vrabec 2015-02-11 14:41:15 UTC
sorry, it's me again. Could you please list all the files inside .git folder of the project you're pulling to right after it happens again?
'ls -la .git'
thanks
Comment 4 fwelland 2015-02-12 13:23:18 UTC
Sorry for the delay.   Ok I am reproducing now...

So I am on a branch "myfixes".   I have done my stuff, and plan to commit and push up to remote branch "myfixes" and make a request that "myfixes" get merged into "master".      

Proceduraly and because atalassian stash pretty much forces it; I do a pull from remote NB.   In the remote branches dialogue, I select NONE and then find master->origin/master and put a check on that.   The dialogue indicates that branch origin/master will be merged into current branch myfixes.    I hit the finish button. 

Now I know yesterday, some other people on my team have pushed their branches up and issued PRs to master and those PRs were merged.   So my 'myfixes' branch that contains my work is behind master by a commit or two.   Almost always, the PR/commits to master are in other areas that do not conflict with my work. 

After the finish button, NB/Git prompts me for the Merge Commit Needed in order to synch with origin/master.    Generally we/I merge instead of rebase.   I merge.      After a second or two I get the error.     

I totally just repeated that process just now.   So this is what I see (after error but before I do anything with CLI): 

.git/MERGE_HEAD exists and has what I think is a git hash   
.get/.git/MERGE_HEAD  exists an has a simple message:   Merge origin/master into PAS-567-update-gradle-with-version-info    (aka 'myfixes') 

ls -la .git  
total 3132
drwxrwxr-x.   9 fwelland fwelland    4096 Feb 12 08:11 .
drwxrwxr-x.  30 fwelland fwelland    4096 Feb 10 11:36 ..
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 branches
-rw-rw-r--.   1 fwelland fwelland     989 Feb 11 08:38 COMMIT_EDITMSG
-rw-rw-r--.   1 fwelland fwelland    1414 Feb 12 08:07 config
-rw-rw-r--.   1 fwelland fwelland      73 Dec 30 14:03 description
-rw-rw-r--.   1 fwelland fwelland     141 Feb 12 08:07 FETCH_HEAD
-rw-rw-r--.   1 fwelland fwelland      56 Feb  6 11:08 HEAD
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 hooks
-rw-rw-r--.   1 fwelland fwelland 3127656 Feb 12 08:11 index
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 info
drwxrwxr-x.   3 fwelland fwelland    4096 Dec 30 14:04 logs
-rw-rw-r--.   1 fwelland fwelland      41 Feb 12 08:11 MERGE_HEAD
-rw-rw-r--.   1 fwelland fwelland      64 Feb 12 08:11 MERGE_MSG
drwxrwxr-x. 260 fwelland fwelland    4096 Feb 12 08:11 objects
-rw-rw-r--.   1 fwelland fwelland      41 Feb  5 15:22 ORIG_HEAD
-rw-rw-r--.   1 fwelland fwelland    4730 Dec 30 14:04 packed-refs
drwxrwxr-x.   2 fwelland fwelland    4096 Feb  4 13:33 rebase-merge
drwxrwxr-x.   5 fwelland fwelland    4096 Jan 13 16:55 refs


At this point in NB->Git->showchanges I see a list of files that are modded or added or deleted that represent work that was merged into master since the last time I merged master into my local branch.   

On the cli, git status says this:
-----
On branch PAS-567-update-gradle-with-version-info
Your branch is up-to-date with 'origin/PAS-567-update-gradle-with-version-info'.
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

	modified:   customerweb/customerwar/src/main/webapp/WEB-INF/classes/com/promo/cdars/web/customer/ApplicationResources.properties
 git status 
On branch PAS-567-update-gradle-with-version-info
Your branch is up-to-date with 'origin/PAS-567-update-gradle-with-version-info'.
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

	modified:   customerweb/customerwar/src/main/webapp/WEB-INF/classes/com/promo/cdars/web/customer/ApplicationResources.properties
Comment 5 fwelland 2015-02-12 13:37:46 UTC
...sorry...I hit save by accident...the rest of my comment is

....<list of files uncommitted..but >...


The list is the same list that NB displays. 

When I do a 'pretend commit' in NB  (issue commit but do cancel out) the commit message is the last thing I typed in the dialog when I actually was commit a change in my local branch.....


Back to the CLI, I go a git commit (no args) at my repo root.    I get dumped in VIM with the contents of MERGE_MSG in the editor buffer and a message listing out all the files etc (essentially the content of git status from above).    I simply do a :wq in vim and git does its thing -- no errors or warnings. 

At this point, ls -la .git 
total 3124
drwxrwxr-x.   9 fwelland fwelland    4096 Feb 12 08:29 .
drwxrwxr-x.  30 fwelland fwelland    4096 Feb 10 11:36 ..
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 branches
-rw-rw-r--.   1 fwelland fwelland     427 Feb 12 08:29 COMMIT_EDITMSG
-rw-rw-r--.   1 fwelland fwelland    1414 Feb 12 08:07 config
-rw-rw-r--.   1 fwelland fwelland      73 Dec 30 14:03 description
-rw-rw-r--.   1 fwelland fwelland     141 Feb 12 08:07 FETCH_HEAD
-rw-rw-r--.   1 fwelland fwelland      56 Feb  6 11:08 HEAD
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 hooks
-rw-rw-r--.   1 fwelland fwelland 3127656 Feb 12 08:21 index
drwxrwxr-x.   2 fwelland fwelland    4096 Dec 30 14:03 info
drwxrwxr-x.   3 fwelland fwelland    4096 Dec 30 14:04 logs
drwxrwxr-x. 260 fwelland fwelland    4096 Feb 12 08:11 objects
-rw-rw-r--.   1 fwelland fwelland      41 Feb  5 15:22 ORIG_HEAD
-rw-rw-r--.   1 fwelland fwelland    4730 Dec 30 14:04 packed-refs
drwxrwxr-x.   2 fwelland fwelland    4096 Feb  4 13:33 rebase-merge
drwxrwxr-x.   5 fwelland fwelland    4096 Jan 13 16:55 refs

At this point, I used NB and did a push.   I did a push to the remote tracking branch matching my local.   I consult the remote repo (via stash repo web app) and see my branch and compare to master and see the net changes as really only being the stuff I worked on (it doesn't reflect the commits I got in my local branch from the merge from master). 

I could have done a cli git push and the results are the same. 

Of course in NB, I can repeat this whole thing again immediately and since no one else has advanced master (yet), nothing is pulled/merged and NB/GIT is just fine. 

Anything else?
Comment 6 Ondrej Vrabec 2015-02-12 13:39:57 UTC
I think this might be the cause:
drwxrwxr-x.   2 fwelland fwelland    4096 Feb  4 13:33 rebase-merge

There is a rebase-metadata foder inside .git folder, our git client thinks you're in the middle of a rebase and refuses to continue -> throws an error.

It probably means you have not finished a previous rebase. You can probably just remove the folder (and NB will likely finish a next pull correctly). But there is also a danger that your branch's history is permanently damaged.
Please backup that folder and remove it. If you can then see any error, you can put it back.

I will try to catch this scenario and at least warn about it instead of throwing an exception.
Comment 7 Ondrej Vrabec 2015-02-12 13:41:12 UTC
... i suggest just removing the rebase-merge folder.
Comment 8 fwelland 2015-02-12 15:15:55 UTC
so yeah.   I just nuked the .git/rebase_merge directory.   I did have another material change in master that I pull/merged into my branch and indeed  it worked w/o a no comment exception. 

So 'fixed' -- but the bit about improving the notification in this condition would be a good enhancement....
Comment 9 Ondrej Vrabec 2015-02-13 16:11:30 UTC
fixed: core-main #c262a3e260b8
Comment 10 Quality Engineering 2015-02-15 06:50:57 UTC
Integrated into 'main-silver', will be available in build *201502150001* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/c262a3e260b8
User: Ondrej Vrabec <ovrabec@netbeans.org>
Log: Issue #250370 - git pull with non-conflict merge always causes NoMessageException: commit message not specified
Display a more-detailed description when the repostiory is in the middle of another operation.