Alternativas al control de versiones profesional [cerrado]

57

Nos estamos asociando con algunos no programadores (escritores) que necesitan contribuir a uno de nuestros proyectos.

Ahora simplemente no les gusta la idea de usar Git (o cualquier otra cosa) para la versión que controla su trabajo. Creo que esto se debe a que simplemente no les parece que valga la pena comprender los conceptos retorcidos del control de versiones. (Cuando les presenté por primera vez la ramificación y la fusión, parecía que los estaba ofendiendo).

Ahora, no estamos en condiciones de educarlos o convencerlos de que lo usen. Solo estamos tratando de encontrar alternativas para tener todo su trabajo versionado (que es lo que necesitamos), y obtienen un flujo de trabajo fácil y se concentran en lo que hacen.

Se me ocurrieron algunas ideas ...

  • dígales que guarden su trabajo como un archivo separado cada vez que realicen algún cambio no trivial, y luego use un diff de nuestro lado para rastrear los cambios.
  • escribir un programa (en Python) que implemente los "hitos" en CSSEdit de alguna manera.

Sobre el proyecto:

Es un sistema de procesamiento de lenguaje natural (escrito en C + Python). Hemos contratado algunos escritores para preparar entradas para el sistema en diferentes idiomas. Y a medida que evolucionamos el software, necesitaríamos que esos escritores realicen cambios en sus entradas (artículos). Algunas veces los cambios son muy pequeños (una o dos palabras), y otras veces grandes.

La razón por la que necesitamos controlar esos cambios es porque cada cambio pequeño / grande en la entrada tiene el potencial de cambiar drásticamente la salida del sistema.

codificador de árbol
fuente
15
@rwong - o un wiki con versiones, eso también podría funcionar.
Joris Timmermans
44
Agregando al comentario de @MadKeithV, ¿qué tal un wiki impulsado por git? github.com/github/gollum : se realizarán algunos cambios en el flujo de trabajo, está intentando conectar dos equipos. ¿Has explorado sus herramientas actuales? Hay una pequeña posibilidad de que admitan algún tipo de control de versión y sus escritores nunca se molestaron en averiguarlo ...
Yannis
20
Es realmente simple. Si va a pagar a estas personas, dígales que pueden usar sus herramientas y que se les pague, o si se niegan a usar sus herramientas, no se les paga. Cualquier término medio significará más trabajo de su parte, ya que eso cuesta dinero, se equilibra para encontrar un grupo de personas que trabajen con sus herramientas.
Ramhound
44
Fossil es un VCS interesante que también viene con un Wiki versionado. Lo usamos como una forma de mantener actualizados los documentos, pero podría usarlo para "versionar" cosas como esta.
Ben Brocka
34
¿POR QUÉ estabas tratando de introducir sucursales y fusionarte con personas no tecnológicas? Quieres su trabajo versionado, bien. Puedes decirles cómo quieres que se guarde. Si quieres que manejen ramas y fusiones, te estás yendo al fondo. Deberías haberles conseguido algo agradable y fácil, como Tortuga *, y haber evitado decirles algo que realmente no necesitaban.
David Thornley

Respuestas:

102

cuando les presenté por primera vez la ramificación y la fusión, parecía que los estaba ofendiendo

Esto probablemente se deba a que la ramificación y la fusión son conceptos avanzados, e infinitamente menos útiles que simplemente realizar un seguimiento de los cambios.

Entonces, ¿por qué no explicar simplemente "commit" (guardar) y "actualizar"? Dos conceptos realmente simples . Estoy seguro de que puedes explicarlo en menos de 10 minutos.

Si realmente quieres usar ramas separadas y cosas así, puedes hacer esa parte tú mismo sin involucrarlas.

Thomas Bonini
fuente
20
+1. Para sus propósitos, solo mantener la historia en línea recta es una noción radical y que cambia el juego. Creo que es poco probable que un escritor realmente necesite ramificarse y fusionarse, y si lo hicieran, necesitarían la mano de un desarrollador para sostenerlo mientras lo manejaban.
Dan Ray
77
@ Bill, ¿realmente has intentado fusionarte con git? Creo que funciona bastante bien, mucho mejor que con SVN. (No estoy abogando por el uso de la fusión en los que no es necesario, sin embargo.)
svick
10
@ Bill K Honestamente, esto suena como si necesitara ponerse al día después de 20 años en SVN (si es que es así). La ramificación y la fusión podrían no tener sentido para estos escritores, pero no estoy seguro de cómo logró programar durante 20 años sin ramificar un repositorio. Hay muchos casos en los que las ramas son una buena práctica y facilitan su vida; de hecho, rechazar ciegamente el concepto muestra un juicio pobre (en mi humilde opinión). En SVN la ramificación fue un dolor, pero con git las cosas se pusieron realmente fáciles. Hazte un favor, supera tu ego e invierte una tarde para aprender los conceptos básicos de git. ¡No te arrepentirás, prometido!
Robin
66
@ user606723: TortoiseSVN y TortoiseGIT ofrecen integración de shell de Windows.
Roy Tinker
66
Estoy bastante seguro de que intentar enseñar a Git a ramificarse y fusionarse con personas que no son tecnológicas es una violación de los derechos humanos.
Steve Bennett
69

Un enfoque poco ortodoxo sería usar Dropbox . Haga que los autores guarden los archivos en el directorio de Dropbox y obtendrá versiones y copias de seguridad de forma gratuita. Además, básicamente no hay una curva de aprendizaje para los autores.

Para git, parece que al final terminarás proporcionando a los autores las versiones de rama correctas de todos modos, así que solo coloca el repositorio de git en el buzón y maneja la ramificación y la fusión de los autores.

OliverS
fuente
21
Yo iba a sugerir lo mismo. No hay razón por la que no pueda hacer que la carpeta en Dropbox sea un repositorio git (no necesitan saberlo) y realizar confirmaciones periódicas (por ejemplo, diarias). De esa forma, obtienes todas las buenas cosas de git (diferenciales, registros, bisectos, etc.) de forma gratuita.
Simon Whitaker
44
Asegúrese de usar la versión paga, ya que la versión gratuita solo guarda versiones durante ~ 30 días si no recuerdo mal.
DMan
55
Solo puedo -1 una respuesta que sugiere un servicio externo, introduce un solo punto de falla y pone sus datos a merced de intrusos potenciales, cuando hay mucho software útil sugerido en otras respuestas aquí y las partes involucradas se presentan explícitamente como programadores capaces.
sam hocevar
44
@DavidThornley: ¿no has oído hablar de problemas de seguridad reales con Dropbox ?
sam hocevar
3
@ Sam Hocevar: OK, ahora sí. Fueron cuatro horas de vulnerabilidad, lo que seguro no es bueno, pero no necesariamente significa que sea una mala idea. Nuevamente, depende de cuán sensible sea la escritura y si es aceptable una pequeña posibilidad de que pueda ser vista por un extraño. (Obviamente, no es apto para los registros médicos, pero no tengo reparos en dejar una mala ficción y proyectos de software sin terminar allí).
David Thornley
28

Verdaderamente, la respuesta está en su edición: "Hemos contratado a algunos escritores" - a veces solo tienes que tener una mente sangrienta ... quieren tu dinero, tienen que hacer lo que quieras, siempre que lo que quieres no sea irrazonable.

El argumento que usted hace es el argumento que ya ha avanzado: necesitamos poder hacer X, Y y Z para que el producto funcione, y para hacerlo , necesitamos que lo haga. Seremos tan solidarios como podamos, pero para que esto funcione (y, por lo tanto, para que continúe como una fuente de ingresos para usted, el escritor), esto tiene que suceder.

Tiendo a aceptar que una solución adecuada basada en Wiki parece ser una buena combinación, pero el desafío aquí es cómo encontrar un compromiso entre su flujo de trabajo y sus requisitos.

Repetiré el punto clave: para que su proyecto sea un éxito, necesita que los artículos sean versionados, por lo tanto, aquellos que trabajan en los artículos deben cumplir con un conjunto de reglas acordadas, si esto no sucede , obtendrá quemado y, por extensión, también lo harán los escritores.

