Skip to content

Commit 2c5c431

Browse files
committed
docs: add fork maintenance guide and sync script
- Add sync-upstream.sh script to automate synchronization - Add FORK_GUIDE.md with complete workflow documentation - Includes best practices, commands, and troubleshooting
1 parent fbdc4ea commit 2c5c431

2 files changed

Lines changed: 158 additions & 0 deletions

File tree

FORK_GUIDE.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Guía de Uso del Fork Local
2+
3+
## 🔄 Sincronización Regular
4+
5+
Para mantener tu fork actualizado con el repo original de BrowserStack:
6+
7+
```bash
8+
# Opción 1: Usar el script
9+
./sync-upstream.sh
10+
11+
# Opción 2: Manualmente
12+
git checkout main
13+
git fetch upstream
14+
git merge upstream/main
15+
git push origin main
16+
```
17+
18+
**Cuándo sincronizar:**
19+
- Antes de empezar a trabajar en nuevos cambios
20+
- Cuando sepas que BrowserStack hizo actualizaciones
21+
- Antes de crear un nuevo PR
22+
23+
## 🌿 Flujo de Trabajo para Nuevos Cambios
24+
25+
### 1. Siempre trabaja en ramas (nunca en main)
26+
```bash
27+
# Crear rama para nueva feature
28+
git checkout -b feature/nueva-funcionalidad
29+
30+
# Hacer tus cambios...
31+
# Editar archivos
32+
33+
# Commit y push
34+
git add .
35+
git commit -m "feat: descripción del cambio"
36+
git push origin feature/nueva-funcionalidad
37+
38+
# Crear PR en GitHub desde tu rama al main del upstream
39+
```
40+
41+
### 2. Mantener tu rama actualizada
42+
```bash
43+
# Si estás trabajando en una rama larga
44+
git checkout main
45+
git pull upstream main
46+
git checkout tu-rama
47+
git rebase main
48+
```
49+
50+
## 📁 Estructura de Remotes
51+
52+
Tu fork tiene configurado:
53+
- `origin`https://github.com/cocosar/mcp-server.git (tu fork)
54+
- `upstream`https://github.com/browserstack/mcp-server.git (original)
55+
56+
Verificar con:
57+
```bash
58+
git remote -v
59+
```
60+
61+
## ⚠️ Reglas Importantes
62+
63+
1. **NO hagas push a main directamente** - Usa ramas
64+
2. **Sincroniza antes de cada sesión de trabajo** - Evita conflictos
65+
3. **Una rama = Una feature** - Mantén los PRs enfocados
66+
4. **Revisa el estado antes de commitear** - Usa `git status`
67+
68+
## 🔧 Comandos Útiles
69+
70+
```bash
71+
# Ver estado
72+
git status
73+
74+
# Ver historial
75+
git log --oneline --graph
76+
77+
# Ver qué cambió
78+
git diff
79+
80+
# Cambiar de rama
81+
git checkout nombre-rama
82+
83+
# Listar ramas
84+
git branch -a
85+
86+
# Eliminar rama local
87+
git branch -d nombre-rama
88+
89+
# Forzar actualización desde upstream (cuidado!)
90+
git reset --hard upstream/main
91+
```
92+
93+
## 📌 Checklist antes de crear PR
94+
95+
- [ ] Sincronicé con upstream (`git fetch upstream`)
96+
- [ ] Creé rama nueva desde main actualizado
97+
- [ ] Hice los cambios necesarios
98+
- [ ] Probé que funciona (`npm run build`)
99+
- [ ] Commitee con mensaje descriptivo
100+
- [ ] Push a mi fork
101+
- [ ] Creé PR desde GitHub (desde mi rama al main de browserstack/mcp-server)
102+
103+
## 🆘 Solución de Problemas
104+
105+
### Si hay conflictos al mergear:
106+
```bash
107+
git status # Ver archivos en conflicto
108+
# Editar archivos para resolver
109+
git add .
110+
git commit -m "resolve: conflictos de merge"
111+
```
112+
113+
### Si necesitas descartar cambios:
114+
```bash
115+
git checkout -- . # Descarta cambios no commiteados
116+
git reset --hard HEAD # Vuelve al último commit
117+
```
118+
119+
### Si tu rama está desactualizada:
120+
```bash
121+
git checkout main
122+
git pull upstream main
123+
git checkout tu-rama
124+
git rebase main
125+
# Si hay conflictos, resolverlos y luego:
126+
git rebase --continue
127+
```

sync-upstream.sh

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
# sync-upstream.sh - Sincroniza tu fork con el repo original de BrowserStack
3+
4+
echo "🔄 Sincronizando fork con upstream..."
5+
6+
# Guardar cambios locales si hay
7+
echo "💾 Guardando cambios locales..."
8+
git stash
9+
10+
# Cambiar a main
11+
git checkout main
12+
13+
# Obtener cambios del upstream (repo original)
14+
echo "⬇️ Obteniendo cambios de browserstack/mcp-server..."
15+
git fetch upstream
16+
17+
# Merge de upstream/main a tu main local
18+
echo "🔀 Mergeando cambios..."
19+
git merge upstream/main
20+
21+
# Push a tu fork en GitHub
22+
echo "⬆️ Subiendo a tu fork..."
23+
git push origin main
24+
25+
# Restaurar cambios locales si había
26+
echo "📤 Restaurando cambios locales..."
27+
git stash pop
28+
29+
echo "✅ Sincronización completada!"
30+
echo ""
31+
echo "Tu fork ahora está actualizado con el repo original."

0 commit comments

Comments
 (0)