|
******************************
A quick tour for the impatient
******************************
.. module:: tour
:synopsis: A Gentle Introduction to Using TortoiseHg on Windows
One of the great things about Mercurial is that there are lots of different
`Collaboration Models <http://hgbook.red-bean.com/read/file-names-and-pattern-matching.html>`_.
The following describes just one of those ways: a single central repository.
To get started, suppose you volunteer to create the first version. There are
`ways of importing already existing repositories <http://mercurial.selenic.com/wiki/RepositoryConversion>`_
but lets assume we're starting from scratch.
Configuring TortoiseHg
======================
First you need to make sure that you are correctly identified in TortoiseHg.
You do this by adjusting the global settings of TortoiseHg. Try right-clicking your
source folder and following :menuselection:`TortoiseHg --> Global Settings`
.. figure:: figures/contextmenu.png
:alt: Context Menu
From there you should be able to find what TortoiseHg thinks your name
is, and correct it.
.. note::
If you forget to set your name TortoiseHg will ask you for it at the
first *commit*, when the name is first required.
.. note::
There is no written rule on how to write the user name, and you can
set any text, but it is commonly used the following convention::
name <email>
for example ::
Donald Duck <donaldduck@example.net>
TortoiseHg only strips the email address in changelog viewer, while
the built-in web server obfuscates email addresses to prevent spams.
Initialize the repository
=========================
Create the repository on your local machine by using the
:guilabel:`Create Repository Here` selection above, or, within the folder,
type :command:`hgtk init`.
.. figure:: figures/init.png
:alt: Init dialog
We suggest to keep checked :guilabel:`Add special files (.hgignore, ...)`
and do not check :guilabel:`Make repo compatible with Mercurial 1.0`
(unless you have a strong reason to do this).
After pressing :guilabel:`Create` Mercurial places a
subdirectory in your folder called :file:`.hg`. This is where it keeps
all its versioning information. It is called the *repository*, and the
directory containing the repository is called the *working directory*.
You never specify the :file:`.hg` directory. It is mentioned here just
so you'll better understand how Mercurial is working.
Add files
=========
Now it's time to say to Mercurial which files must be tracked and which
files must be ignored. There are a lot of way to do this:
1. To add files, select them in explorer and then select :menuselection:`TortoiseHg --> Add Files`
in the context menu. In this way the adding action happens immediately and no
TortoiseHg dialogs appear, you can see the overlay icons changed.
2. Open the status dialog: :menuselection:`TortoiseHg --> View File Status` or
from command line :command:`hgtk status`. Check the files you want to add and
then press the :guilabel:`Add` button. In this dialog you can open the
ignore filter dialog from the context menu :guilabel:`ignore` over a unknown file.
3. Skip this step and wait the next commit. The commit tool is very similar to the
status dialog and you can do the same things. In this dialog you can, also, add a
file by just check it and commit.
4. To ignore files, open the ignore filter dialog: :menuselection:`TortoiseHg --> Edit Ignore Filter`
or from command line :command:`hgtk hgignore`. Choose the file from the list
and then press or write a *Glob* or *Regular expression* filter and then press
:guilabel:`Add`.
.. warning::
The :file:`.hgignore` file, which contains the list of file to ignore, must be
tracked by Mercurial. Remember to add it.
.. note::
It is not a good practice to have a lot of *unknown* files. Keep the
:file:`.hgignore` file updated.
Commit
======
Commit to your local repository by right-clicking anywhere in the
folder, or on the folder itself, and then selecting
:guilabel:`HG Commit ...`, or from command line type :command:`hgtk commit`.
Select the files you want to commit, write a message and then press
:guilabel:`Commit`. If, after the commit, you realize that something was wrong
(the message or the selected files) you can cancel the last commit using the
:guilabel:`Undo` button.
.. {{images/image001.png}}
Share the repository
====================
Now you are ready to share your work. You do this by making a copy of
your repository in a public place that everyone in your group can
access. Mercurial calls this *cloning your repository*. Clone your
repository to a common area, such as a shared drive or web site, which
will be the merge point for the team. From the shared drive select
:menuselection:`TortoiseHg --> Clone a Repository`, or
:command:`hgtk clone` from command line.
.. {{images/image003.gif}}
When you create a clone for *central repository* purpose where is no
reason to have here an updated working directory. Check
:guilabel:`do not update the new working directory` in order to have
an empty working directory.
Other team members will then work from this clone.
Fetching from the group repository
==================================
You want to start collaborating with your team. They tell you something
like *fetch the repository from x*. What does it mean? It means that
you want to make a copy of the repository saved at x on your local
machine. Mercurial calls this cloning and has a special interface for
it. Right click in the directory where you want your copy
.. {{images/Clone.gif}}
Working with your repository
============================
Suppose you've introduced some changes. It is easy to see that there are
a couple of directories with changes pending. You can traverse the
directories to find specific changes and commit them from Explorer. A
quicker way is to use the commit tool:
.. {{images/image001.png}}
The commit tool gives you a way to see differences or you can use your
visual difference tool (kdiff). You may commit many times before
synchronizing with the group repository.
.. figure:: figures/commit.png
:alt: Commit dialog
When you're ready to publish your changes, you
1. commit your changes to your local repository, if you haven't already.
2. pull changes from the group repository into your repository
3. merge and commit into your local repository
4. make sure your work still builds and passes your extensive test suite
5. push your changes to the group repository.
Which may sound complicated, but it is just pushing the buttons on the
synchronize tool.
.. {{images/image005.gif}}
Which makes the synchronize tool come up:
.. figure:: figures/synchronize.png
:alt: Synchronize dialog
:guilabel:`Incoming`
show me what changes in the group repository that are not in my repository
:guilabel:`Pull`
bring them on over and start merging
:guilabel:`Outgoing`
show me what is different in my repository compared to the group repository.
:guilabel:`Push`
make my changes the current changeset (tip) in the group repository.
Mercurial makes collaboration easy, fast, and productive.
Learn more at Mercurial's `wiki <http://mercurial.selenic.com/wiki/>`_.
.. vim: noet ts=4
|
Loading...