Murph
fuente
Estoy totalmente de acuerdo contigo. Pero ya ves que hay algo llamado "gestión" entre nosotros (el equipo de programadores) y los escritores. La gerencia contrató a los escritores y nos dijo que trabajáramos con ellos. El hecho de que sean reacios a aprender el Control de versiones es algo que la gerencia considera que un problema debe "ajustarse" entre nosotros (el equipo) y ellos (programadores).
treecoder
1
Supuse que ... pero luego tienes que presentar tu caso a la gerencia, y es el mismo caso. Tienen razón en que es algo que necesita ser "ajustado" (elección interesante de la palabra), pero el compromiso es una cosa de dos vías, hay que darles algo con lo que puedan trabajar, tienen que trabajar con eso.
Murph
Yay - voto negativo sin explicación, siempre como esos.
Murph
2
@greengit Los problemas que deben "ajustarse" entre los equipos son parte de para qué sirve la administración. Delegar la responsabilidad a un equipo es perezoso o posiblemente una pista de que la gerencia preferiría el enfoque de ese equipo. Por lo tanto, le sugiero que sugiera a la administración la solución que tenga más sentido para usted y que se preocupe por todo lo demás.
yannis
3
Tengo la tendencia a presentar estos "ajustes" a la administración en forma de presupuesto para los cambios propuestos. "Claro, podemos evitar su uso (git, ...). Tendremos que contratar a una secretaria para que lo haga por ellos. Firme aquí y comenzaré las entrevistas el lunes".
BRPocock
18

He tenido que lidiar con una situación similar como esta antes. Al final, solo designamos a un desarrollador (yo) como el punto de contacto de control de versión para el tercero.

La tercera parte me enviaba por correo electrónico un archivo zip de sus archivos de proyecto todos los días y yo hacía el registro por ellos. Configuré un espacio de trabajo de proyecto separado y una cuenta svn para ellos y descomprimiría los archivos en ese espacio de trabajo sobrescribiendo lo que estaba allí y luego haría el registro bajo esa cuenta.

No era lo más divertido que tenía que hacer todos los días, pero a veces es más importante hacer el trabajo.

Una ventaja más fue que me ayudó a revisar su trabajo para asegurarme de que no estuvieran registrando un código y datos incorrectos que podrían romper la compilación.

Alan Barber
fuente
+1 Si eso fuera posible, sería "problema resuelto". para nosotros. No es porque seamos una empresa pequeña y no creo que sugerir que el ahorro de un desarrollador en parte o únicamente para esta tarea me devuelva alguna sonrisa de la administración (idiota). Realmente, siento mi gestión de esa manera.
Treecoder
2
@greengit: si sugiere que esta es la única solución que cree que funcionaría, los costos obligarán a la gerencia a contratar a diferentes personas, que trabajarán con sus herramientas. Por supuesto, puede explicarle a la gerencia que CUALQUIER solución, excepto el control de versiones, COSTARÁ DINERO, ya sea trabajando en problemas (y resolviéndolos) creados por la solución o gastando el tiempo extra tratando de prevenir los problemas (a menos que ignore ambos puntos clave , los problemas sucederán, en realidad sucederán sin importar qué).
Ramhound
3
@greengit Obviamente, dependerá de lo que esté involucrado en su proceso, pero en mi caso me llevó menos de 5 minutos al día registrar los archivos de terceros. Fue mi solución para mitigar la pérdida de tiempo tratando de desarrollar un proceso y capacitar a la tercera parte en él.
Alan Barber
No debería ser tan difícil. Una persona es la interfaz de los escritores con el sistema de control de versiones. Saben presentarle todos sus cambios. No debería tomarle más de un minuto o dos para dejar sus cambios en su lugar y comprometerlos.
Dan Ray
@greengit: esta iba a ser mi respuesta. Sí, tomaría un tiempo lejos de hacer un trabajo útil. Escribir un sistema personalizado (que parece estar ansioso por hacer) llevaría más tiempo. Y los escritores aún se quejarían.
Mike Baranczak
18

SparkleShare es un clon de dropbox basado en git, creo que se adapta a tus necesidades.

SparkleShare crea una carpeta especial en su computadora. Puede agregar carpetas alojadas de forma remota (o "proyectos") a esta carpeta. Estos proyectos se mantendrán sincronizados automáticamente con el host y todos sus pares cuando alguien agregue, elimine o edite un archivo.

... aquí hay algunos ejemplos de lo que hace bien y menos bien con las caras sonrientes:

Excelente

  • Cambio frecuente de archivos de proyecto, como texto, documentos de oficina e imágenes
  • Seguimiento y sincronización de archivos editados por varias personas
  • Revertir un archivo a cualquier punto de su historia
  • Evitar espiar sus archivos en el servidor usando encriptación

No muy bien

  • Copias de seguridad completas de la computadora
  • Almacenar tu colección de fotos o música
  • Grandes archivos binarios que cambian a menudo, como proyectos de edición de video ...

Actualización (noviembre de 2015) : el proyecto parece estar abandonado (última versión de abril de 2014).

mosquito
fuente
Muy prometedor, pero quizás un poco inmaduro. Sin embargo, definitivamente vigilaré esto.
Zsolt Török
13

Si puede proporcionar un espacio de trabajo preparado con un uso transparente de VCS, utilizarán VCS. No enseñe a los no programadores a usar VCS en la forma del programador

Simplemente encuentre el editor con soporte VCS incorporado, configúrelo y muestre pasos fáciles adicionales en sus trabajos.

Solo un ejemplo: Editplus conoce Subversion, tiene la capacidad de realizar operaciones SVN básicas dentro de la ventana del editor. El último Editplus incluso puede usar TortoiseGIT para la integración de Git

Editar : se encontró una solución alternativa: EasySVN , que, configurada correctamente, supervisa la copia de trabajo y realiza la confirmación automática y la automatización, lo que permite utilizar cualquier herramienta de creación para el usuario final y los formatos de cualquier documento

Lazy Badger
fuente
11

¿Qué pasa con la configuración de un WebDAV ?

Manejará automáticamente el historial de versiones en línea recta para ellos. Todo lo que tienen que hacer es conectarse al servidor como si fuera una unidad de red y cada guardado será una confirmación.

Malfist
fuente
+1 para WebDAV. Realmente no pensé en esa opción. ¿Qué tan difícil crees que será implementar y mantener un servidor WebDAV (+ flujo de trabajo)
Treecoder
Es realmente simple, configura apache, subversión, un repositorio. Luego instala el módulo apache y lo configura y ya está.
Malfist
-1 porque "automágicamente" no es una palabra.
dreftymac
44
@dreftymac en.wikipedia.org/wiki/Hair-splitting
SplinterReality
1
Tal vez, puede hacer que esta respuesta sea más explícita: configure Subversion + Apache + WebDAV en un servidor y monte el recurso compartido WebDAV desde los clientes que no son desarrolladores. Indique a los usuarios que guarden su trabajo en el recurso compartido WebDAV al menos una vez al día.
Jan
7

Google Docs

Google Docs puede hacer lo que quieras. File > See Revision Historyle permitirá realizar un seguimiento de los cambios.

También tiene el problema de entregar archivos de un lado a otro de forma gratuita; solo comparte el documento entre todos.

Finalmente, es fácil de usar; los escritores ni siquiera tienen que saber que están sucediendo versiones.

Nathan Long
fuente
6

SO Agnóstico

Escriba un programa Python en el que pueda arrastrar y soltar un archivo, ese programa puede hacer el git addy git commity lo que no, y nunca tienen que lidiar con él.

o

Utilice un sistema de archivos basado en WebDav que pueda montar en su máquina y haga que el servidor haga las gitcosas de forma transparente.

OSX / Linux

Escriba un complemento FUSE basado en Python que tome los archivos y los confirme en git. Luego pueden abrir y guardar del sistema de archivos montado de forma transparente. Hay algunos recursos de FUSE para Windows , pero probablemente no valga la pena engañarlos.

Ventanas

Podría escribir un código para usar FileSystem Filter Drivers para hacer las gitcosas de forma transparente .

user7519
fuente
5

