Pregunta

Preguntas resumidas:

¿Cuál es la forma más simple (y mejor) de cambiar un grupo de archivos de un repositorio existente a un nuevo subrapositorio, por lo que esos archivos pueden integrarse con otros repositorios principales, algunos de los cuales aún no existen?

¿Los archivos en los subrepositorios deben estar en carpetas discretas, o pueden existir junto con otros archivos?

Preguntas detalladas:

He comenzado el proceso de crear múltiples repositorios que representan varios proyectos que han compartido componentes, y eso va bien, gracias a SO y algunas respuestas útiles a mi pregunta. aquí

A medida que avanzo a agregar un segundo proyecto, noto que hay algunos archivos en mis proyectos que están duplicados, y son esencialmente lo mismo, con suficiente similitud para justificar sacarlos de un repositorio principal de proyectos y crear un nuevo subrepositorio para que ellos puede ser

  1. utilizado por cualquier proyecto nuevo que empiezo, y
  2. eliminado de otros repositorios existentes, ya que son idénticos.

Supongo que la mejor manera es simplemente crear un nuevo repositorio, mover los archivos en el sistema de archivos local, presionar ambos repositorios y luego crear un archivo .hgsub y proceder como en la respuesta a Mi pregunta anterior. Obviamente, esto cambiaría los archivos preocupados a una subcarpeta en el sistema de archivos local en cada proyecto principal, con el que puedo vivir, pero plantea la pregunta hipotética, es posible tener una lista de archivos en un repositorio que son efectivamente Parte de un subrapositorio pero reside junto con otros archivos (es decir, no en una subpoleta).

Si quisiera (por ejemplo) tener un archivo "acme.h" en cada proyecto que forma parte de otro repositorio, ¿podría hacer esto? Como sucede, no necesito hacer esto en este momento, y en mi situación actual sería mejor Desde el punto de vista de diseño para tener los archivos, necesito "refactorizar" en otro repositorio en su propia subcarpeta, sin embargo, ese no siempre es el caso. Utilizo Refactor en citas aquí, ya que estrictamente hablando se trata más de refactorizar archivos duplicados que están refactorizando el código, sin embargo, se aplica el mismo principio.

Esperemos que mis preguntas sean lo suficientemente sucintas como para ser respondidas sin demasiadas explicaciones.

¿Fue útil?

Solución

Gracias por el resumen, ¡hace que sea mucho más fácil de responder!

¿Cuál es la forma más simple (y mejor) de cambiar un grupo de archivos de un repositorio existente a un nuevo subrapositorio, por lo que esos archivos pueden integrarse con otros repositorios principales, algunos de los cuales aún no existen?

Puedes usar el convertir extensión extraer un directorio de un repositorio mercurial existente. Querrás usar el --filemap Indicando y en el FileMap incluye el directorio que desea y cambie el nombre de la raíz. Ver hg help convert para más información.

Después de obtener un repositorio más pequeño con el

¿Los archivos en los subrepositorios deben estar en carpetas discretas, o pueden existir junto con otros archivos?

Deben estar en sus propias carpetas. Esto es simplemente porque así es como se ve un repositorio en Mercurial, Git, Subversion, ... cuando estás tratando con subrepositorios, entonces Mercurial no está rastreando los archivos dentro del subrepo: solo pide a algún (otro) sistema que realice un pago del repositorio foo en algún lugar.

Entonces cuando tu .hgsub el archivo tiene

foo = foo
bar = [git]bar
baz = [svn]baz

Entonces Mercurial notará esto en hg update y correr

hg clone default-path-of-this-repo/foo foo
git clone default-path-of-this-repo/bar bar
svn checkout default-path-of-this-repo/baz baz

para tu. Esto explica por qué los subrepostorios son directorios en el repositorio externo: así es como se ve un clon/pago en estos días.

Como puede ver, los subrepositorios pueden ser de diferentes tipos. Es concebible que alguien pueda agregar un tipo de subrepositorio RCS para rastrear archivos individuales. Entonces no tendrían que vivir en un directorio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top