annotate es/collab.tex @ 521:59fbfb7e790c

translated some more comments
author Javier Rojas <jerojasro@devnull.li>
date Mon, 17 Nov 2008 20:04:37 -0500
parents 7f5d542be96b
children 4a1dc5e8e2ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
1 \chapter{Colaborar con otros}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
2 \label{cha:collab}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
3
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
4 Debido a su naturaleza descentralizada, Mercurial no impone política
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
5 alguna de cómo deben trabajar los grupos de personas. Sin embargo, si
513
c7234c5d01b2 corrected typo
Javier Rojas <jerojasro@devnull.li>
parents: 511
diff changeset
6 usted es nuevo al control distribuido de versiones, es bueno tener
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
7 herramientas y ejemplos a la mano al pensar en posibles modelos de
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
8 flujo de trabajo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
9
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
10 \section{La interfaz web de Mercurial}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
11
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
12 Mercurial tiene una poderosa interfaz web que provee bastantes
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
13 capacidades útiles.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
14
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
15 Para uso interactivo, la interfaz le permite visualizar uno o varios
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
16 repositorios. Puede ver la historia de un repositorio, examinar cada
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
17 cambio(comentarios y diferencias), y ver los contenidos de cada
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
18 directorio y fichero.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
19
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
20 Adicionalmente la interfaz provee feeds de RSS de los cambios de los
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
21 repositorios. Que le permite ``subscribirse''a un repositorio usando
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
22 su herramienta de lectura de feeds favorita, y ser notificado
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
23 automáticamente de la actividad en el repositorio tan pronto como
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
24 sucede. Me gusta mucho más este modelo que el estar suscrito a una
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
25 lista de correo a la cual se envían las notificaciones, dado que no
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
26 requiere configuración adicional de parte de quien sea que está
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
27 administrando el repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
28
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
29 La interfaz web también permite clonar repositorios a los usuarios
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
30 remotos, jalar cambios, y (cuando el servidor está configurado para
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
31 permitirlo) publicar cambios en el mismo. El protocolo de tunneling
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
32 de Mercurial comprime datos agresivamente, de forma que trabaja
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
33 eficientemente incluso con conexiones de red con poco ancho de banda.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
34
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
35 La forma más sencilla de iniciarse con la interfaz web es usar su
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
36 navegador para visitar un repositorio existente, como por ejemplo el
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
37 repositorio principal de Mercurial \url{http://www.selenic.com/repo/hg?style=gitweb}.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
38
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
39 Si está interesado en proveer una interfaz web a sus propios
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
40 repositorios, Mercurial provee dos formas de hacerlo. La primera es
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
41 usando la orden \hgcmd{serve}, que está enfocada a servir ``de forma
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
42 liviana'' y por intervalos cortos. Para más detalles de cómo usar
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
43 esta orden vea la sección~\ref{sec:collab:serve} más adelante. Si
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
44 tiene un repositorio que desea hacer permanente, Mercurial tiene
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
45 soporte embebido del \command{ssh} para publicar cambios con seguridad
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
46 al repositorio central, como se documenta en la
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
47 sección~\ref{sec:collab:ssh}. Es muy usual que se publique una copia
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
48 de sólo lectura en el repositorio que está corriendo sobre HTTP usando
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
49 CGI, como en la sección~\ref{sec:collab:cgi}. Publicar sobre HTTP
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
50 satisface las necesidades de la gente que no tiene permisos de
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
51 publicación y de aquellos que quieren usar navegadores web para
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
52 visualizar la historia del repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
53
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
54 \subsection{Trabajo con muchas ramas}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
55
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
56 Los proyectos de cierta talla tienden naturlamente a progresar de
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
57 forma simultánea en varios frentes. En el caso del software, es común
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
58 que un proyecto tenga versiones periódicas oficiales. Una versión
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
59 puede entrar a ``modo mantenimiento'' por un tiempo después de su
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
60 primera publicación; las versiones de mantenimiento tienden a contener
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
61 solamente arreglos de fallos, pero no nuevas características. En
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
62 paralelo con las versiones de mantenimiento puede haber una o muchas
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
63 versiones futuras pueden estar en desarrollo. La gente usa normalmente
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
64 la palabra ``rama'' para referirse a una de las direcciones
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
65 ligeramente distintas en las cuales procede el desarrollo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
66
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
67 Mercurial está especialmente preparado para administrar un buen número
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
68 de ramas simultáneas pero no idénticas. Cada ``dirección de
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
69 desarrollo'' puede vivir en su propio repositorio central, y puede
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
70 mezclar los cambios de una a otra de acuerdo con las necesidades. Dado
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
71 que los repositorios son independientes, uno del otro, los cambios
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
72 inestables de una rama de desarrollo nunca afectarán una rama estable
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
73 a menos que alguien explícitamente mezcle los cambios.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
74
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
75 A continuación un ejemplo de cómo podría hacerse esto en la
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
76 práctica. Digamos que tiene una ``rama principal'' en un servidor
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
77 central.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
78 \interaction{branching.init}
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
79 Alguien lo clona, hace cambios locales, los prueba, y los publica allí
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
80 mismo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
81
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
82 Una vez que la rama principal alcanza una estado de versión se puede
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
83 usar la orden \hgcmd{tag} para dar un nombre permanente a la revisión.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
84 \interaction{branching.tag}
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
85 Digamos que en la rama principal ocurre más desarrollo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
86 \interaction{branching.main}
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
87 Cuando se usa la etiqueta con que se identificó la versión, la gente
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
88 puede clonar el repositorio en cualquier momento en el futuro
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
89 empleando \hgcmd{update} para obtener una copia del directorio de
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
90 trabajo exacta como cuando se creó la etiqueta de la revisión que se
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
91 consignó.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
92 \interaction{branching.update}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
93
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
94 Adicionalmente, justo después de que la rama principal se etiquete,
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
95 alguien puede clonarla en el servidor a una nueva rama ``estable'',
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
96 también en el servidor.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
97 \interaction{branching.clone}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
98
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
99 Alguien que requiera hacer un cambio en la rama estable puede clonar
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
100 \emph{ese} repositorio, hacer sus cambios, consignar y publicarlos
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
101 posteriormente al inicial.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
102 \interaction{branching.stable}
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
103 Puesto que los repositorios de Mercurial son independientes, y que
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
104 Mercurial no mueve los cambios de un lado a otro automáticamente, las
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
105 ramas estable y principal están \emph{aisladas} la una de la otra.
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
106 Los cambios que haga en la rama principal no ``se filtran'' a la rama
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
107 estable o vice versa.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
108
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
109 Es usual que los arreglos de fallos de la rama estable deban hacerse
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
110 aparecer en la rama principal también. En lugar de reescribir el
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
111 arreglo del fallo en la rama principal, puede jalar y mezclar los
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
112 cambios de la rama estable a la principal, Mercurial traerá tales
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
113 arreglos por usted.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
114 \interaction{branching.merge}
511
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
115 La rama principal contendtrá aún los cambios que no están en la
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
116 estable y contendrá además todos los arreglos de fallos de la rama
a9ea523446cc Started translating collab chapter to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 501
diff changeset
117 estable. La rama estable permanece incólume a tales cambios.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
118
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
119 \subsection{Ramas de Características}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
120
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
121 En proyectos grandes, una forma efectiva de administrar los cambios es
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
122 dividir el equipo en grupos más pequeños. Cada grupo tiene una rama
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
123 compartida, clonada de una rama ``principal'' que conforma el proyecto
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
124 completo. Aquellos que trabajan en ramas individuales típicamente
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
125 están aislados de los desarrollos de otras ramas.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
126
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
127 \begin{figure}[ht]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
128 \centering
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
129 \grafix{feature-branches}
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
130 \caption{Ramas de Características}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
131 \label{fig:collab:feature-branches}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
132 \end{figure}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
133
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
134 Cuando una rama particular alcanza un estado deseado, alguien del
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
135 equipo de características jala y fusiona de la rama principal hacia
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
136 la rama de características y publica posteriormente a la rama principal.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
137
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
138 \subsection{El tren de publicación}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
139
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
140 Algunos proyectos se organizan al estilo``tren'': Una versión se
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
141 planifica para ser liberada cada cierto tiempo, y las características
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
142 que estén listas cuando ha llegado el momento ``tren'', se incorporan.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
143
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
144 Este modelo tiene cierta similitud a las ramas de características. La
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
145 diferencia es que cuando una característica pierde el tren, alguien en
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
146 el equipo de características jala y fusiona los cambios que se fueron
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
147 en la versión liberada hacia la rama de característica, y el trabajo
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
148 continúa sobre lo fusionado para que la característica logre estar en
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
149 la próxima versión.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
150
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
151 \subsection{El modelo del kernel linux}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
152
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
153 El desarrollo del Kernel Linux tiene una estructura jerárquica
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
154 bastante horizontal, rodeada de una nube de caos aparente. Dado que la
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
155 mayoría de desarrolladores usan \command{git}, una herramienta distribuida
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
156 de control de versiones con capacidades similares a Mercurial, resulta
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
157 de utilidad describir la forma en que el trabajo fluye en tal
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
158 ambiente; si le gustan las ideas, la aproximación se traduce bien
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
159 entre Git y Mercurial.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
160
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
161 En el centro de la comunidad está Linus Torvalds, el creador de Linux.
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
162 Él publica un único repositorio que es considerado el árbol
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
163 ``oficial'' actual por la comunidad completa de
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
164 desarrolladores. Cualquiera puede clonar el árbol de Linus, pero él es
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
165 muy selectivo acerca de los árboles de los cuales jala.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
166
518
7f5d542be96b corrected some typos, added some accents. jerojasro is playing to the reviewer too early ;)
Javier Rojas <jerojasro@devnull.li>
parents: 516
diff changeset
167 Linus tiene varios ``lugartenientes confiables''. Como regla, él jala
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
168 todos los cambios que ellos publican, en la mayoría de los casos sin
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
169 siquiera revisarlos. Algunos de sus lugartenientes generalmente
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
170 aceptan ser los ``mantenedores'', responsables de subsistemas
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
171 específicos dentro del kernel. Si un hacker cualquiera desea hacer un
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
172 cambio a un subsistema y busca que termine en el árbol de Linus, debe
518
7f5d542be96b corrected some typos, added some accents. jerojasro is playing to the reviewer too early ;)
Javier Rojas <jerojasro@devnull.li>
parents: 516
diff changeset
173 encontrar quién es el mantenedor del subsistema y solicitarle que
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
174 tenga en cuenta su cambio. Si el mantenedor revisa los cambios y está
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
175 de acuerdo en tomarlos, estos pasarán al árbol de Linus de acuerdo a
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
176 lo expuesto.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
177
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
178 Cada lugarteniente tiene su forma particular de revisar, aceptar y
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
179 publicar los cambios; y para decidir cuando hacerlos presentes a
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
180 Linus. Adicionalmente existen varias ramas conocidas que mucha gente
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
181 usa para propósitos distintos. Por ejemplo, pocas personas mantienen
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
182 repositorios ``estables'' de versiones anteriores del kernel, a los
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
183 cuales aplican arreglos de fallos críticos necesarios. Algunos
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
184 mantenedores publican varios árboles: uno para cambios
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
185 experimentales; uno para cambios que van a ofrecer al mantenedor
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
186 principal; y así sucesivamente. Otros publican un solo árbol.
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
187
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
188 Este modelo tiene dos características notables. La primera es que son
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
189 de ``jalar exclusivamente''. Usted debe solicitar, convencer o
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
190 incluso rogar a otro desarrollador para que tome sus cabmios, porque
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
191 casi no hay árboles en los cuales más de una persona pueda publicar, y
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
192 no hay forma de publicar cambios en un árbol que otra persona controla.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
193
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
194 El segundo está basado en reputación y meritocracia. Si usted es un
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
195 desconocido, Linus probablemente ignorará sus cambios, sin siquiera
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
196 responderle. Pero un mantenedor de un subsistema probablemente los
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
197 revisara, y los acogerá en caso de que aprueben su criterio de
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
198 aplicabilidad. A medida que usted ofrezca ``mejores'' cambios a un
518
7f5d542be96b corrected some typos, added some accents. jerojasro is playing to the reviewer too early ;)
Javier Rojas <jerojasro@devnull.li>
parents: 516
diff changeset
199 mantenedor, habrá más posibilidad de que se confíe en su juicio y se
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
200 acepten los cambios. Si usted es reconocido y matiene una rama
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
201 durante bastante tiempo para algo que Linus no ha aceptado, personas
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
202 con intereses similares pueden jalar sus cambios regularmente para
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
203 estar al día con su trabajo.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
204
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
205 La reputación y meritocracia no necesariamente es transversal entre
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
206 ``personas'' de diferentes subsistemas. Si usted es respetado pero es
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
207 un hacker en almacenamiento y trata de arreglar un fallo de redes,
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
208 tal cambio puede recibir un nivel de escrutinio de un mantenedor de
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
209 redes comparable con el que se le haría a un completo extraño.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
210
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
211 Personas que vienen de proyectos con un ordenamiento distinto, sienten
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
212 que el proceso comparativamente caótico del Kernel Linux es
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
213 completamente lunático. Es objeto de los caprichos individuales; la
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
214 gente desecha cambios cuando lo desean; y la fase de desarrollo es
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
215 alucinante. A pesar de eso Linux es una pieza de software exitosa y
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
216 bien reconocida.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
217
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
218 \subsection{Solamente jalar frente a colaboración pública}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
219
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
220 Una fuente perpetua de discusiones en la comunidad de código abierto
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
221 yace en el modelo de desarrollo en el cual la gente solamente jala
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
222 cambios de otros ``es mejor que'' uno en el cual muchas personas
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
223 pueden publicar cambios a un repositorio compartido.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
224
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
225 Tícamente los partidarios del modelo de publicar usan las herramientas
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
226 que se apegan a este modelo. Si usted usa una herramienta
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
227 centralizada de control de versiones como Subversion, no hay forma de
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
228 elegir qué modelo va a usar: La herramienta le ofrece publicación
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
229 compartida, y si desea hacer cualquier otra cosa, va a tener que
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
230 aplicar una aproximación artificial (tal como aplicar parches a mano).
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
231
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
232 Una buena herramienta distribuida de control de versiones, tal como
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
233 Mercurial soportará los dos modelos. Usted y sus colaboradores
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
234 pueden estructurar cómo trabajarán juntos basados en sus propias
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
235 necesidades y preferencias, sin depender de las peripecias que la
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
236 herramienta les obligue a hacer.
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
237
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
238 \subsection{Cuando la colaboración encuentra la administración ramificada}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
239
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
240 Una vez que usted y su equipo configurar algunos repositorios
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
241 compartidos y comienzan a propagar cambios entre sus repositorios
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
242 locales y compartidos, comenzará a encarar un reto relacionado, pero
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
243 un poco distinto: Administrar las direcciones en las cuales su equipo
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
244 puede moverse. A pesar de que está intimamente ligado acerca de cómo
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
245 interactúa su equipo, es lo suficientemente denso para ameritar un
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
246 tratamiento en el capítulo~\ref{chap:branch}.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
247
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
248 \section{Aspectos técnicos de la colaboración}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
249
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
250 Lo que resta del capítulo lo dedicamos a las cuestiones de servir
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
251 datos a sus colaboradores.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
252
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
253 \section{Compartir informalmente con \hgcmd{serve}}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
254 \label{sec:collab:serve}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
255
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
256 La orden \hgcmd{serve} de Mercurial satisface de forma espectacular
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
257 las necesidades de un grupo pequeño, acoplado y de corto
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
258 tiempo. Se constituye en una demostración de cómo se siente usar los
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
259 comandos usando la red.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
260
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
261 Ejecute \hgcmd{serve} dentro de un repositorio, y en pocos segundos
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
262 iniciará un servidor HTTP especializado; aceptará conexiones desde
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
263 cualquier cliente y servirá datos de este repositorio mientrs lo
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
264 mantenga funcionando. Todo el que sepa el URL del servidor que ha
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
265 iniciado, y que puede comunicarse con su computador por la red, puede
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
266 usar un navegador web o Mercurial para leer datos del repositorio. Un
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
267 URL para una instancia de \hgcmd{serve} ejecutándose en un portátil
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
268 debería lucir algo \Verb|http://my-laptop.local:8000/|.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
269
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
270 La orden \hgcmd{serve} \emph{no} es un servidor web de propósito
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
271 general. Solamente puede hacer dos cosas:
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
272 \begin{itemize}
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
273 \item Permitir que se pueda visualizar la historia del repositorio que
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
274 está sirviendo desde navegadores web.
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
275 \item Hablar el protocolo de conexión de Mercurial para que puedan hacer
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
276 \hgcmd{clone} o \hgcmd{pull} (jalar) cambios de tal repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
277 \end{itemize}
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
278 En particular, \hgcmd{serve} no permitirá que los usuarios remotos
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
279 puedan \emph{modificar} su repositorio. Es de tipo solo lectura.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
280
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
281 Si está comenzando con Mercurial, no hay nada que le impida usar
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
282 \hgcmd{serve} para servir un repositorio en su propio computador, y
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
283 usar posteriormente órdenes como \hgcmd{clone}, \hgcmd{incoming}, para
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
284 comunicarse con el servidor como si el repositorio estuviera alojado
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
285 remotamente. Lo que además puede ayudarle a adecuarse rápidamente para
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
286 usar comandos en repositorios alojados en la red.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
287
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
288 \subsection{Cuestiones adicionales para tener en cuenta}
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
289
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
290 Dado que permite lectura sin autenticación a todos sus clientes,
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
291 debería usar \hgcmd{serve} exclusivamente en ambientes en los cuáles
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
292 no tenga problema en que otros vean, o en los cuales tenga control
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
293 completo acerca de quien puede acceder a su red y jalar cambios de su
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
294 repositorio.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
295
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
296 La orden \hgcmd{serve} no tiene conocimiento acerca de programas
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
297 cortafuegos que puedan estar instalados en su sistema o en su red. No
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
298 puede detectar o controlar sus cortafuegos. Si otras personas no
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
299 pueden acceder a su instancia \hgcmd{serve}, lo siguiente que debería hacer
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
300 (\emph{después} de asegurarse que tienen el URL correcto) es verificar
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
301 su configuración de cortafuegos.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
302
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
303 De forma predeterminada, \hgcmd{serve} escucha conexiones entrantes en
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
304 el puerto~8000. Si otro proceso está escuchando en tal puerto, usted
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
305 podrá especificar un puerto distinto para escuchar con la opción
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
306 \hgopt{serve}{-p} .
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
307
516
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
308 Normalmente, cuando se inicia \hgcmd{serve}, no imprime nada, lo cual
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
309 puede ser desconcertante. Si desea confirmar que en efecto está
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
310 ejecutándose correctamente, y darse cuenta qué URL debería enviar a
7e838acf7350 translated more paragraphs of collab to spanish
Igor TAmara <igor@tamarapatino.org>
parents: 513
diff changeset
311 sus colaboradores, inícielo con la opción \hggopt{-v}.
501
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
312
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
313 \section{Using the Secure Shell (ssh) protocol}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
314 \label{sec:collab:ssh}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
315
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
316 You can pull and push changes securely over a network connection using
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
317 the Secure Shell (\texttt{ssh}) protocol. To use this successfully,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
318 you may have to do a little bit of configuration on the client or
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
319 server sides.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
320
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
321 If you're not familiar with ssh, it's a network protocol that lets you
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
322 securely communicate with another computer. To use it with Mercurial,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
323 you'll be setting up one or more user accounts on a server so that
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
324 remote users can log in and execute commands.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
325
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
326 (If you \emph{are} familiar with ssh, you'll probably find some of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
327 material that follows to be elementary in nature.)
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
328
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
329 \subsection{How to read and write ssh URLs}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
330
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
331 An ssh URL tends to look like this:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
332 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
333 ssh://bos@hg.serpentine.com:22/hg/hgbook
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
334 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
335 \begin{enumerate}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
336 \item The ``\texttt{ssh://}'' part tells Mercurial to use the ssh
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
337 protocol.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
338 \item The ``\texttt{bos@}'' component indicates what username to log
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
339 into the server as. You can leave this out if the remote username
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
340 is the same as your local username.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
341 \item The ``\texttt{hg.serpentine.com}'' gives the hostname of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
342 server to log into.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
343 \item The ``:22'' identifies the port number to connect to the server
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
344 on. The default port is~22, so you only need to specify this part
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
345 if you're \emph{not} using port~22.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
346 \item The remainder of the URL is the local path to the repository on
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
347 the server.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
348 \end{enumerate}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
349
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
350 There's plenty of scope for confusion with the path component of ssh
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
351 URLs, as there is no standard way for tools to interpret it. Some
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
352 programs behave differently than others when dealing with these paths.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
353 This isn't an ideal situation, but it's unlikely to change. Please
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
354 read the following paragraphs carefully.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
355
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
356 Mercurial treats the path to a repository on the server as relative to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
357 the remote user's home directory. For example, if user \texttt{foo}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
358 on the server has a home directory of \dirname{/home/foo}, then an ssh
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
359 URL that contains a path component of \dirname{bar}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
360 \emph{really} refers to the directory \dirname{/home/foo/bar}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
361
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
362 If you want to specify a path relative to another user's home
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
363 directory, you can use a path that starts with a tilde character
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
364 followed by the user's name (let's call them \texttt{otheruser}), like
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
365 this.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
366 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
367 ssh://server/~otheruser/hg/repo
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
368 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
369
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
370 And if you really want to specify an \emph{absolute} path on the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
371 server, begin the path component with two slashes, as in this example.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
372 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
373 ssh://server//absolute/path
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
374 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
375
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
376 \subsection{Finding an ssh client for your system}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
377
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
378 Almost every Unix-like system comes with OpenSSH preinstalled. If
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
379 you're using such a system, run \Verb|which ssh| to find out if
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
380 the \command{ssh} command is installed (it's usually in
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
381 \dirname{/usr/bin}). In the unlikely event that it isn't present,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
382 take a look at your system documentation to figure out how to install
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
383 it.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
384
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
385 On Windows, you'll first need to choose download a suitable ssh
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
386 client. There are two alternatives.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
387 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
388 \item Simon Tatham's excellent PuTTY package~\cite{web:putty} provides
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
389 a complete suite of ssh client commands.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
390 \item If you have a high tolerance for pain, you can use the Cygwin
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
391 port of OpenSSH.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
392 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
393 In either case, you'll need to edit your \hgini\ file to tell
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
394 Mercurial where to find the actual client command. For example, if
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
395 you're using PuTTY, you'll need to use the \command{plink} command as
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
396 a command-line ssh client.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
397 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
398 [ui]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
399 ssh = C:/path/to/plink.exe -ssh -i "C:/path/to/my/private/key"
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
400 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
401
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
402 \begin{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
403 The path to \command{plink} shouldn't contain any whitespace
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
404 characters, or Mercurial may not be able to run it correctly (so
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
405 putting it in \dirname{C:\\Program Files} is probably not a good
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
406 idea).
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
407 \end{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
408
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
409 \subsection{Generating a key pair}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
410
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
411 To avoid the need to repetitively type a password every time you need
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
412 to use your ssh client, I recommend generating a key pair. On a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
413 Unix-like system, the \command{ssh-keygen} command will do the trick.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
414 On Windows, if you're using PuTTY, the \command{puttygen} command is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
415 what you'll need.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
416
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
417 When you generate a key pair, it's usually \emph{highly} advisable to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
418 protect it with a passphrase. (The only time that you might not want
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
419 to do this id when you're using the ssh protocol for automated tasks
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
420 on a secure network.)
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
421
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
422 Simply generating a key pair isn't enough, however. You'll need to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
423 add the public key to the set of authorised keys for whatever user
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
424 you're logging in remotely as. For servers using OpenSSH (the vast
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
425 majority), this will mean adding the public key to a list in a file
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
426 called \sfilename{authorized\_keys} in their \sdirname{.ssh}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
427 directory.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
428
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
429 On a Unix-like system, your public key will have a \filename{.pub}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
430 extension. If you're using \command{puttygen} on Windows, you can
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
431 save the public key to a file of your choosing, or paste it from the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
432 window it's displayed in straight into the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
433 \sfilename{authorized\_keys} file.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
434
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
435 \subsection{Using an authentication agent}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
436
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
437 An authentication agent is a daemon that stores passphrases in memory
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
438 (so it will forget passphrases if you log out and log back in again).
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
439 An ssh client will notice if it's running, and query it for a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
440 passphrase. If there's no authentication agent running, or the agent
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
441 doesn't store the necessary passphrase, you'll have to type your
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
442 passphrase every time Mercurial tries to communicate with a server on
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
443 your behalf (e.g.~whenever you pull or push changes).
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
444
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
445 The downside of storing passphrases in an agent is that it's possible
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
446 for a well-prepared attacker to recover the plain text of your
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
447 passphrases, in some cases even if your system has been power-cycled.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
448 You should make your own judgment as to whether this is an acceptable
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
449 risk. It certainly saves a lot of repeated typing.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
450
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
451 On Unix-like systems, the agent is called \command{ssh-agent}, and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
452 it's often run automatically for you when you log in. You'll need to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
453 use the \command{ssh-add} command to add passphrases to the agent's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
454 store. On Windows, if you're using PuTTY, the \command{pageant}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
455 command acts as the agent. It adds an icon to your system tray that
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
456 will let you manage stored passphrases.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
457
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
458 \subsection{Configuring the server side properly}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
459
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
460 Because ssh can be fiddly to set up if you're new to it, there's a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
461 variety of things that can go wrong. Add Mercurial on top, and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
462 there's plenty more scope for head-scratching. Most of these
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
463 potential problems occur on the server side, not the client side. The
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
464 good news is that once you've gotten a configuration working, it will
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
465 usually continue to work indefinitely.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
466
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
467 Before you try using Mercurial to talk to an ssh server, it's best to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
468 make sure that you can use the normal \command{ssh} or \command{putty}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
469 command to talk to the server first. If you run into problems with
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
470 using these commands directly, Mercurial surely won't work. Worse, it
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
471 will obscure the underlying problem. Any time you want to debug
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
472 ssh-related Mercurial problems, you should drop back to making sure
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
473 that plain ssh client commands work first, \emph{before} you worry
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
474 about whether there's a problem with Mercurial.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
475
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
476 The first thing to be sure of on the server side is that you can
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
477 actually log in from another machine at all. If you can't use
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
478 \command{ssh} or \command{putty} to log in, the error message you get
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
479 may give you a few hints as to what's wrong. The most common problems
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
480 are as follows.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
481 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
482 \item If you get a ``connection refused'' error, either there isn't an
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
483 SSH daemon running on the server at all, or it's inaccessible due to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
484 firewall configuration.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
485 \item If you get a ``no route to host'' error, you either have an
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
486 incorrect address for the server or a seriously locked down firewall
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
487 that won't admit its existence at all.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
488 \item If you get a ``permission denied'' error, you may have mistyped
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
489 the username on the server, or you could have mistyped your key's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
490 passphrase or the remote user's password.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
491 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
492 In summary, if you're having trouble talking to the server's ssh
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
493 daemon, first make sure that one is running at all. On many systems
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
494 it will be installed, but disabled, by default. Once you're done with
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
495 this step, you should then check that the server's firewall is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
496 configured to allow incoming connections on the port the ssh daemon is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
497 listening on (usually~22). Don't worry about more exotic
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
498 possibilities for misconfiguration until you've checked these two
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
499 first.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
500
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
501 If you're using an authentication agent on the client side to store
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
502 passphrases for your keys, you ought to be able to log into the server
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
503 without being prompted for a passphrase or a password. If you're
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
504 prompted for a passphrase, there are a few possible culprits.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
505 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
506 \item You might have forgotten to use \command{ssh-add} or
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
507 \command{pageant} to store the passphrase.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
508 \item You might have stored the passphrase for the wrong key.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
509 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
510 If you're being prompted for the remote user's password, there are
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
511 another few possible problems to check.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
512 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
513 \item Either the user's home directory or their \sdirname{.ssh}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
514 directory might have excessively liberal permissions. As a result,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
515 the ssh daemon will not trust or read their
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
516 \sfilename{authorized\_keys} file. For example, a group-writable
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
517 home or \sdirname{.ssh} directory will often cause this symptom.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
518 \item The user's \sfilename{authorized\_keys} file may have a problem.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
519 If anyone other than the user owns or can write to that file, the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
520 ssh daemon will not trust or read it.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
521 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
522
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
523 In the ideal world, you should be able to run the following command
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
524 successfully, and it should print exactly one line of output, the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
525 current date and time.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
526 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
527 ssh myserver date
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
528 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
529
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
530 If, on your server, you have login scripts that print banners or other
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
531 junk even when running non-interactive commands like this, you should
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
532 fix them before you continue, so that they only print output if
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
533 they're run interactively. Otherwise these banners will at least
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
534 clutter up Mercurial's output. Worse, they could potentially cause
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
535 problems with running Mercurial commands remotely. Mercurial makes
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
536 tries to detect and ignore banners in non-interactive \command{ssh}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
537 sessions, but it is not foolproof. (If you're editing your login
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
538 scripts on your server, the usual way to see if a login script is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
539 running in an interactive shell is to check the return code from the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
540 command \Verb|tty -s|.)
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
541
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
542 Once you've verified that plain old ssh is working with your server,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
543 the next step is to ensure that Mercurial runs on the server. The
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
544 following command should run successfully:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
545 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
546 ssh myserver hg version
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
547 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
548 If you see an error message instead of normal \hgcmd{version} output,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
549 this is usually because you haven't installed Mercurial to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
550 \dirname{/usr/bin}. Don't worry if this is the case; you don't need
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
551 to do that. But you should check for a few possible problems.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
552 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
553 \item Is Mercurial really installed on the server at all? I know this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
554 sounds trivial, but it's worth checking!
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
555 \item Maybe your shell's search path (usually set via the \envar{PATH}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
556 environment variable) is simply misconfigured.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
557 \item Perhaps your \envar{PATH} environment variable is only being set
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
558 to point to the location of the \command{hg} executable if the login
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
559 session is interactive. This can happen if you're setting the path
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
560 in the wrong shell login script. See your shell's documentation for
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
561 details.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
562 \item The \envar{PYTHONPATH} environment variable may need to contain
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
563 the path to the Mercurial Python modules. It might not be set at
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
564 all; it could be incorrect; or it may be set only if the login is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
565 interactive.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
566 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
567
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
568 If you can run \hgcmd{version} over an ssh connection, well done!
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
569 You've got the server and client sorted out. You should now be able
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
570 to use Mercurial to access repositories hosted by that username on
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
571 that server. If you run into problems with Mercurial and ssh at this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
572 point, try using the \hggopt{--debug} option to get a clearer picture
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
573 of what's going on.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
574
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
575 \subsection{Using compression with ssh}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
576
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
577 Mercurial does not compress data when it uses the ssh protocol,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
578 because the ssh protocol can transparently compress data. However,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
579 the default behaviour of ssh clients is \emph{not} to request
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
580 compression.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
581
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
582 Over any network other than a fast LAN (even a wireless network),
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
583 using compression is likely to significantly speed up Mercurial's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
584 network operations. For example, over a WAN, someone measured
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
585 compression as reducing the amount of time required to clone a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
586 particularly large repository from~51 minutes to~17 minutes.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
587
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
588 Both \command{ssh} and \command{plink} accept a \cmdopt{ssh}{-C}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
589 option which turns on compression. You can easily edit your \hgrc\ to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
590 enable compression for all of Mercurial's uses of the ssh protocol.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
591 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
592 [ui]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
593 ssh = ssh -C
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
594 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
595
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
596 If you use \command{ssh}, you can configure it to always use
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
597 compression when talking to your server. To do this, edit your
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
598 \sfilename{.ssh/config} file (which may not yet exist), as follows.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
599 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
600 Host hg
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
601 Compression yes
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
602 HostName hg.example.com
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
603 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
604 This defines an alias, \texttt{hg}. When you use it on the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
605 \command{ssh} command line or in a Mercurial \texttt{ssh}-protocol
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
606 URL, it will cause \command{ssh} to connect to \texttt{hg.example.com}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
607 and use compression. This gives you both a shorter name to type and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
608 compression, each of which is a good thing in its own right.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
609
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
610 \section{Serving over HTTP using CGI}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
611 \label{sec:collab:cgi}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
612
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
613 Depending on how ambitious you are, configuring Mercurial's CGI
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
614 interface can take anything from a few moments to several hours.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
615
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
616 We'll begin with the simplest of examples, and work our way towards a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
617 more complex configuration. Even for the most basic case, you're
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
618 almost certainly going to need to read and modify your web server's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
619 configuration.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
620
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
621 \begin{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
622 Configuring a web server is a complex, fiddly, and highly
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
623 system-dependent activity. I can't possibly give you instructions
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
624 that will cover anything like all of the cases you will encounter.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
625 Please use your discretion and judgment in following the sections
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
626 below. Be prepared to make plenty of mistakes, and to spend a lot
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
627 of time reading your server's error logs.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
628 \end{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
629
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
630 \subsection{Web server configuration checklist}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
631
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
632 Before you continue, do take a few moments to check a few aspects of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
633 your system's setup.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
634
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
635 \begin{enumerate}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
636 \item Do you have a web server installed at all? Mac OS X ships with
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
637 Apache, but many other systems may not have a web server installed.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
638 \item If you have a web server installed, is it actually running? On
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
639 most systems, even if one is present, it will be disabled by
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
640 default.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
641 \item Is your server configured to allow you to run CGI programs in
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
642 the directory where you plan to do so? Most servers default to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
643 explicitly disabling the ability to run CGI programs.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
644 \end{enumerate}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
645
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
646 If you don't have a web server installed, and don't have substantial
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
647 experience configuring Apache, you should consider using the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
648 \texttt{lighttpd} web server instead of Apache. Apache has a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
649 well-deserved reputation for baroque and confusing configuration.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
650 While \texttt{lighttpd} is less capable in some ways than Apache, most
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
651 of these capabilities are not relevant to serving Mercurial
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
652 repositories. And \texttt{lighttpd} is undeniably \emph{much} easier
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
653 to get started with than Apache.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
654
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
655 \subsection{Basic CGI configuration}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
656
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
657 On Unix-like systems, it's common for users to have a subdirectory
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
658 named something like \dirname{public\_html} in their home directory,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
659 from which they can serve up web pages. A file named \filename{foo}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
660 in this directory will be accessible at a URL of the form
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
661 \texttt{http://www.example.com/\~username/foo}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
662
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
663 To get started, find the \sfilename{hgweb.cgi} script that should be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
664 present in your Mercurial installation. If you can't quickly find a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
665 local copy on your system, simply download one from the master
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
666 Mercurial repository at
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
667 \url{http://www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
668
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
669 You'll need to copy this script into your \dirname{public\_html}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
670 directory, and ensure that it's executable.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
671 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
672 cp .../hgweb.cgi ~/public_html
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
673 chmod 755 ~/public_html/hgweb.cgi
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
674 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
675 The \texttt{755} argument to \command{chmod} is a little more general
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
676 than just making the script executable: it ensures that the script is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
677 executable by anyone, and that ``group'' and ``other'' write
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
678 permissions are \emph{not} set. If you were to leave those write
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
679 permissions enabled, Apache's \texttt{suexec} subsystem would likely
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
680 refuse to execute the script. In fact, \texttt{suexec} also insists
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
681 that the \emph{directory} in which the script resides must not be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
682 writable by others.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
683 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
684 chmod 755 ~/public_html
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
685 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
686
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
687 \subsubsection{What could \emph{possibly} go wrong?}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
688 \label{sec:collab:wtf}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
689
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
690 Once you've copied the CGI script into place, go into a web browser,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
691 and try to open the URL \url{http://myhostname/~myuser/hgweb.cgi},
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
692 \emph{but} brace yourself for instant failure. There's a high
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
693 probability that trying to visit this URL will fail, and there are
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
694 many possible reasons for this. In fact, you're likely to stumble
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
695 over almost every one of the possible errors below, so please read
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
696 carefully. The following are all of the problems I ran into on a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
697 system running Fedora~7, with a fresh installation of Apache, and a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
698 user account that I created specially to perform this exercise.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
699
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
700 Your web server may have per-user directories disabled. If you're
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
701 using Apache, search your config file for a \texttt{UserDir}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
702 directive. If there's none present, per-user directories will be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
703 disabled. If one exists, but its value is \texttt{disabled}, then
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
704 per-user directories will be disabled. Otherwise, the string after
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
705 \texttt{UserDir} gives the name of the subdirectory that Apache will
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
706 look in under your home directory, for example \dirname{public\_html}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
707
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
708 Your file access permissions may be too restrictive. The web server
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
709 must be able to traverse your home directory and directories under
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
710 your \dirname{public\_html} directory, and read files under the latter
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
711 too. Here's a quick recipe to help you to make your permissions more
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
712 appropriate.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
713 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
714 chmod 755 ~
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
715 find ~/public_html -type d -print0 | xargs -0r chmod 755
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
716 find ~/public_html -type f -print0 | xargs -0r chmod 644
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
717 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
718
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
719 The other possibility with permissions is that you might get a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
720 completely empty window when you try to load the script. In this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
721 case, it's likely that your access permissions are \emph{too
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
722 permissive}. Apache's \texttt{suexec} subsystem won't execute a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
723 script that's group-~or world-writable, for example.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
724
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
725 Your web server may be configured to disallow execution of CGI
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
726 programs in your per-user web directory. Here's Apache's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
727 default per-user configuration from my Fedora system.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
728 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
729 <Directory /home/*/public_html>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
730 AllowOverride FileInfo AuthConfig Limit
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
731 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
732 <Limit GET POST OPTIONS>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
733 Order allow,deny
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
734 Allow from all
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
735 </Limit>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
736 <LimitExcept GET POST OPTIONS>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
737 Order deny,allow
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
738 Deny from all
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
739 </LimitExcept>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
740 </Directory>
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
741 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
742 If you find a similar-looking \texttt{Directory} group in your Apache
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
743 configuration, the directive to look at inside it is \texttt{Options}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
744 Add \texttt{ExecCGI} to the end of this list if it's missing, and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
745 restart the web server.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
746
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
747 If you find that Apache serves you the text of the CGI script instead
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
748 of executing it, you may need to either uncomment (if already present)
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
749 or add a directive like this.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
750 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
751 AddHandler cgi-script .cgi
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
752 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
753
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
754 The next possibility is that you might be served with a colourful
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
755 Python backtrace claiming that it can't import a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
756 \texttt{mercurial}-related module. This is actually progress! The
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
757 server is now capable of executing your CGI script. This error is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
758 only likely to occur if you're running a private installation of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
759 Mercurial, instead of a system-wide version. Remember that the web
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
760 server runs the CGI program without any of the environment variables
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
761 that you take for granted in an interactive session. If this error
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
762 happens to you, edit your copy of \sfilename{hgweb.cgi} and follow the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
763 directions inside it to correctly set your \envar{PYTHONPATH}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
764 environment variable.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
765
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
766 Finally, you are \emph{certain} to by served with another colourful
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
767 Python backtrace: this one will complain that it can't find
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
768 \dirname{/path/to/repository}. Edit your \sfilename{hgweb.cgi} script
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
769 and replace the \dirname{/path/to/repository} string with the complete
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
770 path to the repository you want to serve up.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
771
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
772 At this point, when you try to reload the page, you should be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
773 presented with a nice HTML view of your repository's history. Whew!
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
774
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
775 \subsubsection{Configuring lighttpd}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
776
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
777 To be exhaustive in my experiments, I tried configuring the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
778 increasingly popular \texttt{lighttpd} web server to serve the same
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
779 repository as I described with Apache above. I had already overcome
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
780 all of the problems I outlined with Apache, many of which are not
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
781 server-specific. As a result, I was fairly sure that my file and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
782 directory permissions were good, and that my \sfilename{hgweb.cgi}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
783 script was properly edited.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
784
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
785 Once I had Apache running, getting \texttt{lighttpd} to serve the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
786 repository was a snap (in other words, even if you're trying to use
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
787 \texttt{lighttpd}, you should read the Apache section). I first had
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
788 to edit the \texttt{mod\_access} section of its config file to enable
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
789 \texttt{mod\_cgi} and \texttt{mod\_userdir}, both of which were
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
790 disabled by default on my system. I then added a few lines to the end
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
791 of the config file, to configure these modules.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
792 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
793 userdir.path = "public_html"
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
794 cgi.assign = ( ".cgi" => "" )
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
795 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
796 With this done, \texttt{lighttpd} ran immediately for me. If I had
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
797 configured \texttt{lighttpd} before Apache, I'd almost certainly have
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
798 run into many of the same system-level configuration problems as I did
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
799 with Apache. However, I found \texttt{lighttpd} to be noticeably
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
800 easier to configure than Apache, even though I've used Apache for over
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
801 a decade, and this was my first exposure to \texttt{lighttpd}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
802
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
803 \subsection{Sharing multiple repositories with one CGI script}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
804
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
805 The \sfilename{hgweb.cgi} script only lets you publish a single
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
806 repository, which is an annoying restriction. If you want to publish
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
807 more than one without wracking yourself with multiple copies of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
808 same script, each with different names, a better choice is to use the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
809 \sfilename{hgwebdir.cgi} script.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
810
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
811 The procedure to configure \sfilename{hgwebdir.cgi} is only a little
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
812 more involved than for \sfilename{hgweb.cgi}. First, you must obtain
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
813 a copy of the script. If you don't have one handy, you can download a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
814 copy from the master Mercurial repository at
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
815 \url{http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
816
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
817 You'll need to copy this script into your \dirname{public\_html}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
818 directory, and ensure that it's executable.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
819 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
820 cp .../hgwebdir.cgi ~/public_html
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
821 chmod 755 ~/public_html ~/public_html/hgwebdir.cgi
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
822 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
823 With basic configuration out of the way, try to visit
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
824 \url{http://myhostname/~myuser/hgwebdir.cgi} in your browser. It
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
825 should display an empty list of repositories. If you get a blank
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
826 window or error message, try walking through the list of potential
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
827 problems in section~\ref{sec:collab:wtf}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
828
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
829 The \sfilename{hgwebdir.cgi} script relies on an external
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
830 configuration file. By default, it searches for a file named
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
831 \sfilename{hgweb.config} in the same directory as itself. You'll need
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
832 to create this file, and make it world-readable. The format of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
833 file is similar to a Windows ``ini'' file, as understood by Python's
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
834 \texttt{ConfigParser}~\cite{web:configparser} module.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
835
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
836 The easiest way to configure \sfilename{hgwebdir.cgi} is with a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
837 section named \texttt{collections}. This will automatically publish
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
838 \emph{every} repository under the directories you name. The section
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
839 should look like this:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
840 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
841 [collections]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
842 /my/root = /my/root
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
843 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
844 Mercurial interprets this by looking at the directory name on the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
845 \emph{right} hand side of the ``\texttt{=}'' sign; finding
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
846 repositories in that directory hierarchy; and using the text on the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
847 \emph{left} to strip off matching text from the names it will actually
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
848 list in the web interface. The remaining component of a path after
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
849 this stripping has occurred is called a ``virtual path''.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
850
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
851 Given the example above, if we have a repository whose local path is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
852 \dirname{/my/root/this/repo}, the CGI script will strip the leading
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
853 \dirname{/my/root} from the name, and publish the repository with a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
854 virtual path of \dirname{this/repo}. If the base URL for our CGI
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
855 script is \url{http://myhostname/~myuser/hgwebdir.cgi}, the complete
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
856 URL for that repository will be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
857 \url{http://myhostname/~myuser/hgwebdir.cgi/this/repo}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
858
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
859 If we replace \dirname{/my/root} on the left hand side of this example
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
860 with \dirname{/my}, then \sfilename{hgwebdir.cgi} will only strip off
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
861 \dirname{/my} from the repository name, and will give us a virtual
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
862 path of \dirname{root/this/repo} instead of \dirname{this/repo}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
863
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
864 The \sfilename{hgwebdir.cgi} script will recursively search each
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
865 directory listed in the \texttt{collections} section of its
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
866 configuration file, but it will \texttt{not} recurse into the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
867 repositories it finds.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
868
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
869 The \texttt{collections} mechanism makes it easy to publish many
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
870 repositories in a ``fire and forget'' manner. You only need to set up
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
871 the CGI script and configuration file one time. Afterwards, you can
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
872 publish or unpublish a repository at any time by simply moving it
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
873 into, or out of, the directory hierarchy in which you've configured
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
874 \sfilename{hgwebdir.cgi} to look.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
875
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
876 \subsubsection{Explicitly specifying which repositories to publish}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
877
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
878 In addition to the \texttt{collections} mechanism, the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
879 \sfilename{hgwebdir.cgi} script allows you to publish a specific list
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
880 of repositories. To do so, create a \texttt{paths} section, with
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
881 contents of the following form.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
882 \begin{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
883 [paths]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
884 repo1 = /my/path/to/some/repo
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
885 repo2 = /some/path/to/another
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
886 \end{codesample2}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
887 In this case, the virtual path (the component that will appear in a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
888 URL) is on the left hand side of each definition, while the path to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
889 the repository is on the right. Notice that there does not need to be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
890 any relationship between the virtual path you choose and the location
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
891 of a repository in your filesystem.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
892
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
893 If you wish, you can use both the \texttt{collections} and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
894 \texttt{paths} mechanisms simultaneously in a single configuration
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
895 file.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
896
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
897 \begin{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
898 If multiple repositories have the same virtual path,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
899 \sfilename{hgwebdir.cgi} will not report an error. Instead, it will
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
900 behave unpredictably.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
901 \end{note}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
902
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
903 \subsection{Downloading source archives}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
904
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
905 Mercurial's web interface lets users download an archive of any
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
906 revision. This archive will contain a snapshot of the working
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
907 directory as of that revision, but it will not contain a copy of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
908 repository data.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
909
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
910 By default, this feature is not enabled. To enable it, you'll need to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
911 add an \rcitem{web}{allow\_archive} item to the \rcsection{web}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
912 section of your \hgrc.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
913
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
914 \subsection{Web configuration options}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
915
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
916 Mercurial's web interfaces (the \hgcmd{serve} command, and the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
917 \sfilename{hgweb.cgi} and \sfilename{hgwebdir.cgi} scripts) have a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
918 number of configuration options that you can set. These belong in a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
919 section named \rcsection{web}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
920 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
921 \item[\rcitem{web}{allow\_archive}] Determines which (if any) archive
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
922 download mechanisms Mercurial supports. If you enable this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
923 feature, users of the web interface will be able to download an
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
924 archive of whatever revision of a repository they are viewing.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
925 To enable the archive feature, this item must take the form of a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
926 sequence of words drawn from the list below.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
927 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
928 \item[\texttt{bz2}] A \command{tar} archive, compressed using
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
929 \texttt{bzip2} compression. This has the best compression ratio,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
930 but uses the most CPU time on the server.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
931 \item[\texttt{gz}] A \command{tar} archive, compressed using
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
932 \texttt{gzip} compression.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
933 \item[\texttt{zip}] A \command{zip} archive, compressed using LZW
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
934 compression. This format has the worst compression ratio, but is
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
935 widely used in the Windows world.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
936 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
937 If you provide an empty list, or don't have an
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
938 \rcitem{web}{allow\_archive} entry at all, this feature will be
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
939 disabled. Here is an example of how to enable all three supported
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
940 formats.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
941 \begin{codesample4}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
942 [web]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
943 allow_archive = bz2 gz zip
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
944 \end{codesample4}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
945 \item[\rcitem{web}{allowpull}] Boolean. Determines whether the web
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
946 interface allows remote users to \hgcmd{pull} and \hgcmd{clone} this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
947 repository over~HTTP. If set to \texttt{no} or \texttt{false}, only
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
948 the ``human-oriented'' portion of the web interface is available.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
949 \item[\rcitem{web}{contact}] String. A free-form (but preferably
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
950 brief) string identifying the person or group in charge of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
951 repository. This often contains the name and email address of a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
952 person or mailing list. It often makes sense to place this entry in
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
953 a repository's own \sfilename{.hg/hgrc} file, but it can make sense
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
954 to use in a global \hgrc\ if every repository has a single
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
955 maintainer.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
956 \item[\rcitem{web}{maxchanges}] Integer. The default maximum number
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
957 of changesets to display in a single page of output.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
958 \item[\rcitem{web}{maxfiles}] Integer. The default maximum number
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
959 of modified files to display in a single page of output.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
960 \item[\rcitem{web}{stripes}] Integer. If the web interface displays
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
961 alternating ``stripes'' to make it easier to visually align rows
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
962 when you are looking at a table, this number controls the number of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
963 rows in each stripe.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
964 \item[\rcitem{web}{style}] Controls the template Mercurial uses to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
965 display the web interface. Mercurial ships with two web templates,
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
966 named \texttt{default} and \texttt{gitweb} (the latter is much more
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
967 visually attractive). You can also specify a custom template of
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
968 your own; see chapter~\ref{chap:template} for details. Here, you
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
969 can see how to enable the \texttt{gitweb} style.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
970 \begin{codesample4}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
971 [web]
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
972 style = gitweb
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
973 \end{codesample4}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
974 \item[\rcitem{web}{templates}] Path. The directory in which to search
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
975 for template files. By default, Mercurial searches in the directory
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
976 in which it was installed.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
977 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
978 If you are using \sfilename{hgwebdir.cgi}, you can place a few
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
979 configuration items in a \rcsection{web} section of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
980 \sfilename{hgweb.config} file instead of a \hgrc\ file, for
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
981 convenience. These items are \rcitem{web}{motd} and
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
982 \rcitem{web}{style}.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
983
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
984 \subsubsection{Options specific to an individual repository}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
985
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
986 A few \rcsection{web} configuration items ought to be placed in a
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
987 repository's local \sfilename{.hg/hgrc}, rather than a user's or
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
988 global \hgrc.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
989 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
990 \item[\rcitem{web}{description}] String. A free-form (but preferably
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
991 brief) string that describes the contents or purpose of the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
992 repository.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
993 \item[\rcitem{web}{name}] String. The name to use for the repository
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
994 in the web interface. This overrides the default name, which is the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
995 last component of the repository's path.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
996 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
997
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
998 \subsubsection{Options specific to the \hgcmd{serve} command}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
999
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1000 Some of the items in the \rcsection{web} section of a \hgrc\ file are
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1001 only for use with the \hgcmd{serve} command.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1002 \begin{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1003 \item[\rcitem{web}{accesslog}] Path. The name of a file into which to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1004 write an access log. By default, the \hgcmd{serve} command writes
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1005 this information to standard output, not to a file. Log entries are
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1006 written in the standard ``combined'' file format used by almost all
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1007 web servers.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1008 \item[\rcitem{web}{address}] String. The local address on which the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1009 server should listen for incoming connections. By default, the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1010 server listens on all addresses.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1011 \item[\rcitem{web}{errorlog}] Path. The name of a file into which to
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1012 write an error log. By default, the \hgcmd{serve} command writes this
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1013 information to standard error, not to a file.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1014 \item[\rcitem{web}{ipv6}] Boolean. Whether to use the IPv6 protocol.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1015 By default, IPv6 is not used.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1016 \item[\rcitem{web}{port}] Integer. The TCP~port number on which the
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1017 server should listen. The default port number used is~8000.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1018 \end{itemize}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1019
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1020 \subsubsection{Choosing the right \hgrc\ file to add \rcsection{web}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1021 items to}
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1022
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1023 It is important to remember that a web server like Apache or
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1024 \texttt{lighttpd} will run under a user~ID that is different to yours.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1025 CGI scripts run by your server, such as \sfilename{hgweb.cgi}, will
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1026 usually also run under that user~ID.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1027
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1028 If you add \rcsection{web} items to your own personal \hgrc\ file, CGI
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1029 scripts won't read that \hgrc\ file. Those settings will thus only
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1030 affect the behaviour of the \hgcmd{serve} command when you run it. To
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1031 cause CGI scripts to see your settings, either create a \hgrc\ file in
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1032 the home directory of the user ID that runs your web server, or add
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1033 those settings to a system-wide \hgrc\ file.
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1034
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1035
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1036 %%% Local Variables:
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1037 %%% mode: latex
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1038 %%% TeX-master: "00book"
b05e35d641e4 Copying the files from en to es and taking intro chapter
Igor TAmara <igor@tamarapatino.org>
parents: 432
diff changeset
1039 %%% End: