Estoy planeando usar Git para escribir mi tesis con látex. Como Git está diseñado específicamente para el desarrollo de software, ¿sería factible para mis requisitos? Si es una buena opción para mí, entonces ¿qué características especiales y únicas están disponibles en Git que son ideales para escribir una tesis? También quiero saber qué precauciones debo tomar antes de entrar en el flujo de trabajo de Git. Soy un principiante completo para Git, entonces, ¿cuál debería ser mi punto de partida antes de entrar en él?Uso de Git para escribir la tesis
Respuesta
Existen algunas consideraciones técnicas y mejores prácticas. Voy por el segundo, específicamente para escribir su tesis y/o documentos. Para los técnicos, puedes consultar cualquier tutorial de git.
Defina la estructura del directorio para su tesis. Puede cambiarlo más tarde, y usar git para rastrear los cambios. Tener una buena estructura te haría la vida más fácil.
Trabaja con múltiples archivos (use include y/o input en LaTeX). Puede dividirlos por capítulos o secciones. Esto facilitará el seguimiento de los cambios que involucran partes específicas de su tesis (por ejemplo,
git log content/introduction.tex
).Haga un seguimiento de los archivos que va a tocar, no los que se generan automáticamente. Crear un archivo proper .gitignore le ayudará mucho (LaTeX genera muchos archivos de trabajo).
Al igual que en los programas, realice microcompromisos, es decir: un compromiso por idea/función/arreglo/actividad.
Cada vez que se comprometa, escriba mensajes significativos (alto nivel) que expliquen lo que estaba tratando de lograr en cada cambio. Después de una semana, es posible que no recuerdes lo que intentaste lograr.
Hacer un seguimiento de cada actividad/idea/solución [ver (4) y (5)] podría ser muy útil para saber cuánto ha hecho (usando
git log
). Puede escribir su informe anticipado para su (s) supervisor (es) a partir delgit log
. Aún más, puede compartir el repositorio con su supervisor (usando una interfaz web), y puede verificar lo que ha estado haciendo en su tesis. Para la próxima reunión, sabrán qué esperar (dependerá de qué tan afectos estén sus supervisores al seguir un RSS).El uso de git será útil para mantenerlo de buen humor (a veces sentiría que no ha hecho demasiado, pero tener un seguimiento de cada cambio le ayudará a mantener las cosas en perspectiva).
Por cada informe de progreso que envíe, cree una etiqueta. Para el próximo informe, puede consultar ambas versiones y aplicar latexdiff. Será útil para rastrear los cambios entre las versiones que envíe para su revisión. Esto también lo ayudará a verificar si respondió los comentarios que recibió en el informe anterior.
Por último pero no menos importante, recomiendo que lea "A successful Git branching model". Es un artículo muy breve sobre un flujo de trabajo de git. Puede aplicar los mismos conceptos cuando escribe su tesis. Por ejemplo, si está escribiendo un experimento, puede crear una rama para él y fusionarlo una vez que esté "listo". Si tiene que volver a visitarlo más tarde, sería más fácil ver cuáles fueron los cambios involucrados y por qué.
Git funcionará. El látex es efectivamente el código fuente, por lo que debería estar perfectamente bien.
Dicho esto, Git, aunque impresionante, tiene una curva de aprendizaje un poco empinada porque permite muchas cosas para colaborar con varias personas, manejar historias divergentes, etc. Su gran ventaja es la fusión de conflictos (¿qué sucede si cambio un archivo y alguien más cambia un archivo y ambos intentamos cargarlo/enviarlo a algún servidor?).
Si solo desea versionar su tesis, es poco probable que llegue al caso de fusión conflictiva (ya que es el único que lo está editando), y mucho menos al caso de múltiples historias.
Usaría algo más simple como SVN, que si bien es peor para hacer las dos cosas que describí, se ajusta a sus necesidades y es más fácil de aprender.
Además, git almacena todo en un archivo .git en la carpeta en la que se encuentra. Si elimina esa carpeta, sus datos desaparecerán.
SVN requiere un servidor, git se puede manejar por completo en la máquina del usuario. Si él no está operando con múltiples usuarios, nunca se encontrará con los elementos que hacen que git sea difícil para usted. Desde la perspectiva de un principiante completo, creo que git en realidad sería un poco más fácil. –
file: // el protocolo puede manejarse sin "servidor".svn: // el protocolo es fácil de implementar con solo la distribución de subversión. Git * nunca * puede considerarse como "poco fácil". Cometió errores en las sentencias ** ALL ** –
Creo que esta respuesta omite una serie de ventajas clave con el uso de un DVCS para escribir documentos, en particular con un historial completo de su repositorio local, empujando y tirando fácilmente entre las máquinas en las que está trabajando , operación desconectada, etc. Recomendar usar SVN para este tipo de tarea en un mundo en el que git y Mercurial existen es una mala idea, creo. –
En un DVCS, un "workflow" significa:
- flujo de trabajo de combinación (que no debería ser necesario que tanto en su caso)
- flujo de trabajo de publicación (pulsar para un acuerdo de recompra a distancia)
con tu repositorio git local, usted será capaz de comparar con las versiones anteriores (que puede venir muy bien)
Pero el beneficio de un DVCS es cuando:
- guardar su trabajo a través de un empujón a un acuerdo de recompra a distancia (o, por backup purposes, a bundle)
- que sincronice el trabajo, entre dos equipos diferentes (como en "How to push a local git repository to another computer?" o en "git server between laptop and PC (MS Windows 7)").
Luego, una vez que se realiza la sincronización (a través degit push
), puede sacar su segundo entorno completamente fuera de línea y aún beneficiarse del historial completo de su repositorio.
Ahí es donde un DVCS importa en su caso.
Cuando estaba escribiendo mi tesis de doctorado, ¹ utilicé git para gestionar el documento y todas sus figuras, y estoy muy contento de haberlo hecho, sobre todo porque hace que sea más fácil escribir un guión que graphs your progresss como vas a lo largo;) Las principales ventajas que encontré fueron:
- Desde Git es un sistema de control de versiones distribuido, es fácil de trabajar en múltiples máquinas. Si necesita la última versión de su computadora portátil en su máquina de escritorio, puede simplemente
pull
directamente desde la computadora portátil y trabajar allí. Cuando te vas, vas a tu computadora portátil y la sacas de la máquina de escritorio. - Si trabaja en varias máquinas, efectivamente tiene una copia de seguridad reciente de su trabajo (incluido su historial completo), y si desea crear más copias de seguridad puede simplemente ingresar a un nuevo repositorio vacío en otro lugar (como señala VonC's answer) .
- Puede hacer grandes cambios en su documento sabiendo que la versión anterior está almacenada de forma segura, y que si desea recuperar la versión anterior, eso es fácil de hacer.
- Ser capaz de comprometerse con su repositorio cuando no está conectado es muy útil, especialmente porque no tener acceso a Internet hace que sea mucho más fácil escribir;) También guardé los PDF de todos los documentos que cité en el mismo repositorio para es más fácil trabajar fuera de línea, aunque esto infló enormemente el repositorio, por lo que algunos podrían aconsejar contra eso.
El principal consejo que le daría:
- Commit frecuencia, y siempre asegúrese de que usted mantenga la salida de
git status
vacío, ya sea mediante la adición de archivos que necesita, o enumerarlos en.gitignore
. No quiere arriesgarse a que no se rastreen los archivos importantes. - Nunca utilice los comandos de reescritura del historial (por ejemplo,
git rebase
), solo para estar seguro y nunca use los comandos peligrosos de git comogit reset --hard
ygit checkout -f
. Nadie verá tu repositorio completo, por lo que no te importa cómo se ve la historia; es mucho más importante que no hagas nada que pueda perder (o dificultar la recuperación) tu trabajo. - Cuando busque diferencias entre sus versiones, use la opción
--color-words
engit diff
. De lo contrario, tus difs estarán basados en líneas, y si vuelves a formatear un párrafo en LaTeX, será difícil ver cuáles son los cambios reales:git diff --color-words
ignora los saltos de línea y solo muestra las palabras viejas en rojo y el nuevo palabras en verde.
¹ ... con LyX lugar de hacerlo directamente en LaTeX, pero los problemas son esencialmente los mismos.
El gráfico de progreso es bastante impresionante, ¡gracias por compartir! Estoy intentando hacer algo similar, pero quiero rastrear el tamaño (byte o kb) de las confirmaciones en lugar de 'Líneas en documento'. Sé que 'git log --log-size' muestra el tamaño del mensaje de confirmación, pero no estoy seguro de cómo ver el tamaño de la confirmación completa (incluidos los archivos). ¿Alguna idea de cómo hacerlo? ¡gracias de nuevo! –
Ok, parece que git no hace eso! la forma más cercana que encontré es la siguiente: http://stackoverflow.com/questions/10845051/git-show-total-file-distorsion-difference-between-two-commits/10847242#10847242 –
Podría por favor compartir cómo consiguió ese diagrama para el número f líneas? ¿Es un script fácil de escribir? ¿Qué necesito saber para poder escribir uno yo mismo? – Fazzolini
Esto se entiende principalmente como un comentario, pero resultó ser demasiado largo, por lo que lo estoy publicando como respuesta.
Utilicé darcs para mi tesis de maestría, y he estado utilizando RCS, CVS y SVN para muchos proyectos de documentación/escritura en el pasado. Todas estas herramientas brindan la característica básica que quiero: capacidad de revisar mis cambios, retroceder en la historia, verificar los "puntos de deshacer" cuando empiezo a escribir algo nuevo.
Existen recomendaciones antiguas y comprobadas para escribir documentación con control de versión. Usar un formato de solo texto es importante para obtener diferencias sanas. Además, un consejo útil que recogí (IIRC de Kernighan, escribiendo sobre mantener la fuente de Troff en control de versiones) es asegurarme de que todas las líneas sean razonablemente cortas. Tiendo a golpear, ingreso cada pocas líneas, con miras a mantener una cláusula particular o modismo en una línea, de modo que la diferencia será mínima si decido revisar ese detalle en particular más adelante.
- 1. Uso de MemoryStream para escribir en XML
- 2. uso de git para archivos de látex
- 3. Uso de 'git pull' frente a 'git checkout -f' para la implementación del sitio web
- 4. git Groking uso remoto
- 5. MongoDB: ¿Cómo representar un diagrama de esquema en una tesis?
- 6. ¿Cómo uso git diff -G?
- 7. Uso de git con emacs
- 8. Uso de git con BitBucket
- 9. Uso de Git para crear un archivo de archivos modificados
- 10. Uso de git para un gran sitio web
- 11. Uso repetido de git-filter-branch para reescribir nuevas confirmaciones
- 12. ¿El uso de Git tiene sentido para pequeños equipos internos?
- 13. Uso del subárbol de Git para fusionar desde varios sitios
- 14. ¿Cómo uso las extensiones de Git y Git?
- 15. Uso de dos asteriscos para agregar un archivo en git
- 16. ¿Cómo uso AVAssetWriter para escribir audio AAC en ios?
- 17. Uso de un único repositorio de git para proyectos múltiples de git
- 18. ¿Cómo especifico una opción para git clone cuando uso git plug in para Hudson?
- 19. Ayúdenme a elegir un tema para mi tesis de graduación con NAO
- 20. Agregar "Apéndice" antes de "A" en la tabla de contenido tesis
- 21. ¿Cómo uso git rebase -i después de la fusión de git sin estropear las cosas?
- 22. Uso de Git con su proyecto CakePHP
- 23. Uso de Git en una tienda TFS
- 24. Git: advertencia: refname 'xxx' es ambiguo cuando uso git-svn
- 25. Uso de svn/git con Xcode
- 26. El uso de Faraday Rubí joya para descargar la imagen y escribir en el disco
- 27. Caso de uso práctico de 'git rm' y 'git mv' con git?
- 28. El uso de comodines en ruta git log
- 29. Uso de StringWriter para la serialización XML
- 30. Buenos tutoriales para comprender las lenguas específicas de dominio (DSL) desde cero, para comenzar una tesis de encuesta
Git es un muy buen sistema de control de revisiones, (y cosas como mercurial, svn) no es estrictamente para el uso con el desarrollo de software. Como está utilizando Latex, que es textual, git será útil si desea mantener revisiones de su tesis, y luego comparar revisiones o recuperar una revisión anterior. Hay muchas características realmente geniales en Git, aunque creo que mucha de la funcionalidad más avanzada no se aplicará realmente a ti (como 'git-bisect'), pero la gestión de versiones está en tu mano. Aquí hay un tutorial: http://schacon.github.com/git/gittutorial.html – birryree
La funcionalidad de Fork será útil si adquiere un desorden de personalidad múltiple –
El control de versión de documento automático en Mac OS X Lion podría valer la pena si ese es una opción para ti – titaniumdecoy