2011-02-04 13 views
10

Por un tiempo tuve mi código bajo control de fuente, pero decidí que sería genial poner cosas como mis cosas en mi carpeta .vim entre otras cosas en un repositorio. (Obviamente no voy a almacenar todo en mi repositorio, solo varios archivos de configuración, mi directorio src, y tal vez algunas otras cosas también)Poniendo el directorio de inicio bajo control de fuente (hg)

Pude configurar una operación de recompra, luego presionarla para mi servidor donde puedo acceder desde mis otras computadoras, pero no puedo clonarlo en mis otras computadoras. Cuando trato de clonar, falla porque el directorio de inicio no está vacío. ¿Hay alguna manera de hacer lo que quiero aquí?

Respuesta

8

Dado que los archivos versionados entre mis equipos son los mismos, lo que hice fue:

~$ hg clone ssh://myserver/hg/dotfiles mydotfiles 
~$ mv mydotfiles/.hg . 
~$ rm -rf mydotfiles 

y eso es todo, ahora la carpeta de inicio está bajo el control de versiones, pero, por supuesto, si sus archivos de puntos no son idénticos entre las computadoras, tendrá que hacer algo al respecto.

Ya que sólo quiero versión de algunos archivos y no todo bajo mi carpeta de inicio, tengo esta simple regla en ~/.hgignore

# This .hgignore is for the dotfiles repository only, 
# the rest of my HG repositories use the file 
# .hgignore_global as referenced by [ui]'s ignore setting. 

syntax:glob 
* 

De esta manera no consigo un océano de archivos cuando lo haga y hg status solo veo aquellos archivos que tengo bajo control de versión que han sido modificados.

Pero como yo quiero ver archivos sin versión cuando se trabaja dentro de otro repositorio de Hg, tengo esto en mi archivo ~/.hgrc

[ui] 
ignore=/home/gajon/.hgignore_global 

Y ~/.hgignore_global contiene algunos filtros para archivos transitorios comunes:

syntax: glob 
*.pyc 
*~ 
.*.swp 
.svn* 
*.svn* 
*.fasl 

syntax: regexp 
^\.pc/ 
+2

Otra opción era 'hg init' y 'hg pull' en lugar de clonar. –

+0

Ry4an, estás en lo cierto. Y eso podría ser más apropiado; no es necesario crear una carpeta llena de archivos y luego 'rm -rf'ing. ¡Gracias! –

0

En los otros directorios que ya existen, podría hg init, hg add lo que quiere, que hg commit, hg pull desde el repositorio central, y hacer frente a la fusión resultante.

+2

a Tiene ¿Has intentado esto? Solo funcionará si fuerzas el tirón. Personalmente, creo que el 'copiar el directorio .hg' es una respuesta 'limpia' – Mikezx6r

1

Supongamos que tiene proj1 y proj2. proj1 es un repositorio mercurial que desea clonar a proj2, pero proj2 ya tiene archivos.

Prueba esto:

hg clone proj1 proj3 
mv proj3/.hg proj2 
rmdir proj3 
cd proj2 
hg update -C -r tip 
+0

Puede omitir la opción '-r tip' del último comando - la actualización toma la revisión * tip * como predeterminada. –

Cuestiones relacionadas