2011-08-04 28 views
37

Quiero conservar todo mi código fuente y documentación en un único repositorio de git. Ya tengo las páginas github integradas en mi proyecto principal y ahora quiero hacer lo mismo con la wiki github.Cómo integrar una wiki de GitHub en el proyecto principal

Sé que github wikis son simples repositorios git. Mi plan es agregar el wiki como un control remoto a mi repositorio principal y mantener todo en un solo lugar. Sin embargo, en el repo de wiki todo está en el directorio raíz y, por lo tanto, ocuparía mi proyecto principal.

¿Alguien ha intentado esto antes? ¿Cuál es la mejor manera de manejar esto?

+0

Fui con el submódulo. Gracias por las respuestas. –

+1

¿Qué te parece esto con el wiki como submódulo? Quiero hacer algo similar, pero no me he familiarizado con el negocio de los submódulos. ¿Cómo podría esto hacer frente a la bifurcación y la fusión, ya que me gustaría tener una rama de "desarrollo" de mi código con la misma para la wiki, así que cuando fusione eso con mi rama principal, también fusionaría los cambios en el rama wiki en vivo. –

+0

¿Pero de qué sirve tenerlo como submódulo?Nadie más puede modificarlo o usarlo de todos modos. ¿Puedes usarlo en cualquier lugar fuera del github? Me refiero a que podrías tenerlo en un directorio separado como repo github y simplemente .gitignore ese directorio desde el repositorio principal. – jayarjo

Respuesta

32

Desea agregar la wiki como submodule. El mismo Wiki git repo está conectado como un control remoto, pero dentro de un subdirectorio con su propio directorio .git.

git submodule add git://github.com/you/proj.wiki 

En la raíz de tu repositorio principal para agregar el repositorio wiki como un submódulo en el wiki/dir.

+7

Actualmente es 'git: // github.com/you/proj.wiki' – cregox

+2

¿Esto permite que los cambios realizados en la wiki sean visibles en la pestaña de gráficos? – devlord

3

Puede crear un submodule con el repositorio de wiki en él o hacer una búsqueda regular y cambiar las ramas hacia adelante y hacia atrás.

5

Me parece muy tedioso, en mi opinión, los github wikis deberían ser ramas del repositorio principal, o al menos debería ser posible.

Sin embargo, creo que la mejor solución es simplemente movimiento la wiki en el repositorio principal, dicen en docs/ o wiki, utilizando un subtree merge. Por ejemplo, suponiendo que su repositorio es you/proj, su wiki estaría en: git://github.com/you/proj.wiki. Luego de fusionar en tu repositorio principal, que haría:

git clone git://github.com/you/proj 
cd proj 
git remote add -f wiki git://github.com/you/proj.wiki 
git merge -s ours --no-commit --allow-unrelated wiki/master 
git read-tree --prefix=wiki/ -u wiki/master 
git commit -m "Github wiki subtree merged in wiki/" 

Incluso puede mantener el wiki de trabajo en el lado de acoger las contribuciones públicas allí, pero luego veterinario ellas en su documentación principal como mejor le parezca. Para combinar los nuevos cambios en después de la revisión, que haría:

git pull -s subtree wiki master 

Desafortunadamente, fusionando los cambios de la otra forma es un tanto complicado, y de todos modos, probablemente debería hacer esto como una cosa de una vez, a continuación, cierre el wiki, o redirigir a la fuente del repositorio ...

Además, una advertencia importante de este enfoque es que git log wiki/Home.md (por ejemplo) en realidad no muestra el historial de la página wiki. La historia es allí, pero de alguna manera git-log no puede rastrearlo. Este es un known limitation relacionado con git subtrees. Otra solución para arreglar esto sería hacer un filter-branch y una combinación regular, una vez, para mantener el historial.

Para mí, la principal ventaja de tener el wiki como parte del árbol fuente principal es que las solicitudes de extracción y los cambios se pueden coordinar a través del código y la documentación. También hace que sea trivialmente simple enviar la documentación con su código en lugar de asumir que la gente lo lea en línea ...

+0

En mi caso, todavía necesito 'git push' para que mis carpetas wiki estén completamente comprometidas con el repositorio principal del proyecto. – hyip

+0

no estoy seguro de por qué, pero 'git log wiki /' no muestra la historia de la wiki con esta técnica. No entiendo por qué, porque 'git log --all' * does * muestra esos cambios ... – anarcat

Cuestiones relacionadas