Comment rechercher un message de propagation sur GitHub?

pas dans un git repo , mais plutôt dans GitHub spécifiquement - comment puis-je rechercher seulement les messages de propagation d'une branche/repo spécifique?

297
demandé sur Community 2013-08-08 13:36:32

11 réponses

à partir de 2017 c'est une fonctionnalité incluse dans GitHub lui-même .

L'exemple de recherche utilisé par eux est repo:torvalds/linux merge:false crypto policy

enter image description here gif de https://github.com/blog/2299-search-commit-messages

46
répondu vartec 2017-10-24 13:20:50

vous aviez l'habitude d'être en mesure de le faire, mais Github supprimé cette fonctionnalité à un certain point mi-2013. Pour y parvenir localement, vous pouvez faire:

git log -g --grep=STRING

(utilisez le drapeau-g si vous voulez rechercher d'autres branches et les propagations pendantes.)

-g, --walk-reflogs
    Instead of walking the commit ancestry chain, walk reflog entries from
    the most recent one to older ones. 
198
répondu dsldsl 2013-10-23 19:59:26

mise à Jour (2017/01/05):

Github a publié une mise à jour qui vous permet maintenant de rechercher dans les messages de propagation depuis leur interface. Voir blog post pour plus d'informations.


j'ai eu la même question et j'ai contacté quelqu'un @Github hier:

depuis Qu'ils ont changé leur moteur de recherche en ElasticSearch, il n'est pas possible de rechercher comm messages utilisant L'interface utilisateur Github. Mais cette fonctionnalité est sur la liste de souhaits de l'équipe.

malheureusement, il n'y a pas de date de sortie pour cette fonction en ce moment.

132
répondu oktopus 2017-01-04 23:03:27

la réponse courte est, vous ne pouvez pas rechercher des messages de propagation directement sur github.com le site web. Pour le moment, nous recommandons la solution locale git grep d'autres sur ce fil ont proposé.

à un moment donné GitHub a offert une recherche de style git grep sur les messages de propagation pour un dépôt unique. Malheureusement, cette approche a révélé un déni de service qui pourrait rendre un serveur de fichiers inaccessible. Pour cette raison, nous avons supprimé git grep recherche.

selon les estimations actuelles du back-of-of-the envelope, le nombre de commits en GitHub avoisinerait les 80 milliards. Bien que les ingénieurs de Google rient derrière notre dos, il s'agit d'un assez grand nombre de documents à stocker dans ElasticSearch. Nous aimerions rendre cet ensemble de données consultable, mais ce n'est pas un projet insignifiant.

56
répondu TwP 2015-02-13 17:21:42

ceci a été retiré de GitHub. J'utilise:

$git log --all --oneline | grep "search query"

enter image description here

vous pouvez aussi filtrer par auteur:

$git log --all --oneline --author=rickhanlonii | grep "search query"
44
répondu Rick Hanlon II 2015-02-13 00:51:32

de la page d'aide sur searching code , il semble que ce n'est pas encore possible.

vous pouvez rechercher du texte dans votre repo, y compris la possibilité de choisir des fichiers ou des chemins de recherche, mais vous ne pouvez pas spécifier que vous voulez rechercher dans commits.

peut-être leur suggère ceci ?

21
répondu Jon Cairns 2013-08-08 09:42:39

vous pouvez le faire avec des repos qui ont été rampés par google (les résultats varient d'une repos à une repos)

rechercher toutes les branches de tous les repos crawled pour "changement de licence"

"changer la licence" site: https://github.com/*/*/s'engage

"151900920 de la Recherche" de la branche principale de tous les analysé repos pour le "changement" licence

"changer la licence de site" : https://github.com/*/*/engage/master

recherche branche principale de tous les repos Twitter rampé pour "changement de licence"

"changer la licence" site: https://github.com/twitter/*/engage/master

rechercher toutes les branches de twitter / some_project repo pour "modifier la licence"

"changer la licence de site" : https://github.com/twitter/some_project/commits

19
répondu technosaurus 2015-04-17 22:52:59

mise à Jour janvier 2017 (deux ans plus tard):

vous pouvez maintenant rechercher les messages de propagation ! (toujours seulement dans la branche principale)

https://cloud.githubusercontent.com/assets/1387653/21622772/61a5c7a6-d1bc-11e6-809d-134936a4ac05.gif


février 2015: vous ne savez Pas qui ne pourrait jamais être possible, compte tenu de l'actuelle infrastructure de recherche de base sur Elasticsearch (introduit en janvier 2013 ).

comme réponse "puisant dans des sources crédibles et/ou officielles", voici une interview réalisée avec le peuple GitHub en charge d'introduire Elasticsearch à GitHub (août 2013)

Tim Pease : nous avons deux types de documents: L'un est un fichier de code source et l'autre est un dépôt. Façon que git fonctionne est vous avez commits et vous avez une branche pour chaque commit. Les documents du dépôt suivent la propagation la plus récente pour le dépôt qui a été indexé. Quand un utilisateur pousse une nouvelle propagation vers GitHub, nous sortons alors ce document de dépôt d'elasticsearch. Nous voyons alors la propagation la plus récente et nous obtenons une liste de tous les fichiers qui ont été modifiés, ou ajoutés, ou supprimés entre cette poussée récente et ce que nous avons précédemment indexé. Ensuite, nous pouvons aller il suffit de mettre à jour les documents qui ont été modifiés. Nous n'avons pas à ré-indexer tout l'arbre des Sources chaque fois que quelqu'un pousse.

Andrew Cholakian: donc, vous indexez seulement, je suppose, la branche principale.

Tim Pease: Correct. Ce n'est que le chef de la branche principale que vous allez avoir là-bas et c'est encore beaucoup de données, deux milliards de documents, 30 téraoctets.

Andrew Cholakian: c'est énorme.

[...]

Tim Pease: avec le code source d'indexation sur push, c'est un processus d'auto-guérison.

Nous avons ce document de dépôt qui garde la trace de la dernière propagation indexée. Si nous avons manqué, il suffit de passer à miss three commits là où ces jobs échouent, le prochain commit qui arrive, nous sommes toujours à la recherche de la différence entre le commit précédent que nous avons indexé et le celui que nous voyons avec cette nouvelle poussée.

Vous faites un git diff et vous obtenez tous les fichiers qui ont été mis à jour, supprimés ou ajoutés. Vous pouvez juste dire, " Ok, nous devons supprimer ces fichiers. On doit ajouter ces fichiers, et tout ça."C'est l'auto-guérison et c'est l'approche que nous avons adoptée avec presque toute l'architecture.

Que tous les moyens de ne pas tous les branches de tous les la pension serait indexée selon cette approche.

Une recherche globale de messages de propagation n'est pas disponible pour le moment.

Et Tim Pease lui-même confirme les messages de propagation ne sont pas indexés .

notez qu'il n'est pas impossible d'obtenir son propre indexage elasticsearch local d'un clone local: voir " recherche d'un dépôt git avec ElasticSearch "

mais pour un repo spécifique, le plus facile reste de le cloner et de faire un:

git log --all --grep='my search'

(plus d'options à " comment rechercher un dépôt Git par message de propagation? ")

14
répondu VonC 2017-05-23 11:47:05

depuis que cela a été supprimé de Github, J'ai utilisé gitk sur Linux pour faire cela.

du terminal allez à votre dépôt et tapez gitk

au milieu de l'interface graphique, il y a une boîte de recherche. Il fournit une bonne sélection de filtres:

search bar

Champ contenant, de toucher des chemins, ajout/suppression d'une chaîne, changer la ligne correspondant

type de Correspondance Exacte/IgnCase/Regexp

champs de Recherche - Tous les champs/Titre/Commentaires/Committer

7
répondu Kirk 2014-07-22 18:22:56

cela fonctionne bien de l'intérieur d'eclipse, jusqu'à ce que github ajoute la caractéristique:

enter image description here

https://wiki.eclipse.org/EGit/User_Guide#Searching_for_commits

6
répondu chrismarx 2014-02-24 20:02:39

si vous travaillez sur Ubuntu (ou peut-être d'autres logiciels Unix) et que vous avez une version locale du repo, vous pouvez essayer ce script shell brut que j'ai écrit pour ouvrir les pages GitHub pour tous les commits correspondant à votre terme de recherche dans les nouveaux onglets de votre navigateur par défaut:

#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep=""); do
    python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done

il suffit de remplacer https://github.com/RepoOwnerUserName/RepoName/ par L'URL GitHub réelle de votre repo, enregistrez le script quelque part (par exemple comme githubsearch.sh , le rendre exécutable ( chmod +x githubsearch.sh ) et ajouter ensuite l'alias suivant à votre fichier ~/.bashrc :

alias githubsearch='/path/to/githubsearch.sh'

alors, de n'importe où dans votre git repo, il suffit de faire ceci au terminal:

githubsearch "what you want to search for"

et toutes les commits qui correspondent à votre terme de recherche (insensible à la casse) auront leurs pages GitHub correspondantes ouvertes dans votre navigateur. (Soyez averti que si votre terme de recherche apparaît dans des centaines de commits, cela pourrait bien planter votre navigateur et manger CPU de votre PC pendant un certain temps.)

j'ai seulement testé cela sur Ubuntu et ne savent pas assez sur les scripts shell pour savoir si cela fonctionnera sur D'autres OS basés sur Unix-en particulier, Je ne sais pas si tout ce que j'ai utilisé ici est spécifique à Bash. N'hésitez pas à commenter ou modifier pour ajouter des informations de compatibilité.

4
répondu Mark Amery 2014-01-01 23:06:20