2010-06-03 11 views
24

Hoy me encuentro bastante confundido acerca de esto.Cómo clonar el repositorio en un servidor/repositorio remoto con Mercurial

Creo un repositorio en blanco localmente (hg init), lo cloné en una copia de trabajo, agregué un código, lo apunté y lo puse (obviamente para el repositorio local).

Ahora necesito compartir ese repositorio con los demás. Hay un servidor que tiene mercurial, ¿cómo puedo clonar mi repositorio en uno remoto para que otros desarrolladores puedan acceder a él y extraerlo/introducirlo?

Respuesta

36

Usted querrá echa un vistazo a la página publishing repositories wiki para entrar en interfaces web y controles de acceso, pero en ella es la más básica que puede hacer algo como esto:

hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

que los clones tu repositorio local a una ubicación remota de su elección. Tenga en cuenta que hay dos barras diagonales dobles en esa URL.

No puede crear un repositorio remoto como ese utilizando http: //, solo ssh: //. Si todo lo que tiene es http para hgweb.cgi, puede 'hg init' un repositorio vacío en el servidor y luego presionarlo hg.

+0

genial, gracias, pero ¿cómo lo clonan otras personas? –

+0

pueden clonar desde ssh: // tu @ servidor // home/you/repo si pueden leer desde tu hogar. Si no estás de acuerdo con eso, puedes configurar un área para leer y escribir. –

7

Si sus repositorios "oficiales" son servidos por un servidor HTTP, y usted quiere crear un repositorio en la ubicación central basada en el repositorio de una máquina local, aquí hay una manera. Necesita derechos de administrador en el servidor central para hacer esto.

e.g. Estoy desarrollando en Windows, y mi repositorio central se ejecuta en Linux y se sirve con lighttpd por the official guide. El directorio central de repo del servidor es /var/hg/repos/, propiedad del usuario/grupo www-data. La IP de mi máquina local es 10.1.10.100, y el repositorio que deseo clonar se llama foo.

  1. En el equipo local, abra un símbolo del sistema en el directorio del repositorio y escriba hg serve. Esto ejecuta el servidor web hg local, lo que permitirá que el servidor lo extraiga.
  2. ssh en el servidor de repositorio central, iniciando sesión como usuario con derechos de sudo a www-data.
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo
+0

+1 para documentar la técnica habitual estos días ... Estoy cansado de la técnica habitual, así que planeo escribir un cgi (página web) en python para hacer el comando hg clone para usted, desde cualquier host autorizado. –

4

Para aquellos que vienen después y no quieren preocuparse por los problemas de SSH para empujar cambios a un servidor construido para albergar repos, sólo puede init en el servidor, y luego empuja como lo haces con cualquier otro repositorio.

# on server: 
cd repos/ 
mkdir myrepo 
cd myrepo 
hg init 
cd .. 
chown -R apache:apache myrepo 

cd .. 
vim hgweb.config 

# change [paths] 
[paths] 
myrepo = /path/to/myrepo 



# on your machine 

# make sure you've configured hgrc correctly 
[paths] 
default = http://server/hg/repos/myrepo 

hg push 

# ??? 

# profit 
+0

No es una mala idea que se convierta en una página de ayuda de cgi-web, tampoco. Cree primero en el servidor, clone el vacío y estará listo para un flujo de trabajo centralizado. –

Cuestiones relacionadas