203 votes

Comment faire une pull request pour une page wiki sur GitHub ?

J'ai vu une page wiki sur GitHub qui n'est pas ouvert à l'édition. Ensuite, j'ai forké le projet, je l'ai édité de mon côté et j'ai essayé de faire une pull request. Il s'avère que le wiki n'est pas dans le projet, et il n'y a pas de moyen d'y apporter des modifications.

Outre l'envoi d'un courrier électronique, existe-t-il un moyen de procéder si je souhaite suggérer une modification sur le wiki dans ce cas ?

C'est à ce moment-là que j'ai découvert ce que semble être une alternative sous "Questions with similar titles", mais je n'ai pas encore pu faire la pull request avec, et donc je ne suis pas sûr que les submodules soient un bon moyen pour cela. Je vois maintenant que je pourrais probablement le brancher d'une manière ou d'une autre... Alors, est-ce que c'est la bonne solution ?

142voto

Calrion Points 1088

GitHub ne supporte pas les pull requests pour le dépôt wiki mais seulement le dépôt principal (c'est un peu dommage, IMO, mais je peux le comprendre).

Voici une façon intéressante pour un projet de gérer les mises à jour de la communauté sur son wiki, tout en gardant un contrôle étroit, comme pour le code source :

Le processus que je propose est le suivant :

  1. Créer manuellement une fourche du wiki Taffy
    • Créez un nouveau dépôt sur votre compte github. Appelons-le "Taffy-Wiki".
    • Clonez le repo du wiki Taffy sur votre machine locale : git clone git@github.com:atuttle/Taffy.wiki.git
    • Supprimez le remote original "origin" et ajoutez votre repo github en tant que nouveau "origin" git remote rm origin y git remote add origin git@github.com:<YOUR_USERNAME>/Taffy-Wiki.git
  2. Effectuez les modifications proposées localement, puis envoyez-les sur votre compte github : git push -u origin master ("-u origin master" n'est nécessaire que la première fois ; par la suite, il suffit de faire git push )
  3. Soumettez un ticket au gestionnaire de problèmes officiel de Taffy en me demandant de revoir vos changements et de les intégrer. N'oubliez pas d'inclure un lien vers votre dépôt et de décrire ce que vous avez modifié.
  4. Goto #2

(A partir de Comment contribuer à la documentation de Taffy .)

Si c'était moi, je créerais un problème dans le dépôt principal (c'est-à-dire celui que vous avez forké) en suggérant une mise à jour du wiki. Si les problèmes ne sont pas activés, le courrier électronique est la seule autre option à laquelle je peux penser.

20voto

Jörg Points 173

Nous avons trouvé la meilleure solution au problème jusqu'à présent en https://devonfw.com :

  1. Placez votre documentation dans le dépôt Git avec le code dans un dossier de documentation.
  2. Prolongez votre Travis CI avec une certaine magie qui met en scène toutes les modifications de ce dossier de documentation avec les transformations appliquées au wiki Git. Voir le dernier exemple ci-dessous.
  3. Considérez le wiki comme une vue en lecture seule de la documentation. Veuillez noter qu'avec github.com, vous pouvez toujours voir et éditer directement les fichiers dans le dossier de documentation. Vous pouvez donc toujours corriger les fautes de frappe dans le navigateur en quelques secondes (même en tant que PR sans autorisations sur le repo) - mais pas via le wiki.
  4. Lorsqu'un contributeur effectue un fork, il dispose également de la documentation avec le code. Il peut modifier les deux dans un seul PR et tout est revu dans le même processus, ainsi après la fusion, le code et la documentation restent synchronisés. Vous avez tout de même le plus beau UX pour lire la documentation dans le wiki avec barre latérale, etc.

Comme nous sommes 100% OSS Nous aimons partager les efforts que nous avons déployés pour parvenir à cette solution. Voici les liens à titre d'exemple :

7voto

Rob Moffat Points 393

J'ai adopté une approche différente, qui consiste à mettre exactement le même contenu dans le repo principal et dans le wiki. Cela ne sera pas du goût de tout le monde, mais Le risque d'abord est principalement un wiki avec quelques Jekyll dans le référentiel principal.

Cela signifie que le processus de pull request/fork fonctionne correctement. Cependant, après avoir fusionné une pull-request, je dois faire l'étape supplémentaire de tirer vers mon dépôt local puis de pousser vers le dépôt principal et le wiki, ce que Git supporte bien avec des URLs d'origines multiples :

localhost:website robmoffat$ git remote show origin
* remote origin
  Fetch URL: git@github.com:risk-first/website.git
  Push  URL: git@github.com:risk-first/website.wiki.git
  Push  URL: git@github.com:risk-first/website.git
  HEAD branch: master

Pour ce faire, j'ai fusionné les commits des deux dépôts comme suit :

Comment fusionner deux dépôts Git ?

Et ensuite, pousser vers les deux dépôts comme ceci :

Git - Envoyer du code à deux télécommandes

6voto

Gabriel Staples Points 1804

Vous ne pouvez pas faire de pull request, mais vous pouvez ouvrir une issue, coller un lien vers votre page wiki, et les laisser fusionner votre page wiki avec leur page wiki.

Les wikis sur GitHub sont complet git dépôts Vous pouvez donc les traiter comme tels. Par conséquent, la méthode suivante fonctionne.

En bref :

Il leur suffit de cloner le dépôt de votre page wiki, ( git clone YOUR_FORKED_REPO.wiki.git ), écraser tous les commits de votre wiki en un seul gros commit, puis récupérer ce gros commit écrasé sur leur dépôt. Cela permettra d'intégrer toutes les modifications de votre wiki dans leur wiki.

Instructions complètes :

( Copié sur Gist GitHub de Larry Botha aquí : Fusionner les modifications du wiki à partir d'un dépôt GitHub forké ) :

Fusionner les modifications d'un wiki à partir d'une répo GitHub fourchue

Ceci est inspiré (ou essentiellement copié) de Comment fusionner les modifications du wiki GitHub d'un dépôt à un autre Il a été créé par Roman Ivanov et sert à garantir que, si quelque chose arrive à l'article original, l'information reste bien à l'abri ici.

Terminologie

OREPO Repo d'origine - le repo créé ou maintenu par le propriétaire.

FREPO : le repo forké qui a vraisemblablement des mises à jour de son wiki, pas encore sur le site du OREPO

Contribuer

Si vous souhaitez contribuer au wiki d'un repo que vous avez forké, procédez comme suit :

  • fork le repo
  • clonez uniquement le wiki sur votre machine : $ g clone [FREPO].wiki.git
  • apporter des modifications à votre répertoire wiki local forké
  • pousser vos modifications sur GitHub

Une fois que vous êtes prêt à informer l'auteur de vos modifications, procédez comme suit :

  • ouvrir un dossier sur OREPO
  • fournir un lien direct vers le repo git de votre wiki pour faciliter la fusion : c'est-à-dire [ FREPO ].wiki.git

Fusionner les modifications

En tant que propriétaire de OREPO vous venez de recevoir un message indiquant que des mises à jour de votre wiki ont été effectuées sur le site de quelqu'un d'autre. FREPO .

Si les modifications apportées au wiki sont issues de la dernière version OREPO wiki, vous pouvez procéder comme suit :

$ git clone [OREPO].wiki.git
$ cd [OREPO].wiki.git

# squashing all FREPO changes
$ git pull [FREPO].wiki.git master

$ git push origin master

Si OREPO wiki est en avance sur son temps FREPO à partir de laquelle il a été forké, procédez comme suit :

$ git clone [OREPO].wiki.git
$ cd [OREPO].wiki.git
$ git fetch [FREPO] master:[FREPO-branch]
$ git checkout [FREPO-branch]

# Check out to last OREPO commit
$ git reset --hard [last-OREPO-commit-hash]

# Do massive squash of all FREPO changes
$ git merge --squash HEAD@{1}
$ git commit -m "Wiki update from FREPO - [description]"
$ git checkout master

# Cherry-pick newly squashed commit
$ git cherry-pick [OREPO-newly-squashed-commit]
$ git push

0voto

Roman Ivanov Points 647

En guise de solution de rechange, envisagez l'approche que j'utilise pour mon projet GitHub. Elle est décrite dans Comment fusionner les modifications du wiki GitHub d'un dépôt à l'autre ? .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X