|
| 1 | +--- |
| 2 | +title: "¿Debería rastrear archivos .drawio en Git?" |
| 3 | +author: "Gustavo Castillo" |
| 4 | +date: "2025-03-05" |
| 5 | +output: |
| 6 | + md_document: |
| 7 | + variant: gfm |
| 8 | + preserve_yaml: true |
| 9 | +knit: (function(inputFile, encoding) { |
| 10 | + rmarkdown::render(inputFile, |
| 11 | + encoding = encoding, |
| 12 | + output_file = file.path(paste0( |
| 13 | + "/Users/upar/Library/CloudStorage/[email protected]/Mon Drive/00-SCHOOL-G/0-University_1/0-Semestres PEG/2024-10/Complexity Global School/guscastilloa.github.io/_posts/", |
| 14 | + Sys.Date(), |
| 15 | + '-', |
| 16 | + substr(basename(inputFile), 1, nchar(basename(inputFile)) - 4), |
| 17 | + '.md' |
| 18 | + ) |
| 19 | + ) |
| 20 | + ) |
| 21 | + }) |
| 22 | +--- |
| 23 | + |
| 24 | +```{r, echo=FALSE} |
| 25 | +knitr::opts_knit$set( |
| 26 | + base.dir = "/Users/upar/Library/CloudStorage/[email protected]/Mon Drive/00-SCHOOL-G/0-University_1/0-Semestres PEG/2024-10/Complexity Global School/guscastilloa.github.io", |
| 27 | + base.url = "/") |
| 28 | +knitr::opts_chunk$set(fig.path = "assets/img/posts/2024/predicting_poverty/") |
| 29 | +
|
| 30 | +``` |
| 31 | + |
| 32 | + |
| 33 | +# **¿Es un archivo `.drawio` un archivo de texto o binario?** |
| 34 | + |
| 35 | +Cuando trabajamos con Git, es una buena práctica **evitar rastrear archivos binarios** porque Git no puede mostrar diferencias (`diffs`) significativas ni fusionar (`merge`) cambios de manera eficiente en ellos. Sin embargo, los archivos `.drawio` presentan una situación especial. |
| 36 | + |
| 37 | +## **1. Diferencia entre archivos de texto y archivos binarios** |
| 38 | +Git trata los archivos como **texto o binarios** en función de su contenido: |
| 39 | + |
| 40 | +- **Archivos de texto:** |
| 41 | + - Contienen texto plano legible por humanos (`.txt`, `.csv`, `.py`, `.xml`). |
| 42 | + - Se pueden rastrear eficientemente porque los `diffs` muestran cambios línea por línea. |
| 43 | + - Git puede fusionar cambios automáticamente. |
| 44 | + |
| 45 | +- **Archivos binarios:** |
| 46 | + - Contienen datos codificados o comprimidos (`.png`, `.pdf`, `.xlsx`). |
| 47 | + - Los `diffs` no son útiles porque los cambios aparecen como modificaciones completas. |
| 48 | + - No se pueden fusionar fácilmente. |
| 49 | + |
| 50 | +## **2. ¿Es un archivo `.drawio` un archivo binario?** |
| 51 | + |
| 52 | +Un archivo `.drawio` está basado en **XML**, lo que significa que es técnicamente **texto plano** y se puede abrir en un editor como Vim. Sin embargo, en la práctica se comporta **más como un archivo binario** por las siguientes razones: |
| 53 | + |
| 54 | +- **El XML no es fácilmente legible en Git.** Puede estar comprimido en una sola línea, dificultando la visualización de cambios. |
| 55 | +- **Pequeñas ediciones pueden cambiar grandes secciones del XML.** Mover una figura o cambiar un color puede reorganizar muchos elementos en el archivo. |
| 56 | +- **Las fusiones (`merge`) son problemáticas.** Al ser un archivo estructurado automáticamente por Draw.io, combinar cambios puede ser difícil. |
| 57 | + |
| 58 | +## **3. ¿Debería rastrear archivos `.drawio` en Git?** |
| 59 | + |
| 60 | +✅ **Sí, pero con precaución.** Aquí algunas mejores prácticas: |
| 61 | + |
| 62 | +1. **Habilitar Git LFS para archivos `.drawio`, especialmente si son grandes:** |
| 63 | + ```bash |
| 64 | + git lfs track "*.drawio" |
| 65 | + ``` |
| 66 | + Esto evita que Git almacene versiones innecesarias en su historial. |
| 67 | + |
| 68 | +2. **Exportar versiones en formatos alternativos (SVG/PDF)** para facilitar la visualización de cambios sin necesidad de abrir Draw.io. |
| 69 | + |
| 70 | +3. **Guardar el `.drawio` en formato XML "pretty"** en Draw.io: |
| 71 | + - Ir a **File > Preferences > Save XML as "Pretty"**. |
| 72 | + - Esto hace que los `diffs` sean más legibles en Git. |
| 73 | + |
| 74 | +4. **Si no necesitas modificar el `.drawio`, considera solo rastrear su versión en PNG.** |
| 75 | + |
| 76 | +## **4. Comparación con archivos binarios** |
| 77 | + |
| 78 | +| Característica | `.drawio` (XML) | Archivo Binario (`.png`, `.docx`) | |
| 79 | +|-------------------|----------------|-----------------------------------| |
| 80 | +| ¿Texto plano? | ✅ Sí | ❌ No | |
| 81 | +| ¿Git diffs útiles? | ❌ No mucho | ❌ No | |
| 82 | +| ¿Fusionable? | ❌ Difícil | ❌ Imposible | |
| 83 | +| ¿Se debe rastrear en Git? | ✅ Sí, con cuidado | ⚠️ Mejor usar LFS o evitar | |
| 84 | + |
| 85 | +## **Conclusión** |
| 86 | + |
| 87 | +Un archivo `.drawio` es técnicamente un archivo de texto, pero en la práctica **actúa como un archivo binario** en Git. Si decides rastrearlo, considera usar **XML en formato "pretty"**, **Git LFS**, o exportar versiones alternativas para facilitar el control de versiones. |
| 88 | + |
0 commit comments