TortoiseHg 3.6.3 broke mercurial keyring? - mercurial

I upgraded to Tortoise 3.6.3 yesterday and now I am prompted every time I pull or push a repo. The keyring is set properly, and my user name is in the url.
Any ideas on what may be wrong? Did 3.6.3 break keyring?

Issue 4401 "mercurial_keyring always asks for user/password" from time of 3.6.2 closed as pure extension-specific and contains solution: don't use username in URL anymore
Here is what to put into .hg/hgrc:
[auth]
default.username=myname
default.prefix=http://myrepo
A good way to debug issues like this is to run merciural from the command line with the debug flag, as in:
hg pull --debug
This will clearly indicate if there are problems getting the repo, user name, and password.

UPDATE: A new version of TortoiseHG has been released (3.8.3 at the time of writing) and fixes this issue: upgrading to latest version should be enough.
I had this exact same problem and found the following investigation article to be quite helpful to better understand what't going on (I'm not the author, BTW).
To cut it short, it seems a bug of the mercurial_keyring extension v1.0.1, introduced in TortoiseHG 3.6.2, which also appears to be fixed in v1.1.1.
If you're into Python compiling, it should be possible to upgrade it manually into TortoiseHG by getting it from its official bitbucket repo, compile it and manually place it into TortoiseHG's /lib/library.zip file (backup it beforehand might be wise): if you're not, you have 2 options:
1) clone the bitbucket repo to your HDD and then configure your Mercurial installation to use the new version of that extension module by writing the following in your C:\Users\USERNAME\mercurial.ini file (which was what I did):
[extensions]
mercurial_keyring = /path/to/mercurial_keyring/mercurial_keyring.py
(Notice: you might also have to put the path in your PATH or PYTHONPATH env variable, depending if you already have Python and/or Mercurial installed on your machine).
2) wait for the next TortoiseHG release that will contain the updated version.

Related

Interoperability of Mercurial 6 with other VCSes

