1439 votes

Lien relatif à GitHub dans un fichier Markdown

Existe-t-il un moyen de créer une ancre URL ? <a> Un lien à partir d'un fichier Markdown vers un autre fichier dans le même dépôt et la même branche (un lien relatif à la branche actuelle) ?

Par exemple, dans la branche master, j'ai un fichier README.md, dont j'aimerais qu'il fasse quelque chose comme ça :

# My Project
is really really cool. My Project has a subdir named myLib, see below.

## myLib documentation
see documentation [here](myLib/README.md)

Cela me permettrait de créer un lien d'un .md vers un autre au sein de la même branche sans avoir à me soucier de la branche dans laquelle je me trouve (ce qui éviterait de devoir créer une URL absolue incluant le nom de la branche github.com).

Voici un exemple concret de ce que je veux dire :

  1. GOTO http://github.com/rynop/testRel Le lien ne fonctionne pas.
  2. GOTO http://github.com/rynop/testRel/blob/master/README.md Le lien fonctionne.

C'est normal, car à ce stade, l'URL de départ se trouve dans la branche. Maintenant, comment puis-je faire pour qu'il prenne la branche actuelle dans le README.md à la racine du dépôt ?

Mise à jour : J'ai ouvert un numéro contre GitHub pour cette demande de fonctionnalité.

54 votes

Enfin : les liens relatifs sont maintenant supportés ! J'ai mis à jour ma réponse :)

1 votes

Vous pouvez trouver des solutions dans cette question : stackoverflow.com/questions/40422790/

1666voto

VonC Points 414372

Mise à jour 30 janvier 2013 16 mois plus tard :

Article de blog de GitHub Liens relatifs dans les fichiers de balisage :

A partir d'aujourd'hui, GitHub prend en charge les liens relatifs dans les fichiers de balisage .
Vous pouvez désormais établir des liens directs entre différents fichiers de documentation, que vous consultiez la documentation sur GitHub ou localement, en utilisant un autre moteur de rendu de balisage.

Vous voulez des exemples de définitions de liens et de leur fonctionnement ? Voici un peu de Markdown pour vous.
Au lieu d'un lien absolu :

