tipos tag practices etiquetas etiqueta eliminar best git workflow organization

tag - Git-Incluir archivos de otros repositorios



git tags best practices (1)

Git no tiene soporte para seleccionar archivos seleccionados en un proyecto remoto. Puede seleccionar los archivos que desee con un subárbol y luego buscar algún tipo de estrategia para volver a ingresarlos, pero eso suele ser muy complicado, especialmente si de repente decide que desea un par de archivos más de los que escogió originalmente.

Lo que suelo terminar es usar symlinks . Esto se puede hacer agregando los proyectos como submódulos en su proyecto, y luego vinculando los archivos en la ubicación correcta.

Tu ejemplo sería algo como esto:

$ git clone <url> myproject $ cd myproject $ git submodule add <url> external_library $ git submodule add <url> external2 $ cd scripts $ ln -s ../external_library/common1.js $ ln -s ../external_library/plugin2.js $ cd ../styles $ ln -s ../external2/common.css

Para hacer que los enlaces simbólicos funcionen en Windows:

Luego, antes de hacer cualquier cambio, iría y crearía una nueva rama:

$ cd external_library $ git checkout -b myproject # make changes back in ../myproject $ git commit <files> # in external_library

Luego puede empujar su sucursal a github o algo así y enviar una solicitud de extracción al autor para que contribuya con sus cambios.

Puedes mantenerte sincronizado de esta manera:

$ cd external_library $ git checkout master $ git pull $ git checkout myproject $ git merge master

También debe actualizar el proyecto principal cuando cambie el submódulo (por ejemplo, git commit external_library ). Cualquier persona que use su proyecto necesitaría hacer un git clone --recursive <url_to_myproject> .

NOTA: Puede lograr la mayor parte de esto sin usar una rama separada para su proyecto. Usa lo que tenga más sentido para ti.

Con Git, me gustaría incluir algunas bibliotecas JS / CSS comunes y / o métodos de utilidad (es decir, archivos específicos de otro repositorio) en mi proyecto, y me gustaría que estén siempre actualizados. Realmente no quiero todo el repositorio remoto (s). Bonificación si puedo trabajar en mis "copias locales" de los archivos remotos y hacer una copia de seguridad de los cambios.

Un ejemplo un tanto paralelo: en ASP.NET, lo haría haciendo referencia a los archivos .dll otras bibliotecas ("remotas") (sin "copiar local"), de modo que cada vez que recompile las bibliotecas externas, mi proyecto apunte a Las nuevas versiones.

Escenario de ejemplo

Mi proyecto es ... MyProject , y solo quiero un par de archivos de los repositorios externos ExternalLibrary y External2 . Preferiría no clonar cada repositorio en otro lugar y copiar y pegar los archivos en mi repositorio. Si hago una mejora en MyProject/scripts/common1.js , me gustaría MyProject/scripts/common1.js a ExternalLibrary .

  1. Mi proyecto/
    • index.html
    • guiones/
      • mycode.js
      • otherplugin.js
      • common1.js <- desde ExternalLibrary
      • plugin2.js <- desde ExternalLibrary
    • estilos /
      • mystyle.css
      • common.css <- desde External2
  2. Biblioteca externa /
    • common1.js
    • plugin1.js
    • plugin2.js
    • manojo de otro ...
  3. Externo2 /
    • common.css
    • manojo de otro ...

Referencias relacionadas: