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.
At first I wanted to reopen issue #123744, but the problem is different I think Consider following scenario: 1) Set some Mercurial User Name in Global Options - Tools | Options | Versioning | Mercurial 2) Create a new project, initialize and commit - verify that in Mercurial | Options... there is correctly the username from step 1) 3) Make some changes, commit and verify in Mercurial | Show History that the username is really used 4) Set some other Mercurial User Name in Global Options - Tools | Options | Versioning | Mercurial 5) Make some changes and commit result: The username in Mercurial | Options... didn't change and in Mercurial | Show History the username from step 1) is still being used. I guess that now the local username for repository has priority over a global one? But then I am unable to change it since Mercurial | Options... is not editable anymore.
One more question that is related to this and probably to issue #125835 as well. You can now have 3 locations of username and other settings, am I am right? Mercurial.ini, ~/hgrc an <project_path>/.hg/hgrc The priorities are taken in the same order I named them (Mercurial.ini highest)?
I'll look into this: On Windows Mercurial.ini takes the palce of ~/.hgrc on Unix Order of priority is: Windows: <project_path>/.hg/hgrc then if this is not set, Mercurial.ini Unix: <project_path>/.hg/hgrc then if this is not set, ~/.hgrc
Created attachment 56426 [details] Proposed patch - main_work_66767_93b93c6be87a-126803.patch
changeset: 66793:858b544e7729 user: jrice@netbeans.org date: Mon Feb 11 11:26:01 2008 +0000 summary: #126803: Username priorities and changes - last change was not being persisted from the Properties dialog, unless you clicked back on a row - Ok now handles this
Sorry for replying after such a long time... Reopening as the process of determining username is not behaving as you described. There is also the ~/.hgrc on windows. It is located in C:\Users\<username>\AppData\Roaming\Mercurial\ on Windows Vista (and I guess something like C:\Documents and Settings\... on windows XP). It is created only when you change Mercurial User Name in options. I've tried to figure out how it works now and it seems to me that it is like this (I am speaking about windows vista, but will be the same for XP most probably): 1) <project_path>/.hg/hgrc 2) ~/.hgrc 3) <login_name@hostname> The mercurial.ini is ignored as far as I tested it. I deleted username section in both <project_path>/.hg/hgrc and ~/.hgrc, inserted username in Mercurial.ini and cleared Mercurial User Name in options. When I invoked Mercurial | Properties... there was only <login@hostname> instead of what I entered in Mercurial.ini. I checked Mercurial User Name in options again and it was set there <login@hostname>, although it was not in the ~/.hgrc as it would be if I had entered it manually in options.
From the hgrc doc: http://www.selenic.com/mercurial/wiki/index.cgi/.hgrc?action=show&redirect=mercurial.ini (Unix) $HOME/.hgrc:: (Windows) C:\Documents and Settings\USERNAME\Mercurial.ini:: (Windows) $HOME\Mercurial.ini:: Per-user configuration file, for the user running Mercurial. Options in this file apply to all Mercurial commands executed by any user in any directory. Options in this file override per-installation and per-system options. On Windows system, one of these is chosen exclusively according to definition of HOME environment variable. Note the comment about "On Windows system, one of these is chosen exclusively according to definition of HOME environment variable." With your scenario I wonder what your $Home was set to and if you delete the ~/.hgrc would the ~/Mercurial.ini settings now be read. Can you try this out from the command line, using a test repo and a commit to see what username is added. Where was your Mercurial.ini located? Order of priority might be: Windows: <project_path>/.hg/hgrc then if this is not set, $Home/.hgrc then $Home/Mercurial.ini ??? Unix: <project_path>/.hg/hgrc then if this is not set, ~/.hgrc Thanks. 1) <project_path>/.hg/hgrc 2) ~/.hgrc 3) <login_name@hostname>
Well I've found out that I have neither $home nor anything similar variable defined. (which surprised me a bit :) So sorry for not accurate information. Anyway, it apparently uses %userprofile%\AppData\Roaming\Mercurial\, at least on Windows Vista. I am using tortoisehg, might that be the problem? My mercurial.ini is located in "C:\Program Files\TortoiseHg\mercurial.ini" I tried following scenario (with fresh userdir, no %userprofile%\AppData\Roaming\Mercurial\.hgrc or <project_path>/.hg/hgrc existed and I did not entered anything in Options so <login_name@hostname> was there): 1) Create new project in NB, initialize and commit from netbeans - <login_name@hostname> was used 2) Modify a file and commit it from command line - again, <login_name@hostname> was used, mercurial.ini was ignored again Then I entered some username in options (which resulted in %userprofile%\AppData\Roaming\Mercurial\.hgrc) and 3) modified a file and committed it from IDE - username from %userprofile%\AppData\Roaming\Mercurial\.hgrc was used 4) modified a file and committed it from command line - <login_name@hostname> was used Then I entered different username using Mercurial | Options... (which resulted in <project_path>/.hg/hgrc) 5) modified a file and committed it from IDE - username from <project_path>/.hg/hgrc 6) modified a file and committed it from commandline - username from <project_path>/.hg/hgrc I've also tried to copy mercurial.ini to %userprofile%\AppData\Roaming\Mercurial\, but it was ignored again. In short, it didn't use mercurial.ini at all...
Just to clarify: "Then I entered some username in [Global Mercurial Options ???] options...... Then I entered different username using Mercurial | [Properties ???] Options... " When I look at the code its clear we are only checking for a <WINDOWS_APP_DATA>/.hgrc, <WINDOWS_USER_APP_DATA>/.hgrc or <project_path>/.hg/hgrc and if username is not set in any just go with whatever default mercurial gives us [don't have --user on the hg commit command line]. On windows we are not looking for the Mercurial.ini file. The code should be changed so we are using Mercurial.ini for the user settings as opposed to the per project settings and be in agreement with the hgrc man page. Looking at the mercurial code it is looking in: Per-system: <Mercurial Install>\Mercurial.ini C:\Mercurial\Mercurial.ini Per-user: %HOME%\Mercurial.ini %USERPROFILE%\Mercurial.ini On Win < NT in: <Parent of %APPDATA%>\Mercurial.ini What is your $HOME set to? If you have a C:\Documents and Settings\USERNAME\Mercurial.ini or a $Home\Mercurial.ini file with username set in it does this work from the command line? (Windows) C:\Mercurial\Mercurial.ini Per-system configuration files. Options in these files override per-installation options. (Windows) C:\Documents and Settings\USERNAME\Mercurial.ini (Windows) $HOME\Mercurial.ini Per-user configuration file, for the user running Mercurial. Options in this file override per-installation and per-system options. On Windows system, one of these is chosen exclusively according to definition of HOME environment variable. (Unix, Windows) <repo>/.hg/hgrc Per-repository configuration options that only apply in a particular repository.
I've checked and both in Windows XP and Vista, no %HOME% is set. It seems it can be determined concatenating %HOMEDRIVE% and %HOMEPATH% which results in the same as %USERPROFILE%. So I think that looking %HOME%/whatever will not affect anything on windows with default settings. Anyway I found, that I had another mercurial.ini in %USERPROFILE%\mercurial.ini which was probably added by prior installation of selenic hg as tortoise does not create it. It contained username <login@hostname> which was almost certainly causing ignoring of Mercurial.ini in tortoisehg installation folder. Sorry for the confusion it could cause. I deleted it and now it finally uses username from Mercurial.ini if no username section is defined in <project_path>/.hg/hgrc or <WINDOWS_APP_DATA>/.hgrc is found. Still if you invoke Mercurial | Properties..., the username there is <username@hostname>, but the commit will use the proper one from mercurial.ini. As you said, following the same mechanism as in hgrc man page will be the best.
Created attachment 58401 [details] Username settings on Windows proposed patch
*** Issue 130508 has been marked as a duplicate of this issue. ***
I tested the windows part of the patch, but now it seems it ignores <Mercurial Install>\Mercurial.ini. Other than that it seems to follow the man page. I know that according to the link to the man page, only C:\Mercurial\Mercurial.ini is checked, but I would suggest to check the <Mercurial Install>\Mercurial.ini as well as most users will probably use it.
There where a lot of inconsistencies here, when opening/closing the Options and Properties, I've done more work on the code to clean things up. There is also a bug on Windows where the Ini4j package strips out \ of paths in any ini files you read in, which we are now handling. Settings are applied in the following order: Per-installation configuration files. (Windows) <Mercurial Install Dir>\Mercurial.ini or defaults to C:\Mercurial\Mercurial.ini (Unix) /etc/mercurial/hgrc Per-user configuration file, for the user running Mercurial. Options in this file override per-installation and (Windows) %USERPROFILE%\Mercurial.ini (Unix) ~/.hgrc Per-repository configuration options that only apply in a particular repository. (Unix, Windows) <repo>/.hg/hgrc Opening Tools/Options/Micellaneous->Versioning, Mercurial: ---------------------------------------------------------- This takes username from the above Per-installation or Per-user config files if set and if not uses, userId + "@" + hostName + ".zzz", where: userId = System.getProperty("user.name") and hostName = InetAddress.getLocalHost().getHostName() This ensures the email is vaild and changing it won't give you an error. Fixes issue in #130625. If you do not alter the username and there is no Per-user config file, none will be created. You must alter the username for one to be generated for you. Fixes issue in #130625. Opening Mercurial Project Properties ------------------------------------- This will take username from the above Per-installation, Per-user or Per-Repo config files if set and if not uses, userId + "@" + hostName + ".zzz" If you do not alter the username and there is no Per-Repo config file, none will be created. You must alter the username for one to be generated for you. Fixes issue in #130625.
Created attachment 59160 [details] main_work_73381_51f01e967a06-username-part2.patch
NOTE: both patches need to be applied: main_work_73380_26cd68076a26-username-settings.patch main_work_73381_51f01e967a06-username-part2.patch
*** Issue 130625 has been marked as a duplicate of this issue. ***
Created attachment 59230 [details] main_out_72977_ef55c64dc8f3-username-part3.patch Unix addiitons
Patch comitted to head
I've tested the windows part and have to reopen this issue again. The default username in options is now correctly read from existing Mercurial.ini. If you change it in global options, another Mercurial.ini is created in %USERPROFILE% (it is a copy of that in install location with changed username). But then, the new username from %USERPROFILE%\Mercurial.ini is not used although it should override per-installation config file.
Created attachment 59429 [details] main_out_76499_3705fadb2f78-username-windows-gc.patch
Patch pushed in 154979465edd.
I've tested on windows vista and ubuntu and it looks good except for the userId + "@" + hostName + ".zzz". If you don't have any hgrc/mercurial.ini, the userId + "@" + hostName + ".zzz" is displayed both in options and properties, but for commit only userId + "@" + hostName is used. Question is whether it does make sense to use the .zzz suffix. Maybe it would be better to use the default username as it was before (userId@hostname) and do not insist that the username must be a valid email address in options? You see, you can change your username to other than email address using properties so why should it be different in options?
Created attachment 59564 [details] main_work_76921_0b7d4a0c3043-username-properties-emailcheck.patch
Removed addition of .zzz, if no username is set it defaults to userId@localhost. Still checking the email, but now allows this format as well. Also check the username in Properties now and warns user if invalid, such as userId@localhost. for example to be consistent with Options. The fact that commit was using a different username than the Options and Properties was a bug.
Committed to main: hg changeset: 77079:ff1a85f26792 tag: tip user: jrice@netbeans.org date: Wed Apr 02 16:12:06 2008 +0100 summary: #126803: Username email checking in properties now consistent with Options and also allows userid@localhost
Finally verified in build 200804030004, thanks :)
Merged into release61_fixes repository changeset: 77448:ff19eda2b4ed user: jrice@netbeans.org date: Wed Apr 02 16:12:06 2008 +0100 summary: #126803: Username email checking in properties now consistent with Options and also allows userid@localhost
Verified on Patch1.