[a link](https://github.com/user/repo/blob/branch/other_file.md)

vous pouvez utiliser un lien relatif :

[a relative link](other_file.md)
[a relative link](path%20with%20spaces/other_file.md)

et nous ferons en sorte qu'il soit lié à user/repo/blob/branch/other_file.md .

Si vous utilisiez une solution de contournement comme [a workaround link](repo/blob/master/other_file.md) vous devrez mettre à jour votre documentation pour utiliser la nouvelle syntaxe.

Cela signifie également votre documentation peut désormais se suffire à elle-même, sans toujours pointer vers GitHub .

Marcono1234 ajoute les commentaires

Également utile : Lorsque le lien commence par un / il est relatif à la racine du référentiel (que le fichier markdown soit ou non imbriqué dans des sous-répertoires).


Mise à jour du 20 décembre 2011 :

Le site Problème de balisage GitHub 84 est actuellement fermé par technoweenie avec le commentaire :

Nous avons essayé d'ajouter un <base> pour cela, mais cela pose des problèmes avec les autres liens relatifs du site.


Le 12 octobre 2011 :

Si vous regardez le source brute de la README.md de Markdown lui-même ( !), les chemins relatifs ne semblent pas être supportés.
Vous trouverez des références comme :

[r2h]: http://github.com/github/markup/tree/master/lib/github/commands/rest2html
[r2hc]: http://github.com/github/markup/tree/master/lib/github/markups.rb#L13

Comme indiqué dans InvisibleWolf 's réponse Si le lien cible est un répertoire et qu'il comporte un espace, vous devez utiliser la méthode suivante %20 pour chaque espace.

2 votes

Hmm Je peux faire une URL relative (essayez [link] someDir/README.md, cela fera une ancre) - mais je veux un lien relatif qui tienne compte des branches de github comme : myRepo/tree/<$curBranch>/pathToMd.md. Je vais probablement ouvrir une demande de fonctionnalité auprès de github.com.

0 votes

@rynop mais votre chemin relatif utilise-t-il déjà toujours la branche courante ?

1 votes

Non. Voir l'exemple complet ici github.com/rynop/testRel . Je pourrais créer un lien relatif spécifiant la branche, mais cela irait à l'encontre de ce que j'essaie de faire en premier lieu. Si je faisais un lien à partir d'un .md dans un sous-répertoire vers un autre, je pense que le lien relatif serait très bien géré. Le problème se produit lorsque je crée un lien à partir d'un .md dans la racine du répertoire.

186voto

mathsyouth Points 960

Par exemple, vous avez un repo comme le suivant :

project/
    text.md
    subpro/
       subtext.md
       subsubpro/
           subsubtext.md
       subsubpro2/
           subsubtext2.md

Le lien relatif à subtext.md en text.md pourrait ressembler à ça :

[this subtext](subpro/subtext.md)

Le lien relatif à subsubtext.md en text.md pourrait ressembler à ça :

[this subsubtext](subpro/subsubpro/subsubtext.md)

Le lien relatif à subtext.md en subsubtext.md pourrait ressembler à ça :

[this subtext](../subtext.md)

Le lien relatif à subsubtext2.md en subsubtext.md pourrait ressembler à ça :

[this subsubtext2](../subsubpro2/subsubtext2.md)

Le lien relatif à text.md en subsubtext.md pourrait ressembler à ça :

[this text](../../text.md)

40voto

Alan Viars Points 311

GitHub pourrait améliorer considérablement cette situation avec un minimum de travail. Voici une solution de contournement.

Je pense que vous voulez quelque chose de plus comme

[Your Title](your-project-name/tree/master/your-subfolder)

ou pour pointer vers le README lui-même

[README](your-project-name/blob/master/your-subfolder/README.md)

3 votes

Oui, c'est ce que je fais aujourd'hui. Je ne veux pas intégrer les informations de la branche dans le lien. Elle doit être relative.

30voto

Gajus Kuizinas Points 4713

Au 31 janvier 2013 Github markdown supporte les liens relatifs aux fichiers .

[a relative link](markdown_file.md)

Cependant, il y a quelques déficiences qui ont été discuté dans ce fil de commentaires .

Comme alternative, vous pouvez utiliser Gitdown pour construire les URLs complètes du référentiel et même les sensibiliser à la branche, par ex.

{"gitdown": "gitinfo", "name": "url"} // https://github.com/gajus/gitdown
{"gitdown": "gitinfo", "name": "branch"} // master

Gitdown est un préprocesseur markdown de GitHub. Il rationalise les tâches courantes associées au maintien d'une page de documentation pour un dépôt GitHub, par exemple la génération de la table des matières, l'inclusion de variables, la génération d'URL et l'obtention d'informations sur le dépôt lui-même au moment du traitement de l'entrée. Gitdown s'intègre de manière transparente à vos scripts de construction.

Je suis l'auteur de la bibliothèque Gitdown.

18voto

InvincibleWolf Points 417

Je voulais juste ajouter ceci car aucune des solutions ci-dessus n'a fonctionné si le lien cible est un répertoire avec des espaces dans son nom. Si le lien cible est un répertoire et qu'il contient des espaces, même l'échappement des espaces avec \ ne rend pas le lien sur Github. La seule solution qui a fonctionné pour moi est d'utiliser %20 pour chaque espace.

Par exemple, si la structure du répertoire est la suivante

Top_dir
|-----README.md
|-----Cur_dir1
      |----Dir A
           |----README.md
      |----Dir B
           |----README.md

Pour faire le lien avec Dir A dans le fichier README.md présent dans Top_dir vous pouvez le faire :

[Dir 1](Cur_dir1/Dir%20A)

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