Ah, las alegrías de los no codificadores bromeando. Sugeriría configurar un entorno git / mercurial para ellos. Dígales que guarden todo en un formato que el repositorio pueda manejar. Con tortoisegit o tortoisehg , no necesitan saber cómo funciona el repositorio. Simplemente verifican si tienen un signo de exclamación en el directorio de su proyecto, hacen clic derecho en el archivo ofensivo y hacen clic en confirmar. Escriba una sinopsis de los cambios (son escritores, ¿verdad?) ¡Y listo!

Un paso adicional en el flujo de trabajo para ellos, pero nada sobre fusionar / ramificar / cosas geniales. El entorno preconstruido ya está configurado para estar en la rama de escritores, por lo que no ven el código. Haga que un script los sincronice automáticamente todos los días. Más tarde, después de que estén acostumbrados a comprometerse, puede mostrarles funciones adicionales. La capacidad de ver qué cambió cuando es tan útil que no podrán prescindir de ella una vez que se cuela en su flujo de trabajo.

Spencer Rathbun
fuente
55
Una cosa de la que me he dado cuenta es que todos los escritores no técnicos (YMMV) simplemente consideran que su trabajo anterior es inútil, una vez que lo modifican. Piensan que el trabajo actualizado (artículo o cualquier cosa que escriban) es el mejor, y es una tontería mantener las versiones pasadas del mismo. Aunque en nuestro caso, al menos les hemos explicado con éxito por qué también necesitamos el historial.
Treecoder
@greengit tal vez. Si demuestra cómo los está adaptando a la administración, cómo este simple y fácil paso lo ayuda, y cómo esto ahorra / hace que la empresa gane dinero, entonces tendrán que hacerlo de todos modos. El negocio es impulsado por el resultado final, así que dígale al jefe que esto integra a los escritores en la tubería técnica y ahorra dinero en costos de integración, copias de seguridad (está respaldando el repositorio, ¿verdad?) Y el paso de información.
Spencer Rathbun
+1 También hemos establecido nuestros coordinadores de proyectos y personal de servicio al cliente para usar TortoiseSVN. Después de la explicación inicial (y de ayudarlos con el pago inicial), no tuvieron problemas para confirmar sus versiones modificadas (principalmente documentos de oficina e imágenes de maquetas). Incluso les gustó que obtendrían automáticamente la última versión si un colega cambiara algo.
sleske
3

¿Qué pasa con Share Point? Sé que no es popular en el mundo del desarrollo, pero si sus escritores usan Windows como sistema operativo, funcionará bien y realmente no sabrán que están usando el control de versiones (una gran ventaja para mi trabajo).

Esta solución también les impide lidiar con cualquier cosa que los asuste demasiado, ya que parece que les dan miedo las cosas nuevas.

JustinDoesWork
fuente
+1 ya que esto es lo que nuestro equipo ya está haciendo, y funciona.
sq33G
Prefiero trabajar con un sistema de control de versiones adecuado para SharePoint, donde se encuentra parte de la documentación de nuestra compañía, porque cargar nuevas versiones en SharePoint requiere más trabajo.
Chris Morgan
2

¿Podría configurar una herramienta que supervise el sistema de archivos donde los escritores guardan sus archivos y haga que se confirme automáticamente cada vez que guarden?

Si lo coloca en un recurso compartido de red, podría hacer toda la configuración sin involucrarlos en absoluto; pero cada vez que proporcionen una versión actualizada para que su equipo la use, se agregará a git por usted.

Dan Neely
fuente
1

¿Viste Plastic SCM? Están tratando de simplificar su uso.

Si solo desea copias de seguridad versionadas, puede usar Dropbox o puede configurar el servicio de copia de seguridad de Windows. O puede instalar Crashplan u otro producto similar.

Amala
fuente
+1 por señalarme a una nueva oferta comercial en el ámbito DVCS
Roland Tepp
1

Para Mercurial DVCS, existe una interfaz de usuario llamada EasyMercurial , cuyo objetivo declarado es proporcionar explícitamente una vista simple de las operaciones básicas de control de versiones.

