Decompress Mercurial repository files - mercurial

I created a repository and synchronized it with a remote repository.
The files are compressed and each has an (i) extension.
I want to extract the files to a new folder (not repository) with decompressing them and with their original name as I see them on the web browsing on Google code.

Normally you do hg clone <remoteRepoPath> <localPath> to do that, which automatically updates the working directory.
Since you did an hg init and then hg pull from the remote repo, you need to do hg update and it will fill the working directory with the actual files.
All those .i files under the .hg directory are the repository's storage and indexes and such. Very rarely does anybody mess with those manually. Most of the time the only thing people touch under the .hg directory is the hgrc file and patch queues.

Related

How to remove largefiles from mercurial repository?

I enabled the largefiles extension, committed a file and pushed it. I need to permanently revert this change. How can I do it? Is there a way to make this permanent?
If you're added the file like this
$ hg add --large my-file
then Mercurial will have committed a file called .hglf/my-file to the repository (the so-called standin file) and it will have pushed my-file to the remote server when you pushed your commit.
If you disable the largefiles extension, then all there is left in your history is the .hglf/my-file file. You can delete this file like normal with
$ hg remove .hglf/my-file
The standin file will still be present in the history, just like any other file Mercurial has been tracking. But the large file (my-file) is not part of the normal Mercurial history and so you wont see it in new clones where you haven't enabled the largefiles extension.

Connecting the unversioned code to existing branch in Mercurial

I do have a copy of code which does not have the .hg and its not connected with repository. (v1.1). The code was actully pulled from repo only, but during the development somehow the .hg files got deleted and its disconnected from repo.
hg status shows the error message (.hg not found).
In the repository it has the v1.0 code, since the v1.1 is in the zip file and does not connected with repo, I am not sure how to push the v1.1 code to the repository.
I am using kiln mercurial repository.
I'd simply do the following:
Re-clone the repository
Delete all files except those in the .hg folder
Copy the v1.1 files in
Test that it compiles and works
Commit the changes (including deleted and added files)
Push
This will give you a repository with only one commit between v1.0 and v1.1 but that's the best that you can get if you've deleted the .hg folder.

Clone Mercurial repository into public_html

I want to clone my Mercurial repository into my /public_html folder on my web server. My Mercurial project looks like this...
- /ProjectName
- /public
- /application
- /config
- /library
What I want is to just get the contents of "ProjectName" into my /public_html folder. Unfortunately, cloning the repository includes "ProjectName" and all of the subfolders are in there.
Any idea how to accomplish this without a symbolic link?
Just to put it out there, you probably don't want a full clone in your public_html unless you really want every version that ever was out there on the web. There's nothing inherently wrong with that, but since you'll have a .hg in public_html people will even be able to clone your repository from it.
Instead consider using the hg archive command which exports all the files as they exist at a specific revision and places them wherever you want.
For example:
cd your_clone
hg archive --rev release /public_html
That takes the code pointed to by the release label (which could be a tag, bookmark, or branch head) and puts the files, but not a full-history clone, in /public_html.
I actually found an easy way to do this.
hg clone https://me#bitbucket.org/me/ProjectName "/home/website/public_html"
public_html has to be empty to clone the repository into it, so I moved everything out, cloned the repo, then moved the pre-existing files and folder back.
Here is a simple step that you can follow:
cd /public_html
hg init .
hg pull ../pathto/ProjectName/
This will pull all the files and folders under ProjectName in public_html without creating /public_html/ProjectName.
But it will still copy all the resources that are in the mercurial repository (Files and Folders) into your directory.

how do i setup a local working directory to work with a local repo using Mercurial

Following is the scenario: I have a remote Mercurial repository at ssh://remotehost//dir/repo and I am able to clone it to a local host "pandora" in directory /home/user/localrepo/.
Now, I have a superset of this remote repository, where I add my own testing framework, but do not want to merge to the main depot until I am certain it works. So I clone this "local" repo to /home/user/workingdir/ but when I issue the command to do so
$ hg clone /home/user/localrepo/
only the repository folder gets copied none of the files get copied.
I'm not sure what you mean when you say that "only the repo folders gets copied". So there's two things you can try :
Try to do a hg update in your new clone.
List the directory in /home/user/workingdir and if there is a directory name localrepo in it, this is actually your repository. To clone in the current directory, you must do hg clone /home/user/localrepo .
This sounds odd but try a few things:
First in the local repo that you cloned from do a
hg status -A
are all the files that you think should be in there in there? If not are you at the tip of the repo.
You can see what revision you are at with
hg parent
If you want to just go to the tip do hg update
If there still aren't any files listed in the repo do the same to check the one on the server.
If there aren't any files on the server you will need to add all of the files you want mercurial to track, mercurial doesn't automagically start tracking files in the repo location.
(Use hg add --all to add all of the file in the entire directory tree under the repo location.)
If there are files in the local repo, check the testing area and make sure that it is on the proper changeset.

Is there an easy way to clear a mercurial repository of artifacts?

Sometimes I have to return to a really old branch when I depended on a ton of external libraries. Updating to the current branch removes the source files for those dependencies, but the artifacts are left there, as well as a few folders and such.
I would like to have a way to force a mercurial repo to be as if I had just cloned it from the remote (master) repository. I don't want to just nuke my repo and re-clone it, because that forces me to download hundreds of MB from the remote server.
Why don't you clone not from remote server, but from your local repository? After that you could nuke your repo with old untracked files.
hg clone path_to_your_local_repo your_new_repo
After this you could map your new repo to your remote server in hgrc file
You can use the purge extension, or if you are on an UNIX-like system: hg st -nu0 | xargs -0 rm.