Skip to content

Commit 2499aca

Browse files
authored
Merge pull request #3 from guscastilloa/guscastilloa-patch-2
Create drawio_git.Rmd
2 parents ec01ded + 5761fc5 commit 2499aca

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

_posts/drawio_git.Rmd

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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

Comments
 (0)