# HG changeset patch # User André Sintzoff # Date 1259876738 -3600 # Node ID ea04ebd452b532700c28b5613f2f35f8c33cd19e # Parent 407206673eec40fb91d94ae89392c2e824725894 French : second part of ch06 diff -r 407206673eec -r ea04ebd452b5 fr/ch06-collab.xml --- a/fr/ch06-collab.xml Wed Dec 02 18:33:34 2009 +0100 +++ b/fr/ch06-collab.xml Thu Dec 03 22:45:38 2009 +0100 @@ -348,7 +348,7 @@ Le train des releases - + Certains projets sont organisés comme un train élémentaire : une release est planifiée tous les @@ -731,7 +731,7 @@ serveur en votre nom (ex. lorsque vous faite un pull ou un push de changements). - L'inconvénient de sauvegarder les mots de passes dans + L'inconvénient de sauvegarder les mots de passe dans un agent est qu'il est possible pour un attaquant bien préparé de retrouver le mot de passe clair, dans certains cas, même si votre système a été redémarré. Vous devriez vous faire votre propre @@ -763,826 +763,818 @@ - - - Configuring the server side properly - - Because ssh can be fiddly to set up if you're new to it, - a variety of things can go wrong. Add Mercurial - on top, and there's plenty more scope for head-scratching. - Most of these potential problems occur on the server side, not - the client side. The good news is that once you've gotten a - configuration working, it will usually continue to work - indefinitely. - - Before you try using Mercurial to talk to an ssh server, - it's best to make sure that you can use the normal - ssh or putty command to - talk to the server first. If you run into problems with using - these commands directly, Mercurial surely won't work. Worse, - it will obscure the underlying problem. Any time you want to - debug ssh-related Mercurial problems, you should drop back to - making sure that plain ssh client commands work first, - before you worry about whether there's a - problem with Mercurial. - - The first thing to be sure of on the server side is that - you can actually log in from another machine at all. If you - can't use ssh or putty - to log in, the error message you get may give you a few hints - as to what's wrong. The most common problems are as - follows. + + + Configurer correctement le serveur + + Parce que ssh peut être délicat à installer si c'est nouveau pour vous, + différentes choses peuvent mal se passer. Ajouter Mercurial + en plus, et il y a beaucoup plus de possibilités pour s'arracher les cheveux. + La plupart de ces problèmes potentiels apparaissent du côté serveur, non + du côté client. La bonne nouvelle est qu'une fois que vous avez + une configuration qui marche, elle continue habituellement de fonctionner + indéfiniment. + + Avant d'essayer de faire communiquer Mercurial avec un serveur ssh, + il est mieux de s'assurer que vous pouvez d'abord utiliser le + ssh normal ou la commande putty + pour communiquer avec le serveur. Si vous vous heurtez a des problèmes en utilisant + ces commandes directement, Mercurial ne fonctionnera sûrement pas. Pire, + il cachera le problème sous-jacent. Chaque fois que vous voulez + déboguer des problèmes de Mercurial liés à ssh, vous devriez d'abord + vous assurer que les commandes du client ssh fonctionne d'abord, + avant de vous inquiéter à propos de savoir si + il y a un problème avec Mercurial. + + La première chose à s'assurer du côté serveur est que + vous puissiez réellement vous connecter depuis une autre machine. Si vous + ne pouvez pas utiliser ssh ou putty + pour vous connecter, le message d'erreur que vous aurez peut vous donner quelques indices + sur ce qui ne fonctionne pas. Les problèmes les plus courants sont les suivants. - If you get a connection refused - error, either there isn't an SSH daemon running on the - server at all, or it's inaccessible due to firewall - configuration. + Si vous avez une erreur connexion refusée, + soit il n'y a pas de démon SSH tournant sur le serveur, soit il est inaccessible à cause + de la configuration du pare-feu. - If you get a no route to host - error, you either have an incorrect address for the server - or a seriously locked down firewall that won't admit its - existence at all. + Si vous avez une erreur no route to host, + soit vous avez une adresse incorrecte pour le serveur + soit un pare-feu sérieusement verrouillé qui ne veut pas du tout reconnaître son existence. - If you get a permission denied - error, you may have mistyped the username on the server, - or you could have mistyped your key's passphrase or the - remote user's password. + Si vous avez une erreur permission denied, + vous pouvez avoir mal tapé le nom d'utilisateur sur le serveur, + ou vous pouvez avoir mal tapé votre passphrase de clé ou + le mot de passe d'utilisateur distant. - In summary, if you're having trouble talking to the - server's ssh daemon, first make sure that one is running at - all. On many systems it will be installed, but disabled, by - default. Once you're done with this step, you should then - check that the server's firewall is configured to allow - incoming connections on the port the ssh daemon is listening - on (usually 22). Don't worry about more exotic possibilities - for misconfiguration until you've checked these two - first. - If you're using an authentication agent on the client side - to store passphrases for your keys, you ought to be able to - log into the server without being prompted for a passphrase or - a password. If you're prompted for a passphrase, there are a - few possible culprits. + En résumé, si vous avez des difficultés pour communiquer avec + le démon ssh du serveur, d'abord assurez-vous qu'il y en a un en fonctionnement. + Sur beaucoup de systèmes, il est installé, mais désactivé, par + défaut. Une fois que c'est fait, vous devriez alors + vérifier que le pare-feu du serveur est configuré pour permettre + les connexions entrantes sur le port que le démon ssh écoute + (habituellement 22). Ne vous inquiétez pas à propos de possibilités plus exotiques + de mauvaise configuration tant que vous n'avez pas vérifier ces deux premières. + + Si vous utilisez un agent d'authentification du côté client + pour stocker les passphrases de vos clés, vous devriez être capable de + vous connecter au serveur sans avoir à entrer une passphrase ou + un mot de passe. Si vous devez entrer une passphrase, il y a + quelques coupables possibles. - You might have forgotten to use - ssh-add or pageant - to store the passphrase. + Vous pouvez avoir oublié d'utiliser + ssh-add ou pageant + pour stocker la passphrase. - You might have stored the passphrase for the - wrong key. + Vous pouvez avoir stocké la passphrase + pour une mauvaise clé. - If you're being prompted for the remote user's password, - there are another few possible problems to check. + Si vous devez entrer le mot de passe d'utilisateur distant, + il y a quelques autres problèmes possibles à vérifier. - Either the user's home directory or their - .ssh - directory might have excessively liberal permissions. As - a result, the ssh daemon will not trust or read their - authorized_keys file. - For example, a group-writable home or Soit le répertoire utilisateur ou le + répertoire .ssh + peut avoir des droits trop tolérants. Comme résultat, + le démon ssh n'aura pas confiance ni ne lira le fichier + authorized_keys. + Par exemple, un group-writable home ou un répertoire .ssh - directory will often cause this symptom. + sera souvent la cause de ce symptôme. + - The user's authorized_keys file may have - a problem. If anyone other than the user owns or can write - to that file, the ssh daemon will not trust or read - it. + Le fichier authorized_keys de l'utilisateur peut avoir + un problème. Si quelqu'un d'autre que l'utilisateur possède ou peut écrire + dans ce fichier, le démon ssh n'aura pas confiance ni ne le lira. - In the ideal world, you should be able to run the - following command successfully, and it should print exactly - one line of output, the current date and time. + Dans le monde idéal, vous devriez être capable d'exécuter la + commande suivante avec succès, et elle devrait imprimer exactement + une ligne en sortie, la date et l'heure actuelle. ssh myserver date - - If, on your server, you have login scripts that print - banners or other junk even when running non-interactive - commands like this, you should fix them before you continue, - so that they only print output if they're run interactively. - Otherwise these banners will at least clutter up Mercurial's - output. Worse, they could potentially cause problems with - running Mercurial commands remotely. Mercurial tries to - detect and ignore banners in non-interactive - ssh sessions, but it is not foolproof. (If - you're editing your login scripts on your server, the usual - way to see if a login script is running in an interactive - shell is to check the return code from the command + + Si, sur votre serveur, vous avec des scripts de connexion qui + impriment des bannières ou d'autre "junk" même en fonctionnement non-interactif + comme ici, vous devriez corriger cela avant de continuer, comme cela elles + imprimeront des sorties que si elles fonctionnent en mode interactif. + Autrement, au minimum, ces bannières encombreront les sorties de Mercurial. + Pire, elles pourront potentiellement causer des problèmes avec des commandes + Mercurial exécutées à distance. Mercurial essaye de détecter et d'ignorer des + bannières dans des sessions ssh non-interactives, mais il + n'est pas infaillible. (Si + vous éditez vos scripts de connexion sur votre serveur, la manière habituelle + de voir si un script de connexion fonctionne dans un shell interactif + est de vérifier le code de retour de la commande tty -s.) - Once you've verified that plain old ssh is working with - your server, the next step is to ensure that Mercurial runs on - the server. The following command should run - successfully: + Lorsque vous avez vérifié que le bon vieux ssh fonctionne + avec votre serveur, l'étape suivante est de s'assurer que Mercurial fonctionne + sur le serveur. La commande suivant devrait fonctionnement correctement : ssh myserver hg version - If you see an error message instead of normal hg version output, this is usually - because you haven't installed Mercurial to /usr/bin. Don't worry if this - is the case; you don't need to do that. But you should check - for a few possible problems. + Si vous voyez un message d'erreur au lieu de la sortie normale de + hg version, c'est habituellement + parce que vous n'avez pas installé Mercurial dans /usr/bin. Ne vous inquiétez pas si + c'est le cas ; vous n'avez pas besoin de le faire. Mais vous devriez + vérifiez quelques problèmes possibles. - Is Mercurial really installed on the server at - all? I know this sounds trivial, but it's worth - checking! + Mercurial est-il vraiment installé sur le + serveur ? Je sais que cela semble évident, mais cela vaut la peine + de vérifier ! - Maybe your shell's search path (usually set - via the PATH environment variable) is - simply misconfigured. + Peut-être que le chemin de recherche de votre shell + (habituellement défini via la variable d'environnementPATH) + est simplement mal configuré. - Perhaps your PATH environment - variable is only being set to point to the location of the - hg executable if the login session is - interactive. This can happen if you're setting the path - in the wrong shell login script. See your shell's - documentation for details. + Peut-être que votre variable d'environnement + PATH pointe vers l'endroit de l'exécutable + hg uniquement si la session est + interactive. Ceci peut arriver si vous mettez le chemin dans + le mauvais script de connextion. Regardez la documentation de + votre shell pour les détails. - The PYTHONPATH environment - variable may need to contain the path to the Mercurial - Python modules. It might not be set at all; it could be - incorrect; or it may be set only if the login is - interactive. + La variable d'environnement PYTHONPATH + peut devoir contenir le chemin vers les modules Python de Mercurial. + Elle peut ne pas être définie ; elle peut être incorrecte ; ou elle peut être + définie que si la connexion est interactive. - If you can run hg version - over an ssh connection, well done! You've got the server and - client sorted out. You should now be able to use Mercurial to - access repositories hosted by that username on that server. - If you run into problems with Mercurial and ssh at this point, - try using the - option to get a clearer picture of what's going on. - - - Using compression with ssh - - Mercurial does not compress data when it uses the ssh - protocol, because the ssh protocol can transparently compress - data. However, the default behavior of ssh clients is - not to request compression. - - Over any network other than a fast LAN (even a wireless - network), using compression is likely to significantly speed - up Mercurial's network operations. For example, over a WAN, - someone measured compression as reducing the amount of time - required to clone a particularly large repository from 51 - minutes to 17 minutes. - - Both ssh and plink - accept a option which - turns on compression. You can easily edit your ~/.hgrc to enable compression for - all of Mercurial's uses of the ssh protocol. Here is how to - do so for regular ssh on Unix-like systems, - for example. + Si vous pouvez exécuter hg version + sur une connexion ssh, bravo ! Vous avez réglé les problèmes du serveur + et du client. Vous devriez maintenant être capable d'utiliser Mercurial pour + accéder à des dépôts hébergés par cet utilisateur sur ce serveur. + Si vous avez des problèmes avec Mercurial et ssh à ce moment, + essayer d'utiliser l'option + pour obtenir une image plus claire de ce qui se passe. + + + Utilisation de la compression avec ssh + + Mercurial ne comprime pas les données quand il utilise + le protocole ssh, car le protocole ssh peut comprimer de manière transparente + les données. De plus, le comportement par défaut des clients ssh est de + ne pas demander de la compression. + + Sur n'importe quel réseau autre qu'un réseau local rapide (même + un réseau sans fil), utiliser la compression améliore significativement la + vitesse des opérations réseau de Mercurial. Par exemple, sur un WAN, + quelqu'un a mesuré que la compression a réduit la durée pour cloner un dépôt + particulièrement grand de 51 minutes à 17 minutes. + + Les deux commandes ssh et plink + acceptent une option qui active + la compression. Vous pouvez facilement éditer votre ~/.hgrc pour activer la compression pour + tous les usages de Mercurial du protocole ssh. Voici comment faire + pour la commande habituelle ssh sur des systèmes Unix-like, + par exemple. [ui] ssh = ssh -C - - If you use ssh on a - Unix-like system, you can configure it to always use - compression when talking to your server. To do this, edit - your .ssh/config file - (which may not yet exist), as follows. + + Si vous utilisez ssh sur un + système Unix-like, vous pouvez le configurer pour toujours utiliser + la compression lors de la connexion avec votre serveur. Pour cela, éditer + votre fichier .ssh/config + (qui peut ne pas encore exister), comme suit. Host hg Compression yes HostName hg.example.com - This defines a hostname alias, - hg. When you use that hostname on the - ssh command line or in a Mercurial - ssh-protocol URL, it will cause - ssh to connect to - hg.example.com and use compression. This - gives you both a shorter name to type and compression, each of - which is a good thing in its own right. + Ceci définit un alias pour le nom d'hôte, + hg. Quand vous utilisez ce nom d'hôte sur la + ligne de commande ssh ou dans une URL Mercurial en + protocole ssh, + ssh se connectera à + hg.example.com et utilisera la compression. Ceci + vous offre à la fois un nom plus court à taper et la compression, + chacun est une bonne chose en lui-même. - Serving over HTTP using CGI - - The simplest way to host one or more repositories in a - permanent way is to use a web server and Mercurial's CGI - support. - - Depending on how ambitious you are, configuring Mercurial's - CGI interface can take anything from a few moments to several - hours. - - We'll begin with the simplest of examples, and work our way - towards a more complex configuration. Even for the most basic - case, you're almost certainly going to need to read and modify - your web server's configuration. + Service sur HTTP grâce à CGI + + La manière la plus simple d'héberger un ou plusieurs dépôts de + manière permanente est d'utiliser un serveur web et le support CGI de Mercurial. + + + En fonction de votre ambition, configurer l'interface CGI + de Mercurial peut vous prendre de quelques instants à plusieurs heures. + + Nous commencerons par le plus simple des exemples, et travailler + vers une configuration plus complexe. Même pour le cas le plus élémentaire, + vous devrez certainement lire et modifier la configuration de votre serveur web. - High pain tolerance required - - Configuring a web server is a complex, fiddly, - and highly system-dependent activity. I can't possibly give - you instructions that will cover anything like all of the - cases you will encounter. Please use your discretion and - judgment in following the sections below. Be prepared to make - plenty of mistakes, and to spend a lot of time reading your - server's error logs. - - If you don't have a strong stomach for tweaking - configurations over and over, or a compelling need to host - your own services, you might want to try one of the public - hosting services that I mentioned earlier. + Grande tolérance à la peine exigée + + Configurer un serveur web est une activité complexe, + délicate, et dépendant fortement du système. Il m'est absolument impossible + de vous donner les instructions qui couvriront tous les cas que vous + rencontrerez. Faites comme bon vous semblera en suivant les sections ci-dessous. + Soyez prêts à faire beaucoup d'erreurs, et à consacrer beaucoup de temps à lire + les logs d'erreur de votre serveur. + + Si vous n'avez pas un estomac solide pour tordre des + configurations à maintes reprises, ou un besoin irrésistible d'héberger vos + propres services, vous pourriez vouloir essayer un des services d'hébergement + public que j'ai mentionné plus tôt. - Web server configuration checklist - - Before you continue, do take a few moments to check a few - aspects of your system's setup. + Liste de contrôle de la configuration du serveur web + + Avant de continuer, prenez quelques instants pour contrôler + quelques aspects de l'installation de votre système. - Do you have a web server installed - at all? Mac OS X and some Linux distributions ship with - Apache, but many other systems may not have a web server - installed. + Avez-vous un serveur web installé ? + Mac OS X et quelques distributions Linux sont fournis avec + Apache, mais beaucoup d'autres systèmes peuvent ne pas avoir de serveur web + installé. - If you have a web server installed, is it - actually running? On most systems, even if one is - present, it will be disabled by default. + Si vous avez un serveur web installé, fonctionne-t-il + réellement ? Sur la plupart des systèmes, même si il y a en un, il sera désactivité + par défaut. - Is your server configured to allow you to run - CGI programs in the directory where you plan to do so? - Most servers default to explicitly disabling the ability - to run CGI programs. + Votre serveur est-il configuré pour vous permettre de + faire fonctionner des programmes CGI dans le répertoire où vous prévoyer de le faire ? + La plupart des serveurs désactivent explicitement l'aptitude à faire fonctionner des + programmes CGI. - If you don't have a web server installed, and don't have - substantial experience configuring Apache, you should consider - using the lighttpd web server instead of - Apache. Apache has a well-deserved reputation for baroque and - confusing configuration. While lighttpd is - less capable in some ways than Apache, most of these - capabilities are not relevant to serving Mercurial - repositories. And lighttpd is undeniably - much easier to get started with than - Apache. - - - - Basic CGI configuration - - On Unix-like systems, it's common for users to have a - subdirectory named something like public_html in their home - directory, from which they can serve up web pages. A file - named foo in this directory will be - accessible at a URL of the form + Si vous n'avez pas de serveur web installé, et n'avez pas + d'expérience solide dans la configuration Apache, vous devriez envisager + d'utiliser le serveur web lighttpd au lieu + d'Apache. Apache a une réputation bien méritée de configuration baroque et + déroutante. Bien que lighttpd ait moins de fonctions + qu'Apache, la plupart de celles-ci ne sont pas utiles pour servir + des dépôts Mercurial. Et lighttpd est incontestablement + beaucoup plus facile pour débuter + qu'Apache. + + + + + Configuration élémentaire de CGI + + Sur les systèmes Unix-like, il est habituel pour les utilisateurs d'avoir un + sous-répertoire nommé quelque chose comme public_html dans leur "home + directory", à partir duquel ils peuvent servir des pages web. Un fichier + appelé foo dans ce répertoire sera + accessible à une URL de la forme http://www.example.com/username/foo. - To get started, find the hgweb.cgi script that should be - present in your Mercurial installation. If you can't quickly - find a local copy on your system, simply download one from the - master Mercurial repository at Pour commencer, trouver le script hgweb.cgi qui devrait être + présent dans votre installation de Mercurial. Si vous ne pouvez pas trouver + rapidement une copie locale sur votre système, téléchargez-le simplement + du dépôt maître de Mercurial à http://www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi. - You'll need to copy this script into your public_html directory, and - ensure that it's executable. + Vous devrez copier ce script dans votre répertoire public_html, et vous assurez qu'il est + exécutable. cp .../hgweb.cgi ~/public_html chmod 755 ~/public_html/hgweb.cgi - The 755 argument to - chmod is a little more general than just - making the script executable: it ensures that the script is - executable by anyone, and that group and - other write permissions are - not set. If you were to leave those - write permissions enabled, Apache's suexec - subsystem would likely refuse to execute the script. In fact, - suexec also insists that the - directory in which the script resides - must not be writable by others. + L'argument 755 de + chmod est un peu plus général que de rendre + le script exécutable: il garantit que le script est + exécutable par n'importe qui, et que les permissions d'écriture pour le group et les + other ne sont + pas définies. Si vous laissez ces + permissions d'écriture activées, le sous-système suexec + d'Apache refuserait probablement d'exécuter le script. En fait, + suexec insiste aussi pour que le + répertoire dans lequel le script réside + ne soit pas inscriptible par d'autres. chmod 755 ~/public_html - What could <emphasis>possibly</emphasis> go - wrong? - - Once you've copied the CGI script into place, - go into a web browser, and try to open the URL - http://myhostname/~myuser/hgweb.cgi, - but brace yourself for instant failure. - There's a high probability that trying to visit this URL - will fail, and there are many possible reasons for this. In - fact, you're likely to stumble over almost every one of the - possible errors below, so please read carefully. The - following are all of the problems I ran into on a system - running Fedora 7, with a fresh installation of Apache, and a - user account that I created specially to perform this - exercise. - - Your web server may have per-user directories disabled. - If you're using Apache, search your config file for a - UserDir directive. If there's none - present, per-user directories will be disabled. If one - exists, but its value is disabled, then - per-user directories will be disabled. Otherwise, the - string after UserDir gives the name of - the subdirectory that Apache will look in under your home - directory, for example Que pourrait-il éventuellement mal + se passer ? + + Une fois que vous avez copié le script CGI à sa place, + allez dans un navigateur et essayer d'ouvrir l'URL + http://myhostname/~myuser/hgweb.cgi, + mais attendez-vous à un échec immédiat. + Il y a une forte probabilité que d'essayer de visiter cette URL + échouera, et il y a beaucoup de raisons possibles pour cela. En + fait, vous devrez probablement trébucher sour pratiquement chacun des + erreurs possibles ci-dessous, donc lisez attentivement. Les + problèmes suivants sont tous ceux que j'ai rencontré sur un système + tournant Fedora 7, avec une nouvelle installation d'Apache, et un + compte utilisateur que j'avais créé spécialement pour réaliser cet + exercice. + + Votre serveur web peut avoir des répertoires "per-user" désactivés. + Si vous utilisez Apache, cherchez une directive UserDir + dans votre fichier de configuration. Si il n'y en a pas, + les répertoires "per-user" seront désactivés. Si il en existe un, + mais que sa valeur est disabled, alors + les répertoires "per-user" seront désactivés. Autrement, la + chaîne de caractères après UserDir donne le nom du + sous-répertoire qu'Apache regardera dans votre répertoire "home", + par exemplepublic_html. - Your file access permissions may be too restrictive. - The web server must be able to traverse your home directory - and directories under your public_html directory, and - read files under the latter too. Here's a quick recipe to - help you to make your permissions more appropriate. + Vos permissions d'accès de fichier peuvent être trop restrictives. + Le serveur web doit être capable de traverser votre répertoire home + et les répertoires sous votre répertoire public_html, et + de lire les fichiers sous le dernier aussi. Voici une recette rapide + pour vous aider à rendre vos permissions plus adéquates. chmod 755 ~ find ~/public_html -type d -print0 | xargs -0r chmod 755 find ~/public_html -type f -print0 | xargs -0r chmod 644 - The other possibility with permissions is that you might - get a completely empty window when you try to load the - script. In this case, it's likely that your access - permissions are too permissive. Apache's - suexec subsystem won't execute a script - that's group- or world-writable, for example. - - Your web server may be configured to disallow execution - of CGI programs in your per-user web directory. Here's - Apache's default per-user configuration from my Fedora - system. + L'autre possibilité avec les permissions est que vous + pourriez obtenir une fenêtre complètement vide lorsque vous essayez de + charger le script. Dans ce cas, c'est probablement que vos permissions + d'accès sont trop permissives. Le sous-système + suexec d'Apache n'exécute pas un script + qui est inscriptible par le groupe ou le monde, par exemple. + + Votre serveur web peut être configuration pour refuser + l'exécution de programmes CGI dans votre répertoire web "per-user". + Voici la configuration "per-user" par défaut d'Apache pour mon + système Fedora. &ch06-apache-config.lst; - If you find a similar-looking - Directory group in your Apache - configuration, the directive to look at inside it is - Options. Add ExecCGI - to the end of this list if it's missing, and restart the web - server. - - If you find that Apache serves you the text of the CGI - script instead of executing it, you may need to either - uncomment (if already present) or add a directive like - this. + Si vous trouvez un groupe qui ressemble à + Directory dans votre configuration Apache, + la directive à regarder est + Options. Ajoutez ExecCGI + à la fin de cette liste si cela manque, et redémarrer le serveur + web. + + Si vous trouvez qu'Apache vous donne le texte du script + CGI au lie de l'exécuter, vous pouvez avoir besoin soit de + décommenter (si déjà présent) ou d'ajouter une directive telle que + celle-ci. AddHandler cgi-script .cgi - - The next possibility is that you might be served with a - colourful Python backtrace claiming that it can't import a - mercurial-related module. This is - actually progress! The server is now capable of executing - your CGI script. This error is only likely to occur if - you're running a private installation of Mercurial, instead - of a system-wide version. Remember that the web server runs - the CGI program without any of the environment variables - that you take for granted in an interactive session. If - this error happens to you, edit your copy of hgweb.cgi and follow the - directions inside it to correctly set your - PYTHONPATH environment variable. - - Finally, you are certain to be - served with another colourful Python backtrace: this one - will complain that it can't find /path/to/repository. Edit - your hgweb.cgi script - and replace the /path/to/repository string - with the complete path to the repository you want to serve - up. - - At this point, when you try to reload the page, you - should be presented with a nice HTML view of your - repository's history. Whew! + + La possibilité suivante est que vous pourriez + obtenir une trace coloré Python prétendant qu'il ne peut pas + importer un module relatif à mercurial. Ceci est + réellement un progrès ! Le serveur est maintenant capable d'exécuter + votre script CGI. Cette erreur arrive probablement si vous exécutez + une installation privée de Mercurial, au lieu d'une version + "system-wide". Souvenez-vous que le serveur web fait fonctionner + le programme CGI sans aucune des variables d'environnement que vous + considérez comme certaines dans une session interactive. Si + cette erreur vous arrive, éditez une copie de hgweb.cgi et suivez les indications + à l'intérieur de celui-ci pour corriger votre variable + d'environnement PYTHONPATH. + + Pour finir, vous êtes certain + d'avoir une autre trace colorée Python : celle-ci + se plaindra de ne pas pouvoir trouver /path/to/repository. Éditez + votre script hgweb.cgi + et remplacez la chaîne de caractères /path/to/repository par le + chemin complet du dépôt que vous voulez servir. + + À ce moment-là, quand vous essayez de recharger la page, + vous devriez avoir une jolie vue HTML de l'historique de votre dépôt. + Ouf ! - Configuring lighttpd - - To be exhaustive in my experiments, I tried configuring - the increasingly popular lighttpd web - server to serve the same repository as I described with - Apache above. I had already overcome all of the problems I - outlined with Apache, many of which are not server-specific. - As a result, I was fairly sure that my file and directory - permissions were good, and that my hgweb.cgi script was properly - edited. - - Once I had Apache running, getting - lighttpd to serve the repository was a - snap (in other words, even if you're trying to use - lighttpd, you should read the Apache - section). I first had to edit the - mod_access section of its config file to - enable mod_cgi and - mod_userdir, both of which were disabled - by default on my system. I then added a few lines to the - end of the config file, to configure these modules. + Configurer lighttpd + + Pour être exhaustif dans mes expériences, j'ai essayé + de configurer le serveur web lighttpd devenu + populaire pour servir le même dépôt que celui décrit plus haut + avec Apache. J'ai déjà surmonter tous les problèmes décrits avec + Apache, beaucoup ne sont pas spécifique à un serveur. + Comme résultat, j'étais pratiquement sûr que mes permissions de + fichiers et de répertoires étaient bonnes, et que mon script + hgweb.cgi était correctement + édité. + + Une fois qu'Apache tournait, avoir + lighttpd pour servir le dépôt était immédiat + (en d'autres mots, même si vous essayez d'utiliser + lighttpd, vous devriez lire la section + Apache). J'ai d'abord dû éditer la section + mod_access de son fichier de configuration + pour activer mod_cgi et + mod_userdir, les deux étaient désactivés + par défaut sur mon système. J'ai ensuite ajouté quelques lignes à + la fin du fichier de configuration, pour ajouter ces modules. userdir.path = "public_html" cgi.assign = (".cgi" => "" ) - With this done, lighttpd ran - immediately for me. If I had configured - lighttpd before Apache, I'd almost - certainly have run into many of the same system-level - configuration problems as I did with Apache. However, I - found lighttpd to be noticeably easier to - configure than Apache, even though I've used Apache for over - a decade, and this was my first exposure to + Un fois ceci fait, lighttpd a + fonctionné immédiatemment pour moi. Si j'avais configuré + lighttpd avant Apache, je serais sans doute + tombé dans beaucoup des mêmes problèmes de configuration + "system-level" comme j'ai eu avec Apache. De plus, j'ai + trouvé lighttpd être notablemen plus facile à + configurer qu'Apache, même si j'ai utilisé Apache depuis plus + d'une décennie, et ceci était ma première expérience avec lighttpd. - - - Sharing multiple repositories with one CGI script - - The hgweb.cgi script - only lets you publish a single repository, which is an - annoying restriction. If you want to publish more than one - without wracking yourself with multiple copies of the same - script, each with different names, a better choice is to use - the hgwebdir.cgi - script. - - The procedure to configure hgwebdir.cgi is only a little more - involved than for hgweb.cgi. First, you must obtain - a copy of the script. If you don't have one handy, you can - download a copy from the master Mercurial repository at + Partager plusieurs dépôts avec un seul script CGI + + Le script hgweb.cgi + vous laisse seulement publier un seul dépôt, ce qui est une limitation + ennuyeuse. Si vous voulez publier plus d'un dépôt + sans "wracking yourself" avec de multiples copies du même + script, chacune avec un nom différent, un meilleur choix est d'utiliser + le script hgwebdir.cgi. + + La procédure pour configurer hgwebdir.cgi est seulement un peu plus + compliquée que pour hgweb.cgi. D'abord, vous devez obtenir + une copie du script. Si vous n'en avez pas une sous la main, vous pouvez + télécharger une copie depuis le dépôt maître de Mercurial à http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi. - You'll need to copy this script into your public_html directory, and - ensure that it's executable. + Vous aurez besoin de copier ce script dans votre + répertoire public_html, et + vous assurer qu'il est exécutable. cp .../hgwebdir.cgi ~/public_html chmod 755 ~/public_html ~/public_html/hgwebdir.cgi - With basic configuration out of the way, try to - visit http://myhostname/~myuser/hgwebdir.cgi - in your browser. It should - display an empty list of repositories. If you get a blank - window or error message, try walking through the list of - potential problems in + Avec une configuration élémentaire "out of the way", essayez de + visiter http://myhostname/~myuser/hgwebdir.cgi + dans votre navigateur. Il devrait afficher une liste vide + de dépôts. Si vous obtenez une fenêtre vide ou un message + d'erreur, essayer de parcourir la liste de problèmes + potentiels dans . - The hgwebdir.cgi - script relies on an external configuration file. By default, - it searches for a file named hgweb.config in the same directory - as itself. You'll need to create this file, and make it - world-readable. The format of the file is similar to a - Windows ini file, as understood by Python's - ConfigParser - web:configparser module. - - The easiest way to configure hgwebdir.cgi is with a section - named collections. This will automatically - publish every repository under the - directories you name. The section should look like - this: + Le script hgwebdir.cgi + se base sur un fichier de configuration externe. Par défaut, + il cherche un fichier nommé hgweb.config dans le même répertoire + que lui. Vous devrez créer ce fichier, et le rendre + lisible par tout le monde. Le format de ce fichier est semblable à + un fichier Windows ini, comme compris par un module + Python ConfigParser + web:configparser. + + La façon la plus facile de configurer hgwebdir.cgi est avec une section + appellée collections. Ceci publiera automatiquement + chaque dépôt sous les répertoires + que vous citez. La section devrait ressembler à ceci : [collections] /my/root = /my/root - Mercurial interprets this by looking at the directory name - on the right hand side of the - = sign; finding repositories - in that directory hierarchy; and using the text on the - left to strip off matching text from the - names it will actually list in the web interface. The - remaining component of a path after this stripping has - occurred is called a virtual path. - - Given the example above, if we have a - repository whose local path is /my/root/this/repo, the CGI - script will strip the leading /my/root from the name, and - publish the repository with a virtual path of this/repo. If the base URL for - our CGI script is - http://myhostname/~myuser/hgwebdir.cgi, the - complete URL for that repository will be + + Mercurial interprète ceci en regardant le nom du répertoire + sur la partie droite du signe + = ; en trouvant les répertoires + dans cette hiérarchie de répertoires ; et en utilisant le texte sur la + gauche pour retirer le texte correspondant des + noms qu'il listera réellement dans l'interface web. + Le restant du chemin après que ce "stripping" a été réalisé est + appelé un chemin virtuel (virtual path). + + Étant donné l'exemple ci-dessus, si vous avez un + dépôt dont le chemin local est /my/root/this/repo, le script CGI + retirera le début /my/root du nom, et + publiera le dépôt avec un chemin virtuel this/repo. Si l'URL de base de + notre script CGI est + http://myhostname/~myuser/hgwebdir.cgi, + l'URL complète URL pour ce dépôt sera http://myhostname/~myuser/hgwebdir.cgi/this/repo. - If we replace /my/root on the left hand side - of this example with /my, then hgwebdir.cgi will only strip off - /my from the repository - name, and will give us a virtual path of root/this/repo instead of + Si nous remplaçons/my/root sur la gauche de + cet exemple par /my, alors hgwebdir.cgi retirera seulement + /my du nom du dépôt, + et nous donnera comme chemin virtuel root/this/repo au lieu de this/repo. - The hgwebdir.cgi - script will recursively search each directory listed in the - collections section of its configuration - file, but it will not recurse into the - repositories it finds. - - The collections mechanism makes it easy - to publish many repositories in a fire and - forget manner. You only need to set up the CGI - script and configuration file one time. Afterwards, you can - publish or unpublish a repository at any time by simply moving - it into, or out of, the directory hierarchy in which you've - configured hgwebdir.cgi to - look. + Le script hgwebdir.cgi + cherchera récursivement dans chaque répertoire listé dans la + section collections de son fichier de configuration, + mais, il ne cherchera pas recursivement + dans les répertoires qu'il trouvera. + + Le mécanisme de collections rend facile + la publication de plusieurs dépôts de façon fire and + forget. Vous devez seulement installer le script CGI + et le fichier de configuration une seule fois. Après, vous pouvez + publier ou "dépublier" un dépôt n'importe quand en le déplaçant simplement + dans, ou hors de la hiérarchie de répertoire dans laquelle vous avez + indiqué à hgwebdir.cgi de + regarder. - Explicitly specifying which repositories to - publish - - In addition to the collections - mechanism, the hgwebdir.cgi script allows you - to publish a specific list of repositories. To do so, - create a paths section, with contents of - the following form. + Spécifier explicitement quels dépôts publier + + En plus du mécanisme de collections, + le script hgwebdir.cgi vous permet + de publier une liste spécifique de dépôts. Pour cela, + créez une section paths, avec un contenu de + la forme suivante. [paths] repo1 = /my/path/to/some/repo repo2 = /some/path/to/another - In this case, the virtual path (the component that will - appear in a URL) is on the left hand side of each - definition, while the path to the repository is on the - right. Notice that there does not need to be any - relationship between the virtual path you choose and the - location of a repository in your filesystem. - - If you wish, you can use both the - collections and paths - mechanisms simultaneously in a single configuration - file. + + Dans ce cas, le chemin virtuel (le composant qui + apparaîtra dans une URL) est sur la gauche de chaque + définition, tandis que le chemin vers le dépôt est sur la + droite. Notez qu'il n'y a pas besoin de relation + entre le chemin virtuel que vous choisissez et + l'emplacement d'un dépôt dans votre système de fichiers. + + Si vous le souhaitez, vous pouvez utiliser + les mécanismes de + collections et de paths + simultanément dans un seul fichier de configuration. - Beware duplicate virtual paths - - If several repositories have the same - virtual path, hgwebdir.cgi will not report - an error. Instead, it will behave unpredictably. + Prendre garde aux chemins virtuels en double + + Si plusieurs dépôts ont le même + chemin virtuel, hgwebdir.cgi ne signalera pas + d'erreur. Au lieu de cela, il se comportera de façon + imprévisible. - Downloading source archives - - Mercurial's web interface lets users download an archive - of any revision. This archive will contain a snapshot of the - working directory as of that revision, but it will not contain - a copy of the repository data. - - By default, this feature is not enabled. To enable it, - you'll need to add an allow_archive item to the - web section of your ~/.hgrc; see below for details. - - - Web configuration options - - Mercurial's web interfaces (the hg - serve command, and the hgweb.cgi and hgwebdir.cgi scripts) have a - number of configuration options that you can set. These - belong in a section named Télécharger des archives de sources + + L'interface web de Mercurial laisse les utilisateurs télécharger + une archive de n'importe quelle révision. Cette archive contiendra une image du + répertoire de travail comme pour cette révision, mais il ne contiendra pas + une copie des données du dépôt. + + Par défaut, cette fonctionnalité n'est pas activée. Pour l'activer, + vous devrez ajouter un élément allow_archive à la section + web de votre ~/.hgrc; voyez plus loin pour des détails. + + + Options de configuration web + + Les interfaces web de Mercurial (la commande hg + serve, et les scripts hgweb.cgi et hgwebdir.cgi) ont un nombre + d'options de configuration que vous pouvez mettre. Celles-ci + appartiennent à une section appelée web. allow_archive: Determines - which (if any) archive download mechanisms Mercurial - supports. If you enable this feature, users of the web - interface will be able to download an archive of whatever - revision of a repository they are viewing. To enable the - archive feature, this item must take the form of a - sequence of words drawn from the list below. + role="rc-item-web">allow_archive : détermine + quels mécanismes de téléchargement d'archive (si il y en a) Mercurial + accepte. Si vous activez cette fonctionnalité, les utilisateurs de + l'interface web seront capable de télécharger une archive de + n'importe quelle révision d'un dépôt qu'ils regardent. Pour activer + la fonction archive, cet élément doit prendre la forme d'une + série de mots pris dans la liste ci-dessous. - bz2: A - tar archive, compressed using - bzip2 compression. This has the - best compression ratio, but uses the most CPU time on - the server. + bz2: une + archive tar, comprimée en utilisant la + compression bzip2. Ceci a le meilleur + taux de compression, mais utilise le plus de temps processeur sur + le serveur. - gz: A - tar archive, compressed using - gzip compression. + gz: une + archive tar, comprimée en utilisant la + compression gzip. - zip: A - zip archive, compressed using LZW - compression. This format has the worst compression - ratio, but is widely used in the Windows world. + zip: une + archive zip, comprimée en utilisant la + compression LZW. Ce format a le pire taux de compression, + mais il est largement utilisé dans le monde Windows. - If you provide an empty list, or don't have an - allow_archive entry at - all, this feature will be disabled. Here is an example of - how to enable all three supported formats. + Si vous fournissez une liste vide, ou n'avez pas + d'entrée allow_archive du tout, + cette fonctionnalité sera désactivée. Voici un exemple de + comment activer les trois formats supportés. [web] allow_archive = bz2 gz zip allowpull: - Boolean. Determines whether the web interface allows - remote users to hg pull - and hg clone this - repository over HTTP. If set to no or - false, only the - human-oriented portion of the web interface - is available. + Boolean. Détermine si l'interface web permet aux + utilisateurs distants de hg pull + et hg clone ce + dépôt sur HTTP. Si mis à no ou + false, seule la partie + orienté humain de l'interface web + est disponible. + contact: - String. A free-form (but preferably brief) string - identifying the person or group in charge of the - repository. This often contains the name and email - address of a person or mailing list. It often makes sense - to place this entry in a repository's own .hg/hgrc file, but it can make - sense to use in a global ~/.hgrc if every repository - has a single maintainer. + String. Une chaîne de caractères "free-form" (mais de préférence brève) + identifiant la personne ou le groupe responsable du + dépôt. Ceci contient souvent le nom et l'adresse électronique + d'une personne ou d'une liste de distribution. Il est judicieux de + placer cette entrée dans le fichier .hg/hgrc du dépôt, mais il peut être + judicieux d'utiliser un ~/.hgrc global si chaque dépôt + a un seul "mainteneur". maxchanges: - Integer. The default maximum number of changesets to - display in a single page of output. + Integer. La valeur maximum par défaut du nombre de changesets à + afficher dans une seule page de sortie. maxfiles: - Integer. The default maximum number of modified files to - display in a single page of output. + Integer. Le nombre maximum par défaut de fichier modifiés à + à afficher dans une seule page de sortie. stripes: - Integer. If the web interface displays alternating - stripes to make it easier to visually align - rows when you are looking at a table, this number controls - the number of rows in each stripe. + Integer. Si l'interface web affiche alternativement desIf the web interface displays alternating + rayures pour rendre plus facile l'alignement visuel + des lignes lorsque vous regarder une table, ce nombre contrôle + le nombre de lignes dans chaque rayure. + style: Controls the template - Mercurial uses to display the web interface. Mercurial - ships with several web templates. + role="rc-item-web">style: Contrôle le "modèle" + que Mercurial utilise pour afficher l'interface web. Mercurial + est livré avec plusieurs "modèles" web. - coal is monochromatic. + coal est monochromatique. - gitweb emulates the visual - style of git's web interface. + gitweb émule le style visuel + de l'interface web de git. - monoblue uses solid blues and - greys. + monoblue utilise des bleus et des + gris massifs. - paper is the default. + paper est le "modèle" par défaut. - spartan was the default for a - long time. + spartan a été le "modèle" par défaut + durant longtemps. - You can - also specify a custom template of your own; see - for details. Here, you can - see how to enable the gitweb - style. + Vous pouvez aussi spécifiez un "modèle" personnalisé à vous; + voyez pour des détails. Ici, vous pouvez + voir comment activer le style gitweb. [web] style = gitweb templates: - Path. The directory in which to search for template - files. By default, Mercurial searches in the directory in - which it was installed. + Path. Le répertoire dans lequel chercher les fichiers "modèles". + Par défaut, Mercurial cherche dans le répertoire dans lequel + il a été installé. - If you are using hgwebdir.cgi, you can place a few - configuration items in a web - section of the hgweb.config file instead of a - ~/.hgrc file, for - convenience. These items are motd and Si vous utilisez hgwebdir.cgi, vous pouvez mettre quelques + éléments de configuration dans une section web + du fichier hgweb.config au lieu d'un fichier + ~/.hgrc, par + commodité. Ces éléments sont motd et style. - Options specific to an individual repository - - A few web configuration - items ought to be placed in a repository's local .hg/hgrc, rather than a user's - or global ~/.hgrc. + Options spécifiques à un dépôt individuel + + Quelques éléments de configuration web + devraient être mis dans .hg/hgrc local à un dépôt, plutôt que dans un + ~/.hgrc d'utilisateur ou global. description: String. A - free-form (but preferably brief) string that describes - the contents or purpose of the repository. + role="rc-item-web">description: String. Une chaîne de + caractères "free-form" (mais de préférence brève) qui décrit + le contenu ou le but du dépôt. name: - String. The name to use for the repository in the web - interface. This overrides the default name, which is - the last component of the repository's path. + String. Le nom à utiliser pour le dépôt dans l'interface + web. Ceci prime sur le nom par défaut, qui est le dernier + composant du chemin du dépôt. - Options specific to the <command role="hg-cmd">hg - serve</command> command - - Some of the items in the web section of a ~/.hgrc file are only for use - with the hg serve - command. + Options spécifiques à la commande <command role="hg-cmd">hg + serve</command> + + Certaines entrées dans la section web d'un fichier ~/.hgrc sont là seulement pour être utilisée + avec la commande hg serve. accesslog: - Path. The name of a file into which to write an access - log. By default, the hg - serve command writes this information to - standard output, not to a file. Log entries are written - in the standard combined file format used - by almost all web servers. + Path. Le nom d'un fichier dans lequel écrire le "log" d'accès. + Par défaut, la commande hg + serve écrit cette information sur la sortie + standard, pas dans un fichier. Les entrées de "log" sont écrites + dans le format de fichier standard combined utilisé + par pratiquement tous les serveurs web. address: - String. The local address on which the server should - listen for incoming connections. By default, the server - listens on all addresses. + String. L'adresse locale sur laquelle le serveur devrait + écouter les connexions entrantes. Par défaut, le serveur + écoute sur toutes les adresses. errorlog: - Path. The name of a file into which to write an error - log. By default, the hg - serve command writes this information to - standard error, not to a file. + Path. Le nom d'un fichier dans lequel écrire le "log" d'erreur. + Par défaut, la commande hg + serve écrit cette information sur la sortie erreur, + pas dans un fichier. ipv6: - Boolean. Whether to use the IPv6 protocol. By default, - IPv6 is not used. + Boolean. Si il faut utiliser le protocole IPv6. Par défaut, + IPv6 n'est pas utilisé. port: - Integer. The TCP port number on which the server should - listen. The default port number used is 8000. + Integer. Le numéro de port TCP sur lequel le serveur devrait + écouter. Le numéro de port par défaut utilisé est 8000. - Choosing the right <filename - role="special">~/.hgrc</filename> file to add <literal - role="rc-web">web</literal> items to - - It is important to remember that a web server like - Apache or lighttpd will run under a user - ID that is different to yours. CGI scripts run by your - server, such as hgweb.cgi, will usually also run - under that user ID. - - If you add web items to - your own personal ~/.hgrc file, CGI scripts won't read that - ~/.hgrc file. Those - settings will thus only affect the behavior of the hg serve command when you run it. - To cause CGI scripts to see your settings, either create a - ~/.hgrc file in the - home directory of the user ID that runs your web server, or - add those settings to a system-wide hgrc file. + Choisir le bon fichier <filename + role="special">~/.hgrc</filename> auquel ajouter les éléments <literal + role="rc-web">web</literal> + + Il est important de se souvenir qu'un serveur web comme + Apache ou lighttpd fonctionnera avec un ID utilisateur + qui est différent du vôtre. Les scripts CGI fonctionnant sur votre serveur, + tels que hgweb.cgi, s'exécuteront habituellement aussi + sous un autre ID utilisateur. + + Si vous ajoutez des éléments web à + votre propre fichier ~/.hgrc personnel, + les scripts CGI ne pourront pas lire ce fichier + ~/.hgrc. Ces réglages + toucheront donc seulement le comportement de la commande hg serve quand vous l'exécuterez. + Pour faire voir vos réglages aux scripts CGI, soit créez un + fichier ~/.hgrc dans le répertoire + "home" de l'utilisateur qui exécute votre serveur web, soit + ajouter ces réglages dans un fichier hgrc "system-wide". - System-wide configuration - - On Unix-like systems shared by multiple users (such as a - server to which people publish changes), it often makes sense to - set up some global default behaviors, such as what theme to use - in web interfaces. - - If a file named /etc/mercurial/hgrc - exists, Mercurial will read it at startup time and apply any - configuration settings it finds in that file. It will also look - for files ending in a .rc extension in a - directory named /etc/mercurial/hgrc.d, and - apply any configuration settings it finds in each of those - files. - - - Making Mercurial more trusting - - One situation in which a global hgrc - can be useful is if users are pulling changes owned by other - users. By default, Mercurial will not trust most of the - configuration items in a .hg/hgrc file - inside a repository that is owned by a different user. If we - clone or pull changes from such a repository, Mercurial will - print a warning stating that it does not trust their + Configuration "system-wide" + + Sur des systèmes "Unix-like" partagé par plusieurs utilisateurs + (tel qu'un serveur où les gens publient des modifications), il est souvent judicieux + de définir certains comportement globaux par défaut, tels que le thème à utiliser + dans les interfaces web. + + Si un fichier appelé /etc/mercurial/hgrc + existe, Mercurial le lira au démarrage et appliquera tous les réglages + de configuration qu'il trouve dans ce fichier. Il regardera aussi + les fichiers finissant par une extension .rc dans un + répertoire appelé /etc/mercurial/hgrc.d, et + appliquera tous les réglages de configuration qu'il trouve dans chacun + de ces fichiers. + + + Rendre Mercurial plus confiant + + Une situation dans laquelle un hgrc + global peut être utile est si des utilisateurs "pullent" des modifications + faites par d'autres utilisateurs. Par défaut, Mercurial can be useful is if users are pulling changes owned by other + users. By default, Mercurial ne se fiera pas à la plupart des + entrées de configuration dans un fichier .hg/hgrc + à l'intérieur d'un dépôt qui appartient à un utilisateur différent. Si nous + clonons ou "pullons" des modifications d'un tel dépôt, Mercurial + affichera un avertissement indiquant qu'il ne fait pas confiance aux .hg/hgrc. - If everyone in a particular Unix group is on the same team - and should trust each other's - configuration settings, or we want to trust particular users, - we can override Mercurial's skeptical defaults by creating a - system-wide hgrc file such as the - following: + Si quelqu'un dans un groupe Unix particulier est dans la même équipe + et devrait avoir confiance dans chaque réglage + de configuration des autres, ou si nous voulons avoir confiance dans des utilisateurs + particuliers, nous pouvons passer outre les défauts sceptiques de Mercurial + en créant un fichier hgrc "system-wide" tel que celui qui + suit :: # Save this as e.g. /etc/mercurial/hgrc.d/trust.rc [trusted] @@ -1596,7 +1588,6 @@ -