usar una tag qué practices podemos para etiqueta delete crear comando best git open-source

git - una - Haciendo mi propio framework y usándolo como un upstream para proyectos



git tags best practices (2)

"Cada vez que cambio alguna funcionalidad central o agrego algo que también quiero tener en otros proyectos, quiero empujarlo de alguna manera al repositorio de devstack ".

Presionar un repo de devstack (el original que ha desviado para todo su proyecto) es un buen primer paso, pero no "propagará" mágicamente esa nueva característica a todos sus otros repositorios.

Sin embargo, puedes aprovechar el flujo de trabajo triangular :

  • fork (ver " Fork a Repo ") la repo devstack (eso es lo que ya está haciendo para sus proyectos)
  • clonar esa horquilla localmente para un proyecto dado,

    git clone /url/my/fork myfork

  • añadir como remoto upstream el repositorio original

    cd myfork git remote add upstream /url/to/devstack

Desde allí, con git 2.9 o más , configura:

git config --global pull.rebase true git config --global rebase.autoStash true

Finalmente, cada vez que desee actualizar uno de sus repositorios para beneficiarse de una característica que se empuja a devstack :

cd /path/to/one/of/mine/projects git checkout mybranch git fetch upstream git rebase upstream/master

Soy un freelancer haciendo sitios web para clientes. Tengo mi propio devstack basado en React y Node. Actualmente, cuando estoy desarrollando un nuevo sitio, solo copio el último proyecto que he programado y modifico rutas, páginas, etc. Cuando agrego una nueva funcionalidad (actualizo el paquete web 1 a 2 y así sucesivamente), luego tengo que hacerlo manualmente en cada proyecto (o no lo hago en absoluto).

Me gustaría tener un enfoque más profesional a esto. ¿Me pueden recomendar algunos materiales o actitudes hacia él?

Mi objetivo actual es este: tener un repositorio (github privado y después de la verificación, dárselo en público) con mi devstack (marco). Cada vez que empiezo un nuevo proyecto, lo bifurco (para que permanezca como origen ascendente) y comienzo a desarrollar. Cada vez que cambio alguna funcionalidad central o agrego algo que también quiero tener en otros proyectos, quiero empujarlo de alguna manera al repositorio de devstack. También podría copiar este código al devstack manualmente, pero no quiero escribirlo dos veces, así que un mejor enfoque ayudaría.

¿Cómo puedo hacer eso, es buena mi idea? Básicamente, alguna recomendación si tiene algún sentido y algún enlace a un artículo me ayudaría lo suficiente. Gracias.


Existen múltiples enfoques para esto y todos dependen de la cantidad de código de su andamio que se reutiliza, modifica o desecha.

Si su código es muy genérico y permite la personalización sin tocar el código del andamio, realmente recomendaría la última estrategia aquí.

Podrías usar un generador como yeoman . Puedes crear tu propia plantilla para ti y mantener la plantilla. De esta manera, cada vez que creas un sitio nuevo, lo único que tienes que hacer es invocarte con tu plantilla, darle algunas opciones si es necesario y empezar a hacer las cosas.

Cuando se trata de actualizar todos sus proyectos a la vez, el uso de un VonC en sentido ascendente le ha dado un buen enfoque con el forking.

Si desea evitar la bifurcación por completo y puede modularizar su andamio, puede usar submódulos de git .

Con los submódulos de git puede separar el código de su "marco" del código de su cliente. Hay múltiples estrategias.

Depende mucho de su configuración, pero una estrategia sería crear un repositorio para cada cliente con una estructura predefinida y agregar su andamio como un submódulo.

Echa un vistazo a esta pregunta sobre los submódulos y sub repositorios.

Finalmente, si su andamio es muy genérico, nada le impide crear un módulo que poblará su proyecto con los archivos y las opciones necesarios.

En las dependencies package.json tu proyecto puedes agregar:

"my-scaffold": "git+ssh://[email protected]:user/repo.git#ref"

Luego, en el archivo package.json su scaffold, puede ejecutar su script implementación luego de la instalación:

"scripts": { "install" : "node tools/deploy.js" }

Y cada vez que construya su proyecto, puede verificar la versión implementada actualmente en comparación con la versión instalada en sus node_modules y volver a ejecutar el script de implementación para actualizar los scripts que necesita en su proyecto.

¡aclamaciones!