Changes between Version 1 and Version 2 of UsingPidginMercurial


Ignore:
Timestamp:
06/03/12 18:30:31 (7 years ago)
Author:
rekkanoryo
Comment:

Initial, basic documentation.

Legend:

Unmodified
Added
Removed
Modified
  • UsingPidginMercurial

    v1 v2  
    11= Using Pidgin Mercurial =
    22This page is intended to house documentation for using Pidgin's Mercurial repositories once we switch from Monotone to Mercurial.
     3
     4== Background ==
     5Pidgin's Mercurial repositories are served by the [http://www.lshift.net/mercurial-server.html mercurial-server] package.  This relies entirely upon SSH key-based authentication, providing access control and a layer of accountability.
     6
     7== Anonymous Pull (Non-Developers) ==
     8All Pidgin Mercurial repositories will be available via HTTP.  As we are not yet using Mercurial, this is not yet available.
     9
     10== Developers ==
     11
     12=== Configure SSH For Access (Developers/CPW's/SoC Students Only) ===
     13If you wish, you can simplify Mercurial ssh: URL's by adding the following to `~/.ssh/config`:
     14{{{
     15Host hg.pidgin.im
     16    Protocol 2
     17    User hg
     18}}}
     19
     20=== SSH-based Push/Pull ===
     21You can get your initial checkouts from Mercurial by:
     22  * With SSH config above: `hg clone ssh://hg.pidgin.im/path/to/repo`
     23  * Without SSH config above: `hg clone ssh://hg@hg.pidgin.im/path/to/repo`
     24
     25Once initial clones are done, pulls are a simple matter of running `hg pull` within your working copy.  You may optionally add `-u` to have your checkout automatically updated if possible.
     26
     27Pushes are a simple matter of `hg push` within your working copy.  If you need to push a new repository, you must clone:
     28  * With SSH config above: `hg clone . ssh://hg.pidgin.im/path/to/repo` in working copy
     29  * Without SSH config above: `hg clone . ssh://hg@hg.pidgin.im/path/to/repo` in working copy
     30
     31== Administration ==
     32
     33=== Access Control ===
     34Access control on Pidgin's Mercurial server is strict.  The repositories will be structured like so (developers/CPW's listed here are for the purpose of example):
     35
     36{{{
     37hg.pidgin.im          # Mercurial server
     38 + pidgin               # "Official" Pidgin and libpurple repositories
     39 |  + main                # replaces im.pidgin.pidgin in Monotone
     40 |  + 2_x_y               # replaces im.pidgin.pidgin.2.x.y in Monotone
     41 + dev                  # Developers' repositories
     42 |  + darkrain            # for all repositories darkrain wishes to create
     43 |  |  + irc                # replaces im.pidgin.cpw.darkrain42.irc in Monotone
     44 |  |  + xmpp_roster        # replaces im.pidgin.cpw.darkrain42.xppp.roster in Monotone
     45 |  + rekkanoryo          # for all repositories rekkanoryo wishes to create
     46 |     + examples           # replaces im.pidgin.cpw.rekkanoryo.examples in Monotone
     47 + cpw                  # Crazy Patch Writers' repositories
     48 |  + eionrobb            # for all repositories eionrobb wishes to create
     49 |     + newfeature          # new repository
     50 + www                  # For websites
     51 |  + pidgin              # for pidgin.im
     52 |  + imfreedom           # for imfreedom.org
     53 + soc                  # For Google Summer of Code projects (lines below should be obvious)
     54    + 2007
     55    |  + student1
     56    |     + project1
     57    + ...
     58    + 2012
     59       + studentx
     60          + projectx
     61}}}
     62
     63Access control will be as follows:
     64  * Developers have write access to `pidgin/*`
     65  * Developers can create and modify repositories in `dev/$NICKNAME/`
     66  * Crazy Patch Writers can create and modify repositories in `cpw/$NICKNAME/*`
     67  * Summer of Code students can create and modify repositories in `soc/$YEAR/$NICKNAME/*`
     68  * All of the above have read access to any repository on the server.
     69  * Those people with "root" access can do anything to any repository.  This access is strictly controlled.
     70
     71
     72=== Adding New Users ===
     73The process to allow new users SSH access to the Mercurial repositories is pretty simple, but requires someone with "root" access to mercurial-server.  Currently those people are rekkanoryo and lschiere.
     74
     75  1. Check out the `hgadmin` repo: `hg clone ssh://hg@hg.pidgin.im/hgadmin pidgin-hgadmin`
     76    1. `cd pidgin-hgadmin/keys`.  Inhere  is a series of directories.  The format is self-explaining.  Developers go in `devs/$NICKNAME`, CPW's in `cpws/$NICKNAME`, SoC students in `soc/$NICKNAME`.
     77    1. Create the appropriate directory.
     78    1. Within this directory create a file named for the SSH key being added, for example `user@somehost`.
     79    1. Put the SSH public key in this file.
     80    1. `hg add $FILE`
     81    1. Go back to the root of `pidgin-hgadmin`.
     82    1. Edit `access.conf`.  Copy an existing line for the same class of user (developer, CPW, SoC student) and modify it as appropriate for the new person's nickname and, if applicable, SoC year.
     83    1. `hg commit`
     84    1. `hg push` (mercurial-server updates automatically on push)
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!