delete - git push tag
¿Es posible hacer un clon/rama parcial con bazar, mercurial o git? (6)
A juzgar por esta página wiki , esta función aún no está implementada en Mercurial, sin embargo, hay una extension que puede hacer aproximadamente lo que se desea al "convertir" un repositorio o su parte, en lugar de la ramificación real. Como puede convertir desde y hacia Hg, puede funcionar como clonación parcial. ¿Es esto lo que necesitabas?
Supongamos que tengo un proyecto en control de código fuente con muchos subdirectorios, muchos de los cuales no necesito en este momento.
Me gustaría crear una copia de trabajo que contenga solo parte de todo el árbol, que aún mantenga la capacidad de hacer cambios, confirmarlos y hacer que vuelvan a aparecer.
¿Es esto posible y si es así, cómo puedo hacerlo?
Todavía estoy decidiendo si ir con bazar o mercurial, por lo que las respuestas con respecto a cualquiera de ellas serían útiles.
Edit: En realidad, las soluciones para git también serían útiles.
En git, puede usar el subárbol git , que le permite extraer un repositorio "virtual" para un subproyecto en particular, luego hacer cambios en el subproyecto y luego volver a combinar esos cambios.
En la mayoría de DCVS, la regla es "1 proyecto == 1 repositorio". No hay una noción de "subproyecto" (a diferencia de Subversion, donde puede retirar un subárbol y trabajar en eso).
La razón principal es que su "proyecto" contiene una copia de todo el repositorio en la carpeta raíz. Las cosas se complicarían mucho si pudiera crear copias de todo el repositorio en subcarpetas.
En el lado positivo, crear copias de trabajo es una operación rápida (a menos que el sistema de archivos subyacente sea lento).
La clonación de un subconjunto del árbol no es posible, por lo que sé, pero hay otras posibilidades.
Git : El comando git clone
tiene un indicador --depth
:
--depth <depth>
Cree un clon superficial con un historial truncado al número especificado de revisiones. Un repositorio poco profundo tiene una serie de limitaciones (no se puede clonar ni recuperar, ni se puede empujar desde él), pero es adecuado si solo está interesado en la historia reciente de un proyecto grande con una larga historia, y desearía Enviar arreglos como parches.
Bazar : la bandera --lightweight
para el comando de checkout
solo descarga un directorio de trabajo en lugar de todo el historial y ahorra ancho de banda y espacio en disco. Todas las operaciones aún son compatibles, pero se requiere una conexión de red para realizarlas.
No sé si Merurial tiene esta característica o no.
Para Bazaar, tiene árboles anidados: http://bazaar-vcs.org/NestedTreesDesign que le permite dividir un gran proyecto en subproyectos.
No he usado esta función todavía, así que no sé qué tan bien funciona.
También puede bifurcar usando --hardlink para evitar copiar un montón de archivos (no estoy seguro de si funciona en Windows ...), bifurcar sin historial (bifurcación más clara) o bifurcación sin árbol de trabajo (sin archivos, solo historial).
Si ya tienes un repositorio y te gustaría hacer esto, será un dolor.
Si va a hacer esto con repositorios nuevos, es posible que desee ver los nuevos subrepos Mercurial.
Básicamente usted crea repositorios independientes para ciertos directorios:
myproject/
.hg/
source code/
... files here ...
documentation/ (subrepo)
.hg/
... files here ...
graphics/ (subrepo)
.hg/
... files here ...
Esto aísla las diferentes piezas del proyecto en diferentes repositorios. El repositorio "que contiene" (myproject en este caso) realiza un seguimiento de las revisiones en las que se encuentran cada vez que realiza una confirmación. La página wiki subrepo que mencioné lo explica bien.