Does mercurial-server support subrepo? - mercurial

I installed mercurial-server on one of my machines, cloned my project there, it has 3 subrepos, and when I try to clone it back to another location I get an error:
remote: mercurial-server: Cannot
create repo under existing repo
abort: no suitable response from
remote hg!
So I'm starting to think that mercurial-server doesn't handle subrepo.
Any clue?

The new version released in December 2010 does support sub repos.

Their changelog never mentions subrepos.
Nor does their documentation.
So it is quite possible they don"t support that feature yet, but I wouldn't know for sure.

I got an answer from the developers of mercurial-server saying that they don't support it yet.

This post says that disabling the "checkParents" code will enable support for subrepos.
EDIT
I've tried using it recently and it works just fine even without changing any default settings.

I found that you need to set up the locations for any subrepos inside the "mercurial.ini" settings file.
For a subrepo named "mysubrepo", you need to add the line
[subpaths]
mysubrepo = ssh://hg#myserver/subrepolocation

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

TortoiseHg 3.6.3 broke mercurial keyring?

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.

Mobaxterm Mercurial Plugin

I'm trying to access a local folder which is tracked under Mercurial through Mobaxterm, but it says bash: hg: command not found. I assume that I am missing a plugin, which is not listed under the official site. Has anyone managed to use Mercurial with Mobaxterm. Could you please point me to the right direction.
I just packaged mercurial (hg) for MobaXterm after seeing your post regarding it today. I only tested it briefly, so I can't guarantee it works perfectly.
See:
http://www.bananahut.net/software/mobaxterm-plugins

Force Jenkins Subversion plugin to use HEAD revision

I was using Hudson for doing my project builds and now planning to migrate to Jenkins.
The build server time is not in sync with the developer machines, and hence svn update does not work correctly. In Hudson, I was able to set the revision policy to HEAD, whereas its missing in Jenkins.
I searched a bit and saw that a Jira is created for this issue, but did not find a working solution for the problem.
I tried to manually install the Hudson subversion plugin in Jenkins, and the Revision policy option came up, but for some reason it caused an exception while setting the svn authentication info.
If anyone knows a solution to make this change in Jenkins, kindly reply.
Figured out. Append all SVN urls with #HEAD and svn update will happen from HEAD!
The plugin doesn't offer such feature but you might find useful this jira issue. There is a patch in the comments for that purpose. See Issue 1241.

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>