I'm trying to set up Jenkins to pull from a bitbucket repo (on Windows Server 2008). I've generated a key, uploaded it to bitbucket, configured Mercurial to use Plink, am running Pageant, and can clone from the command line.
When I set up the Jenkins job, it tries to clone the repo but just hangs with the "working" icon in the console output
Building in workspace <workspace>
$ hg clone --rev default --noupdate ssh://hg#bitbucket.org/user/repo <workspace>
<spinning working icon>
If I clone the repo from the command line, I get
Building in workspace <workspace>
[src] $ hg showconfig paths.default
[src] $ hg pull --rev default
<spinning working icon>
and it also just hangs. I've left it running overnight, no error message, nothing.
I can put use https://user:pass#bitbucket.org/user/repo and it checks out fine from Jenkins.
Turns out Jenkins running in a 32 bit tomcat doesn't like 64 bit plink. I changed it to the 32 bit plink and now it checks out fine.
Related
I'm trying to do a hg clone on an Internet facing machine for later use on an offline build machine. Unfortunately mercurial is 3.9.1 on the Internet machine, but 1.4 on the offline machine.
I get the error abort: requirement 'generaldelta' not supported! and also abort: requirement 'dotencode' not supported!
I found this is becuase generaldelta feature was added in 1.9, and dotencode in 1.7. I've used instructions from the MissingRequirement wiki page to downgrade this repo using the following.
hg clone -U --config format.generaldelta=0 --config format.dotencode=0 --pull /tmp/foo /tmp/bar
However the new repo at /tmp/bar still uses generaldelta, although dotencode require has gone. i.e.
cat /tmp/bar/.hg/requires
fncache
generaldelta <=== still there
revlogv1
store
store
How can I rewrite the repo with both generaldelta and dotencode disabled?
The config option should have been format.usegeneraldelta not format.generaldelta. i.e.
hg clone -U --config format.usegeneraldelta=0 --config format.dotencode=0 --pull /tmp/foo /tmp/bar
Note the config. options are all config.use<feature-name> apart from config.dotencode see Mercurial format options. Beware as there is not any error checking either.
Is there a way to get logs for a mercurial repo like so:
hg log -v "http://some/remote/repository"
instead of
hg log -v "C:\Users\Repo"
Mercurial does not support that operation. You firstly have to clone the repository.
See more here
If you have an http-served mercurial repository (which you seem to) you can get the log by going to http://some/remote/repository in your web browser. You can also start a web server on any repo by issuing the hg serve command. By default, this will start a web server on port 8000 and you can view it by going to http://repothost:8000/ or, if local, http://localhost:8000/.
I have some code on bitbucket.org under mercurial version control. Now I want to download the code on my ubuntu machine over ssh. When I use hg clone everything works well. However hg update never updates any files. I'm not even asked for my ssh password. I checked these setting:
ssh -v hg#bitbucket.org
-> looks ok.
hg showconfig
-> path.default = ssh://hg#bitbucket.org/user/myrepo...
Do you have any idea what else to check?
Thanks.
hg update doesn't contact the remote repo, it pulls changes into the working directory from your local repository. That's why you are not being asked for your bitbucket password. Use hg pull to get the changes from the remote repo into your local repo, then hg update, or just use hg pull -u to do both at once.
I'm having some difficulty cloning my mercurial repository over ssh.
Here's what I have tried:
hg clone ssh://username#username.webfactional.com/path/to/projectname projectname
It's giving me this error:
remote: bash: hg: command not found
abort: no suitable response from remote hg!
hg is installed on the server, however.
I was trying to follow the instructions on this website.
You need a double // after hostname i.e.:
hg clone ssh://username#username.webfactional.com//path/to/projectname projectname
Sounds like hg is not on your path. The Mercurial FAQ mentions possible fixes for this issue: FAQ/CommonProblems.
Add the remotecmd value to your Mercurial configuration by opening ~/.hgrc (or Mercurial.ini on Windows) on your client machine and adding the following:
[ui]
remotecmd = /path/to/hg
where /path/to/hg is the path to the hg command on the remote server.
If you're having problems with your Mercurial configuration, you can use the hg showconfig --debug command to obtain a full list of your Mercurial settings along with the path and line number of the configuration file that defines each configuration value.
Looks like mercurial isn't in your user's PATH on the remote server.
On webfactional I had to add:
export PATH=$PATH:/home/<user>/bin
to .bashrc to get it to work.
(also followed the remotecmd advice above)
You can use Sourcetree, TortoiseHg, Mercurial from the terminal, or any client you like to clone your Mercurial repository. These instructions show you how to clone your repository using Mercurial from the terminal.
From the repository, click + in the global sidebar and select Clone
this repository under Get to work.
Copy the clone command (either the SSH format or the HTTPS).
If you are using the SSH protocol, ensure your public key is in Bitbucket and loaded on the local system to which you are cloning.
From a terminal window, change to the local directory where you want to clone your repository.
Paste the command you copied from Bitbucket, for example:
CLONE OVER HTTPS:
$ hg clone https://username#bitbucket.org/teamsinspace/hg-documentation-tests
CLONE OVER SSH:
$ hg clone ssh://hg#bitbucket.org/teamsinspace/hg-documentation-tests
If the clone was successful, a new sub-directory appears on your local drive.
This directory has the same name as the Bitbucket repository that you cloned.
The clone contains the files and metadata that Mercurial requires to maintain the changes you make to the source files.
On the server, type: nano ~/.bashrc end edit the file by adding:
# User specific aliases and functions
export PATH=$PATH:$HOME/packages/mercurial
Under the assumption that ~/packages is the folder where mercurial was installed.
After editing, finish off with source ~/.bashrc and try again.
Pretty helpful to me was the following elaborate guide to install mercurial on a Bluehost hosting server.
I have installed mercurial and review board extension for mercurial on my Windows XP machine. In review board, I have added a repository say "MyRepo" which is on a central server.
I cloned "MyRepo" to my local machine, modified a file for testing and committed to my local repo. I haven't yet pushed it to my central repo.
Now I run "hg postreview" on my cloned local repo. I select "MyRepo" when postreview asks me to choose a repo.
I get a "File not found (207)" error after the command completion. Howver, my review request is uploaded to Review Board server but the diff file is not. Can you tell me what am I doing wrong or is there a patch or command I am not aware of?
I am a novice in DVCS and mercurial, so any help on this matter is really appreciated.
It sounds like you already pushed changes or did more than one commit to the clone (that diffs now more than one commit). Try this and refer to the changeset you created the clone from:
hg postreview -l -o --parent={changeset}
If you wan’t to submit further editings refer to the rewiewid and changeset your first postreview command submitted:
hg postreview -e {reviewid} -o --parent={changeset}