EasyMercurial está destinado a ser:

  • fácil de enseñar y aprender indicativo del estado real del repositorio, usando una representación gráfica de historia
    • reconociblemente cercano al flujo de trabajo normal de la línea de comandos para Mercurial consistente en todas las plataformas

No estamos tratando de producir "el mejor" cliente de Mercurial para ningún propósito. Alentamos activamente a los usuarios a pasar a otros clientes a medida que sus necesidades evolucionan. El objetivo es simplemente proporcionar algo accesible para principiantes en pequeños grupos de proyectos que trabajan con un repositorio remoto compartido.

Recomiendo probarlo.

Laurens Holst
fuente
1

He tenido que trabajar muchas veces con personas que no son programadores (en su mayoría artistas gráficos, y si sus escritores tienen tan poca idea de cómo administrar los archivos de trabajo como artistas, entonces están en ... h'mmm ... diversión ... .). Hay tres enfoques posibles:

  1. Imagina que son programadores, intenta enseñarles cómo usar el control de versiones. Esto no funcionará y tendrás peleas constantes.
  2. Escríbales una herramienta muy simple que simplemente tome la versión actual y la pegue en algún lugar para que puedan rebobinar los archivos de ayer si es necesario. Esto es posible, y lo hice para un equipo de creadores de DVD (haciendo menús, gráficos, todo tipo de cosas) hace muchos años con cierto éxito: la herramienta que escribí fue un contenedor de un solo clic para PkZip (puede ver que esto fue hace un tiempo) y simplemente comprimió el directorio de trabajo y nombró el archivo para la fecha + hora.
  3. Toma el control de lo que producen tú mismo. Deje en claro que sus archivos tienen que ser entregados a un programador y solo se convierten en parte del proyecto cuando el programador acepta los archivos: el programador los verifica en el control de versiones y el contenido se administra de manera profesional.

Personalmente, creo que la opción 3 es el camino a seguir. Significa algo de dolor e irritación para quien tiene que tomar las entregas de archivos y hacer que se registren, pero mucho menos que cualquier otra opción.

También diría, tenga en cuenta que los no programadores entregarán archivos con cualquier nombre de archivo antiguo que pueda imaginar. Las convenciones de nombres son extrañamente extrañas para ellos. Le darán un archivo llamado "Picture" o algo así y luego, cuando les diga las cosas que están mal, le dará un archivo llamado "Picture_Final", que solo corrige alrededor de 3 de las fallas. Cuando señales esto, obtendrás otro archivo, llamado "Picture_NewFinal", y luego (si tienes suerte) "Picture_NewFinal2", aunque es posible que en este momento desechen cualquier sentido de desarrollo histórico y lo llamen "Icono de llave inglesa cosa".

Una vez más, puede intentar imponer una convención de nomenclatura, lo que significa decirles de antemano cómo se llamará a cada archivo, o puede pasar horas descifrando y renombrando lo que le envían. De todos modos, aquí diría que desea la hoja de cálculo para su propia cordura, así que intente hacer que la sigan: simplemente no se sorprenda cuando no lo hagan.

Espero que ayude, ¡diviértete!

AAT
fuente
0

Si existe la posibilidad de que dos de ellos necesiten trabajar en el mismo objetivo a la vez Y si puede ocuparse de todo su trabajo en archivos de texto, probaría los documentos compartidos de Google.

Tiene una increíble capacidad de edición / colaboración múltiple, con mucho, la mejor que he visto. También tienen una versión completa y se pueden exportar como archivos de texto.

Pero esos son dos ifs bastante grandes.

Bill K
fuente
0

Déjelos trabajar en una carpeta, guardando los archivos como de costumbre.

Una vez al día (o semana, etc.) copie el contenido de esa carpeta a backup_dd_mm_yyyy La mayoría del código fuente de los sistemas ocupa una cantidad trivial de espacio dado el espacio disponible en estos días.

Usted, ellos, un tercero, una herramienta o un script pueden hacer la copia.

Esto limita la pérdida a un día, da un historial, es transparente para ellos.

No es perfecto para ninguna de las partes, sino una respuesta que busca alcanzar un punto medio.

Michael Durrant
fuente