Some years ago, Mercurial | TortoiseHG could exchange data bidirectionally easy with at least 2 Big Brothers:
Subversion, using HGSubversion
Git, using HG-Git
Current (6.0 versions of family) state - the ordinary users have none:
hg-subversion is broken (extension can't be loaded), bundled with THG (Mercurial ???) extension not updated since 2019 hgsubversion: 6a6ce9d9da35 2019-04-19 (extraction from my TortoiseHg\extension-versions.txt), external SVN-bindings exist only for Python 2.7 (while py3-movement inside Mercurial is live and active)
hg-git got some big troubles, starting from THG 4.9 (manual patching of library.zip was required), on 6 version the situation has gotten better (no patching), but still unsatisfactory for the common user - installing Python 2.7 (for single-user) and using pip isn't The Right Way (tm)
Are there any comments, additions, clarifications, recommendations on how to do it (if what I am doing is wrong)?
Addition after some testing: special verson tortoisehg-6.0hggit-x64.msi from Matt Harbison at least allow using hg-git with ssh-transport (not http yet) and can be recommended for every-day usage by ordinary user.
So, as a current maintainer of hg-git and former contributor to hgsubversion, I think I can provide some context here.
Regarding hgsubversion, the short answer that it is either dead or — at best — extremely dormant. Personally, I have not interacted with a Subversion repository in years, and that's a common experience. No-one has been sufficiently motivated to fix bugs, keep it working, and — last, but not least — make it work with Python 3.
For hg-git, a period of semi-dormant state meant that the TortoiseHg maintainers stopped bundling it. We now keep up with Mercurial releases, and I've requested that they reverse that decision. I believe they bundle Dulwich, but as I don't use Windows, I can't say for sure. That said, it's quite reasonable to want to use hg-git with TortoiseHg, and if you run into any specific issues, I'd suggest you file a bug with them — or perhaps add a comment to the bug I linked earlier.
Generally speaking, you should be able to use 0.10.x version of hg-git with most versions of TortoiseHg, as I believe they bundle Dulwich. In that case, enabling the extension should be as simple as:
hg clone -u 0.10.x http://foss.heptapod.net/mercurial/hg-git /path/to/repo
And then adding the following to your .hgrc:
[extensions]
hggit = /path/to/repo/hggit
Once TortoiseHg moves to Python 3.x, the default branch of hg-git will work with it again.
EDIT: I was wrong; they don't bundle Dulwich, it seems. On the bug for this, one of the maintainers posted a link to a packaged installer that includes hg-git & Dulwich. The next release, 6.1, should fix this. Please consider testing the installer, and report to the TortoiseHg maintainers whether it works as expected.
EDIT²: Please note that only SSH works with that installer, as they ran into some issues bundling urllib3, which is necessary for HTTP support.
TortoiseHG 6.2
Bundled hg-git works (at least with GitHub), but for now only for https:// repos:
old worked ssh-access failed with complaining about my keys
With the new keypair (still RSA) and PageAnt-x64 (for THG-x64) I got both access-methods in game

Mercurial support partially not working in Atom-Nuclide

I have installed the latest version of watchman, which can be found here:
/usr/local/bin/watchman
I performed the Install Recommended Packages on Startup and I watched them install after restarting.
This is a fresh new install of Atom and Nuclide with the latest version of everything.
I have a test project with files added to the Mercurial repository. The repository .hg directory sits at the root of the project. When I open a Diff View into a file, Nuclide picks up the previous Mercurial version of that file just fine as I make edits and it shows the comparison between the two. Previous version on the left is shown. So I know that Atom-Nuclide is able to interact with the Mercurial repository.
However, nothing else seems to be working for Mercurial support.
When I select "Toggle Blame" on the same file where Diff View is working, I get this message: "Failed to fetch blame to display. The file is empty or untracked or the repository cannot be reached."
The File Tree Highlighting does not work. No colors on any of the files in any of their mercurial states.
The colored Line Modification Notifications do not show inside of the Atom gutter.
The Added and Removed Lines feature is not showing in the status bar.
These features in Atom-Nuclide are the reason why I am interested in trying out Mercurial instead of Git and are big reasons for trying this IDE in general.
The same problem was reproduced on a different distro. I can't be the only one who bumps into this. No business can safely rely on a development environment where the level of community interest outside of FB cannot support an attempt to claim a Stack Overflow bounty on a question like this. The solution is to wait for better type support and type checking to come to PHP. Numerous RFCs exist to do exactly that and other IDEs will take advantage of this in future versions of PHP.

Mercurial not configured correctly

I have recently updated to eclipse juno. I have also updated mercurial to its latest version, but it is still giving me problems. The mercurial plugin tells :"Unsupported hg version:1.9.3. Expected is at least2.0.0." but its already updated(see pic).
If I try to commit, it automatically opens preferences window, which gives message :"Mercurial is not configured correctly.Run 'hg debuginstall' to analyse.".
When I do that, it says:"no username supplied". Then I run "hg -y debuginstall", which says, no problems were detected.
Everything that I mentioned is depicted in the picture.
Uncheck the option labelled Use default (built-in) Mercurial executable; then in the text box labelled Mercurial executable below, you can enter the full path to the hg.exe under your TortoiseHg 2.5 installation.
I got the same error when I installed Mercurial Eclipse Plugin. I find the configuration file "Mercurial.ini" in the mercurial installation folder. In my case, the path of that folder is "E:\eclipse\plugins\com.intland.hgbinary.win32_2.3.2\os\win32". Edit the configuration file with notepad and add the line "username = your-user-name" where your-user-name is free to choose. I hope it would help.

Using IntelliJ 11 Community Edition with Mercurial

I am using IntelliJ 11 Community Edition for a project that is in Mercurial (but not at the root of the repository). I integrated the project with Mercurial in the VCS menu, and all the options are now available. However, they don't seem to do anything. The only thing that seemed to do anything is to pull from the server. It doesn't show changed files, commit doesn't do anything. When I deleted a file I got this error message:
hg remove --after src/stats/KolmogorovSmirnovStatistic.java
abort: repository /home/ga1009/PhD/cpp/pmi/java not found!
the root of the repository is /home/ga1009/PhD. How can I get it configured?
I am using Debian Linux is it is relevant.
I raised a ticket on the official site and got a solution that seems to work:
Go to Settings | Version Control and map the repository root to the
Mercurial VCS.
Looks like Mercurial is supported in the community edition:
http://www.jetbrains.com/idea/features/editions_comparison_matrix.html?IC
Sorry, I use Subversion. But when I do, I have to check out the project from Subversion in order to get a working copy. Did you do that with Mercurial? Or are you working with your original files?
I'd do this:
Back up your original source. God forbid you should lose a repository named "PHD".
Check the code into Mercurial. Make sure you can see it in the browser.
Blow away your original source.
Open IntelliJ and check out from Mercurial.
You should be able to see changes added to the change list as you work.
I had to edit the .idea/vcs.xml file to get it working.
The VcsDirectoryMappings needs to read something like:
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="hg4idea" />
</component>

m2eclipse on windows with Mercurial does not allow hg to be used on the "Check out Maven Projects from SCM" wizard

I followed the answer from this posting:
How to use Mercurial, Maven and Eclipse together?
But the "Check out Maven Projects from SCM" still does not allow me to use Mercurial SCM.
The only option I get is "svn" in the dropdown, and even if I ignore the drop down and enter in "scm:hg:http://myMercurialRepoURL"
I'm using:
Eclipse 3.6.1
m2eclipse 0.12 from http://m2eclipse.sonatype.org/sites/m2e
"Maven SCM handler for Subclipse" 0.12.0 from m2eclipse extra's site (sorry, I would give the URL, but my new account doesn't have enough rep)
MercurialEclipse 1.8.1 from http://cbes.javaforge.com/update
And I've uninstalled, and reinstall those plugins in that order.
I'm able to use Maven in projects, and use Mercurial separately in Eclipse - it's just this one Wizard that seems to be broken, which leads me to believe that if I try to Materialize an Artifact from a Mercurial repo that it will also fail.
Has anyone had any luck with this Wizard? Perhaps on earlier versions? Is this a new bug?
Thanks
As far my search went, I didn't get to find a suitable connector for mercurial and m2eclipse (in terms of only using IDE). However, I did an experiment wherein I cloned a copy of the source from outside the IDE. (via TortoiseHg specifically)
Afterwards, assuming you have already m2e installed in Eclipse:
Go to File > import > maven > existing maven projects, then select the folder where you've originally pulled/cloned your source code.
I believe by doing so, you'll see the m2e commands in the project's context menu (via run as), and effective use mercurial commands. (via team context menu)
At least for now, this is better not using m2e and mercurial at the same time.
If anyone has a more streamlined approach, I'm also curious. :D