libgit2 / libgit2/libgit2sharp

CommitFilter / CommitSortStrategies Understanding

Ouverte
#1,145 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
C#
Étoiles
3.5k
Forks
925
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

I am trying to understand what "CommitSortStrategies" is actually doing to the commit collections that I am getting back and am just looking for clarification if this is correct.

Git, by default (cmd line app), are shown in reverse chronological order, so:

  • git (default sort) == CommitFilter/SortBy of (Undefined)
  • git --reverse != CommitFilter/SortBy of Reverse
  • git --reverse == CommitFilter/SortBy of Reverse | Time
  • git --topo-order == CommitFilter/SortBy of Topological
  • git --reverse --topo-order == CommitFilter/SortBy of Reverse | Topological
  • git --______ ?= CommitFilter/SortBy of None
  • CommitFilter/SortBy of None != CommitFilter/SortBy of (Undefined)

Is that list correct/complete?

(FYI: I have a multi-million object repo with millions of refs and have reverted to shelling to git to get the commit lists between cross-merge branches as I can not get a direct match between libgit2's ls-trees and gits, my head hurts....)

BTW: What order does CommitSortStrategies.None follow? Based on ref creation order on the file-system, maybe?

A sample for a future reader:
# Note: Piping to head as you can not use -n <number>, --max-count=<number> as that is applied before commit ordering
git log HEAD..master --format="%ci %h %s" --reverse | head -10

So based upon the equivalence list above, in libgit2sharp this becomes:

var filter = new CommitFilter {
    SortBy = CommitSortStrategies.Reverse | CommitSortStrategies.Time,
    Since = master,  // determined by a prior repo.Lookup<Tree>
    Until = head, // determined by a prior repo.Lookup<Tree>                    
};
repo.Commits.QueryBy(filter).Take(10);

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par les points d’entrée CommitFilter, CommitSortStrategies et QueryBy référencés dans l’issue, puis comparez leur comportement avec les exemples de commandes git listés. Documentez si chaque équivalence proposée est correcte et précisez la sémantique de tri de CommitSortStrategies.None ; la tâche est terminée lorsque les questions disposent d’une explication faisant autorité.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, git
Domaine
devtools
Type d'issue
Documentation
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.