Comment obtenir git show s'engage dans une plage de dates spécifiée par l'auteur de la date?
Apparemment cette:
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
filtres s'engage basé sur la committer date. Comment puis-je la faire apparaître s'engage pour un auteur plage de dates ?
- Double Possible de Git log: filtrer par commettre l'auteur date
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas—du moins, pas dans Git seul. (Rappel pour les autres, la visite de cette question: il n'est pas question de affichage la date de création, c'est à propos de la sélection s'engage par l'auteur, la date, la
--since
/--after
et--until
/--before
. Ces sélecteurs utiliser le committer date, et non la date de création. Considérer comme un exemple extrême d'un commit fait "maintenant", afin de valider la date est dans les années 2000, mais avec effet rétroactif à l'auteur-champ de date à certains jours de l'année 1999. Si la plage de votre sélection est "tout le temps vers le tournant du siècle", vous aurez la sélection de ce commit, depuis sa committer date est "maintenant", plus d'une décennie au-delà de 1999.)Je considère que c'est un petit bug dans Git: vous devriez être en mesure de demander ce qu'il utilise, l'auteur de champ de date où vous pouvez demander à ce qu'il utilise le livreur champ de date. C'est facile avec de formattage, puisque nous avons
%ad
et%cd
et autres, mais impossible avec commettre sélection. Le plus proche que nous avons, c'est quegit rev-list
possible de trier par auteur-date (au sein de general topo-tri).Un interrupteur mondiale dans
git rev-list
, comme--use-author-date
, fonctionnerait comme un simple patch, et ne serait pas trop dur pour ajouter de Git, mais je pense qu'il serait mieux d'avoir--min-author-age
et--max-author-age
ou similaire, et "trier par auteur date du" drapeau (indépendant du général--topo-order
drapeau, de sorte que l'installation les deux drapeaux a le même effet que--author-date-order
).Comme une solution de contournement, vous pouvez lister toutes potentiellement intéressante s'engage (avec
git rev-list
ou équivalent, commegit log
: utiliser tout ce spécificateur permet engage potentiellement intéressant, sauf pour les filtres de date: dans ce cas, c'est juste--all
) et d'en extraire la totalité de leur auteur-champs date (avecgit log --format=%at
ou quoi que ce soit), puis faire votre propre taille de la liste de commettre Id, puis re-soumettre le reste de commettre Idgit log --no-walk
. Mais c'est très douloureux, au mieux. Voir Tim Beigeleisen de la réponse à l'aide de awk pour plus d'.Peut-être que je manque quelque chose, mais ne serait-ce pas assez?
Voir aussi ici
%ad
directive va vous montrer cet auteur en 1999 s'engager, même si c'est avant 2016!Vous peut.
Mais comme @torek mentionné, vous pourriez ne pas être en mesure de le faire avec de la pure Git. Une option serait de pipe quelques jolies format de sortie de
git log
enawk
, et de vérifier la date de création n':Ici, le
%ad
donne à l'auteur la date au format ISO, et%aN
donne le nom de l'auteur.