Mercurial

History Key

  • New content
  • Removed content

Recent Versions

Choose two versions to compare, or click the link to view it.

  1. 6. about 3 years by syntheticpp
  2. 5. about 3 years by syntheticpp
  3. 4. over 4 years by ewing
  4. 3. over 4 years by ewing
  5. 2. over 4 years by ewing
  6. 1. over 4 years by ewing
 

Mercurial

This project has used Mercurial for the code repository.

We use a script called Tailor to create a bridge between CMake's CVS and this repository in hopes to keep in sync.

To clone (checkout) the repository, download/install Mercurial and do:

hg clone http://hg.assembla.com/CMakeLua YourClone

(*YourClone is the name of the directory that will be created on your system. Name as you prefer.)

 

 

Branches

To support sharing of experimentals that are not ready for mainline check-in, we have created additional spaces for public repositories.

Currently the sandbox repos are at:
http://www.assembla.com/spaces/CMakeLuaSandbox1

http://www.assembla.com/spaces/CMakeLuaSandbox2

http://www.assembla.com/spaces/CMakeLuaSandbox3

http://www.assembla.com/spaces/CMakeLuaSandbox4


http://hg.icculus.org/icculus/CMakeLua


And of course, the main repo is still at:

http://www.assembla.com/spaces/CMakeLua


If you have additional experiments you would like to share, feel free to publish the repository and add the links here (and announce on the mailing list).

 

 

Tailor_CVS-to-Mercurial_Bridge_Repository

In order to keep in sync with the official CMake CVS, we must periodically pull from CVS and merge in the changes. To do this effectively, we use Tailor (referred to as the Rosetta Stone of SCMs) and Mercurial (a distributed SCM). Tailor creates an intermediate ("bridge") repository for us that pulls and keeps up-to-date with CVS and then automatically populates a corresponding Mercurial database. The bridge repository thus contains both CVS and Mercurial information.

Now that the bridge has the updated CVS information in a Mercurial accessible format, we can pull and merge that information into our CMakeLua repository. Distributed SCMs being very good at merging generally do all the heavy lifting for us so we don't have to manually apply patches and other nasty stuff. We are still responsible for handling merge conflicts which the tools will alert us about.

Things to note:

- The bridge repository only contains official CMake code and nothing related to our project.

- We pull and merge from the bridge repository into our CMakeLua repository to get the updates.

- We currently don't have automation in place. This would be something nice to have, though we need to figure out how to handle merge conflicts.

 

Since the bridge repository already contains both CVS and Mercurial data, we cannot check in the repository into either of these systems to be shared, otherwise it will confuse the system. So to allow sharing, we introduce a third repository using Git.

The Git repository is hosted at:

 

http://repo.or.cz/w/CMakeLuaTailorHgBridge.git

Only people trying to resync CMake's official CVS to our CMakeLua repo
need to concern themselves with this.

You will need CVS, Git, Mercurial, and Tailor installed. (Yes, Yikes! I know).

The steps are:

1) git clone http://repo.or.cz/r/CMakeLuaTailorHgBridge.git YourBridgeRepo
2) cd into the root directory of the bridge repo where CMakeLua.tailor resides.
3) run: tailor -D -v --configfile CMakeLua.tailor
(This pulls from CVS and populates the Mercurial info.)

4) cd to your Assembla/Mercurial CMakeLua repo
If you don't already have one, clone one doing:
hg clone http://hg.assembla.com/CMakeLua YourCMakeLua

5) hg pull <path-to-YourBridgeRepo/CMakeLua>
6) Do a hg update or hg merge as necessary.
6b) If merge conflicts appear, manually resolve them.

7) hg commit
8) hg push
This will send your changes back to the main Assembla repo.

9) cd back to YourBridgeRepo.
10) git commit -a
11) git push ssh://<username>@repo.or.cz/srv/git/CMakeLuaTailorHgBridge.git
master
This will send your updates back to the git repo.

One note, because CVS is not a distributed repo, I don't know what
will happen if two people try doing a CVS update via Tailor and then
try merging. Probably the safest thing to do is only one person at a
time, i.e. announce you are updating or assign a person to the task.
(Right now it is me, but I don't mind if somebody else wants the job.)

To get access to the Git repo, you will need to register at repo.or.cz
and tell me your username to be added to check-in privaleges. You will also need to provide repo.or.cz a
public ssh key to write when you sign up. (They don't seem to support
passwords.)

Git:
http://git.or.cz/

Mercurial:
http://www.selenic.com/mercurial/wiki/

Tailor:
http://wiki.darcs.net/DarcsWiki/Tailor

Tailor info:
http://progetti.arstecnica.it/tailor/browser/README.rst