¿El control de versiones le permite trabajar simultáneamente en dos versiones diferentes de un proyecto?

No estaba seguro de cómo networkingactar la pregunta …

Tengo un proyecto y me gustaría tener una versión con código para logging de shareware, activación, etc. y otra versión sin este código agregado (es decir, una versión sin restricciones).

Sin embargo, al haber creado dos versiones diferentes, me gustaría seguir trabajando en el proyecto general; si actualizo el código de una versión, me gustaría que el código se actualice en la otra versión.

es posible? ¿Es esto lo que las personas quieren decir cuando hablan de crear "twigs"? (Si la respuesta es "sí", mi pregunta se convierte en "¿Es posible realizar cambios en una twig de un proyecto y hacer que el código se envíe simultáneamente a todas las twigs?")

Gracias como siempre.

Puede lograr esto con las twigs de control de origen, pero probablemente no sea la mejor manera de hacerlo. Una mejor manera sería a través de la compilation condicional:

void startup(void) { do_some_stuff(); #ifdef RESTRICTED_VERSION do_check_activation(); #endif do_some_more_stuff(); } 

Luego comstack su versión restringida con -DRESTRICTED_VERSION

Usted no dice qué idioma está usando, pero suponiendo que es un lenguaje comstackdo es probable que tenga un equivalente al sistema #ifdef / -D de #ifdef

No, esto no es para lo que fueron diseñadas las twigs. Se entiende por twigs cuando quieres crear una copy separada del proyecto y trabajar en él sin molestar a las otras twigs. Puede fusionar de una twig a la otra, pero en su mayoría se hace a mano. Puede configurar un script automático que lo haga, pero fallaría si hubiera conflictos.

Sugeriría que uses una herramienta más apropiada para este trabajo. No ha especificado qué idioma está utilizando, pero la mayoría de los idiomas actuales admiten la "compilation condicional". En C / C ++ este sería el # define / # ifdef / # endif cosas. Por lo tanto, puede activarlo o desactivarlo simplemente pasando un parámetro al comstackdor.

Puede hacer esto mediante la bifurcación, y la mayoría de los sistemas ofrecen una forma de realizar commits de scripts, etc. de manera que puede propagar automáticamente los cambios a más de una bifurcación. Sin embargo, probablemente necesite profundizar en la documentation del sistema que esté utilizando para los detalles.

Depende del idioma y del control de fuente utilizado.

Puede combinar código para dos versiones diferentes de un producto mediante el uso de directivas de compilation . En C #, se vería así:

 #if shareware DoSharewareCheck(); #endif 

En este caso, si el producto está comstackdo con el símbolo especificado ( shareware ) definido, se comstack el código dentro de #if y #endif. De lo contrario, es ignorado.

Otra alternativa es usar la ramificación en el control de fuente. Debería crear una twig que contendría específicamente el código shareware. El problema con esto es que debe fusionar regularmente las sucursales para asegurarse de que su código en ambos se mantenga actualizado. Esto consume mucho más time que el uso de directivas de compilation.

Sí, eso es lo que las personas quieren decir cuando dicen twigs.

Muchas veces se encontrará con problemas de fusión, que es cuando propaga cambios en su entorno, en el context del control de versiones

Sí, puede hacerlo utilizando la bifurcación, aunque debe tener en count que la otra twig no se actualiza automáticamente en el caso general, puede llevar su cambio a la primera bifurcación e intentar "fusionarla" con otra, pero en algunos casos puede desencadenar un conflicto con otro cambio. Debido a que sus twigs son diferentes, habrá conflictos.

Si está trabajando en un proyecto por su count, Git es una buena opción porque count con una poderosa ramificación y soporte de fusión integrado. Tiene una especie de curva de aprendizaje, pero no es una mala elección.