Mercurial repository usage with binary files for building setup files - mercurial

I have an existing Mercurial repository for a C++ application in a small corporate environment. I asked a co-worker to add the setup script to the repository and he added all of the dependency binaries, PDFs, and executable to the repository under an Install directory. I dislike having the binaries and dependencies in the same repository, but I'd like recommendations on best practices. Here are the options I am considering:
Create a separate repository for the
Installer and related files
Create a subrepository for the
Installer and related files
Use a (yet to be identified) build
dependency manager
I am concerned with using a subrepository with Mercurial based on what I've read so far and the (apparently) incomplete implementation. I would like to get a project dependency system, e.g. Ivy, but I don't know all of the options and haven't had time yet to try out any options.
I thought I'd use TortoiseHg as a basis, and it does not have the TortoiseHg binaries in the repository although it does have some binaries such as kdiff3.exe. Instead it uses setup.py to clone multiple repositories and build the apps. This seems reasonable for OSS, but not so much for corporate environments.
Recommendations?

I've had great luck using a good dependency manager, but it's more useful for code modules than artifacts. A sub-repo certainly works, but you'll not be cutting the clone time of people pulling the top tree since it will cascade into the subrepo too.
Someone will probably suggest using bfiles or big files, but I'd avoid it. They work well enough, but that functionality looks like it's going into mercurial this summer natively at which time those will languish.
Were I you I'd (a) hit the co-worker (b) try to strip those added files (using strip or convert), (c) re-do it will the installers being built not stored.
The PDFs I'd probably store, but there are some neat tricks for generating docs if you're interested.

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

Where can I download the distribution of mediawiki including all the wikipedia extensions?

Extraction of Reusable Structured Data from Wikipedia
In this article, it is said that there is wmf4, mediawiki distribution including all the wikipedia extensions, but I can't find it.
There is no pre-built package with all extensions used in Wikimedia wikis, so the easiest way would be to clone the latest wmf-branch of MediaWiki (which is thought to be used in Wikimedia wikis and/or experienced users, only and may contain bugs for third party users) from the git repository and initialize the git submodules. So, to use the latest wmf version, 1.27.0-wmf.1, (which is currently used on Wikimedia test wikis, only, see the roadmap for the actual deployment status) you coulduse git:
git clone https://gerrit.wikimedia.org/r/mediawiki/core
cd core
git checkout wmf/1.27.0-wmf.1
git submodule update --init
After that you should have the actual copy of MediaWiki in the core directory (you can look at the contents on github, too). But think about, that wmf-versions aren't officially supported by the MediaWiki developers, but we welcome any bug report.
Btw.: You could clone the latest stable version (currently MediaWiki 1.25.X) and install all extensions you want, manually. A list of actual deployed extensions to Wikimedia wikis can be found here.
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions
cd extensions
git submodule update --init
gets you all extensions hosted in Wikimedia's git repo. It's unlikely to be useful though. Also, I don't think extensions that are not used by Wikimedia have wmf/... branches.

Mercurial in Aptana terminal

Hello I like to use Mercurial in Aptana.
How easy is it to run Mercurial or DOS in the terminal of Aptana?
Do I only need to edit a configure file that contact the path of Tortoisehg Mercurial or are there more steps to take?
I know the basics for Mercurial to create, clone push and named branche.
Because I am just starting to use version control I like to make a decide to use Mercurial or
Git.
If the configuration is easy to do I like to use Mercurial but if there are more steps to it maybe it is easier to learn Git.
Since Aptana is based on Eclipse, you can probably install the HGEclipse plugin and use Mercurial directly in the IDE instead of using the terminal.
Concerning the Terminal, I never used Aptana and it's been a long time since I used Eclipse, but I think the only requirement is that Mercurial (the hg binary) is in your path. You can probably do that in the Aptana configuration or your operating system global path variable.
If you still must decide between using Git or Mercurial, I won't use the ease of configuration in Aptana to do my choice. There's many more to a VCS than the fact you're able to set up it's use easily for the Aptana terminal.
You should really choose based on the feature, learning curve and your needs :) A good start is maybe this SO question : What is the Difference Between Mercurial and Git?
In short : Git is more powerful but Mercurial is easier to use.

Is there a tool similar to repo or git-repo for hg/Mercurial?

I am a bit new to hg and while I am familiar with the python-based repo tool (used in project like the Android Open Source Project) I am not aware of one for Mercurial. Is there such a tool for hg?
I'm not very familiar with repo, but my understanding was that it allowed them to construct a project out of lots of smaller repositories.
If that's the case then it's just built in. Subrepositories.
Edlund was kind enough to open-source their repoman tool, which was directly inspired by the Android project's repo tool as I understand the history.

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