web-dev-qa-db-fra.com

Lien relatif GitHub dans le fichier Markdown

Y a-t-il un moyen de créer une ancre d'URL, <a>, lien depuis un fichier Markdown vers un autre fichier du même référentiel et de la même branche (c'est-à-dire un lien relatif à la branche actuelle)?

Par exemple, dans la branche principale, j’ai un fichier README.md, dans lequel je voudrais faire quelque chose comme:

# 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 faire le lien entre un fichier .md et un autre dans la même branche sans avoir à me soucier de la branche dans laquelle je me trouve (évitez de devoir créer une URL absolue incluant le nom de la branche github.com).

Voici un exemple de travail 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.

Ceci est attendu car à ce stade, l'URL de départ est dans la branche. Maintenant, comment puis-je l'obtenir pour récupérer la branche actuelle dans le fichier README.md à la racine du référentiel?

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

693
rynop

Mise à jour le 30 janvier 2013 , 16 mois plus tard:

GitHub Blog Post Liens relatifs dans les fichiers de marquage :

À partir d’aujourd’hui, GitHub prend en charge les liens relatifs dans les fichiers de balisage .
Vous pouvez maintenant créer un lien direct entre différents fichiers de documentation, que vous visualisiez la documentation sur GitHub lui-même ou localement, à l'aide d'un rendu de balisage différent.

Vous voulez des exemples de définitions de liens et leur fonctionnement? Voici quelques 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)

et nous allons nous assurer qu'il est lié à user/repo/blob/branch/other_file.md.

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

Cela signifie également que votre documentation peut maintenant être facilement autonome, sans toujours pointer sur GitHub .


Mise à jour du 20 décembre 2011:

Le numéro de balisage GitHub 84 est actuellement fermé par technoweenie , avec le commentaire suivant:

Nous avons essayé d'ajouter une balise <base> pour cela, mais cela pose des problèmes avec d'autres liens relatifs sur le site.


12 octobre 2011:

Si vous regardez le source brute du README.md de Markdown lui-même (!), Les chemins relatifs don ' t semblent être pris en charge.
Vous trouverez des références telles que:

[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
805
VonC

Par exemple, vous avez un dépôt comme celui-ci:

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

Le lien relatif à subtext.md dans text.md pourrait ressembler à ceci:

[this subtext](subpro/subtext.md)

Le lien relatif à subsubtext.md dans text.md pourrait ressembler à ceci:

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

Le lien relatif à subtext.md dans subsubtext.md pourrait ressembler à ceci:

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

Le lien relatif à subsubtext2.md dans subsubtext.md pourrait ressembler à ceci:

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

Le lien relatif à text.md dans subsubtext.md pourrait ressembler à ceci:

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

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

[a relative link](markdown_file.md)

Cependant, il y a quelques lacunes qui ont été discuté dans ce fil de commentaire .

Vous pouvez également utiliser Gitdown pour construire RL complètes vers le référentiel et même les mettre au courant des branches, par exemple.

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

Gitdown est un préprocesseur de démarquage GitHub. Il simplifie les tâches courantes associées à la maintenance d'une page de documentation pour un référentiel GitHub, par exemple. générer une table des matières, y compris des variables, générer des URL et obtenir des informations sur le référentiel lui-même au moment du traitement de l'entrée. Gitdown s'intègre parfaitement à vos scripts de construction.

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

14
Gajus

GitHub pourrait améliorer beaucoup cela avec un minimum de travail. Voici une solution de contournement.

Je pense que tu veux quelque chose de plus semblable

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

ou pour pointer sur le README lui-même

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

Bonne chance

12
Alan Viars

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

exemple: si la structure de répertoire est-ce

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

Pour créer un lien vers Dir A dans README.md présent dans Top_dir, vous pouvez procéder comme suit:

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

Vous pouvez créer un lien vers un fichier, mais pas vers des dossiers, et gardez à l'esprit que, Github ajoutera /blob/master/ avant votre lien relatif (et les dossiers n'ont pas cette partie, ils ne peuvent donc pas être liés, ni avec les balises HTML <a> ou lien Markdown).

Donc, si nous avons un fichier dans myrepo/src/Test.Java, il aura une URL comme:

https://github.com/WesternGun/myrepo/blob/master/src/Test.Java

Et pour le lier dans le fichier readme, nous pouvons utiliser:

[This is a link](src/Test.Java)

ou: <a href="src/Test.Java">This is a link</a>.

(J'imagine que master représente la branche master et qu'elle diffère lorsque le fichier se trouve dans une autre branche.)

7
WesternGun

Vous pouvez utiliser des URL relatives à partir de la racine de votre référentiel avec <a href="">. En supposant que votre référentiel s'appelle testRel, insérez ce qui suit dans testRel/README.md:

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

## myLib docs
see documentation:
    * <a href="testRel/myLib">myLib/</a>
    * <a href="testRel/myLib/README.md">myLib/README.md</a>
6
Jon Chase

Cette question est assez ancienne, mais elle semble toujours importante, car il n'est pas facile de mettre des références relatives de readme.md aux pages wiki sur Github.

J'ai joué un peu et ce lien relatif semble plutôt bien fonctionner:

[Your wiki page](../../wiki/your-wiki-page)

Les deux ../ suppriment /blob/master/ et utilisent votre base comme point de départ. Je n'ai toutefois pas essayé cela sur d'autres référentiels que Github (il peut y avoir des problèmes de compatibilité).

5
Alex

Je ne suis pas sûr si je vois cette option ici. Vous pouvez simplement créer un /folder dans votre référentiel et l'utiliser directement:

[a relative link](/folder/myrelativefile.md)

Aucun nom de blob, d'arbre ou de référentiel n'est nécessaire, et cela fonctionne comme un charme.

4

Si vous voulez un lien relatif vers votre page wiki sur GitHub, utilisez ceci:

Read here: [Some other wiki page](path/to/some-other-wiki-page)

Si vous voulez un lien vers un fichier dans le référentiel, disons, pour référencer un fichier d'en-tête, et que la page du wiki se trouve à la racine du wiki, utilisez ceci:

Read here: [myheader.h](../tree/master/path/to/myheader.h)

La dernière solution consiste à ignorer le chemin "/ wiki" avec "../" et à accéder à la branche principale de l'arborescence du référentiel sans spécifier le nom du référentiel, susceptible de changer à l'avenir.

2
elomage