Как исключить тайники при запросе рефов?

Я пытаюсь запросить коммиты:

repo.Commits.QueryBy(new LibGit2Sharp.Filter { Since = repo.Refs }).Take(100)

В остальном это нормально, но также возвращает тайники. Как исключить тайники? Я знаю, что когда я просматриваю результаты, я мог бы просто игнорировать их, я думаю, но тогда у меня не было бы 100 из них, как я хотел.


person Tower    schedule 31.05.2012    source источник


Ответы (1)


Свойства Since и Until типа Filter вполне терпимы к тому, чем они могут быть оценены.

Согласно документации они

Может быть строкой, содержащей используемое каноническое имя sha или ссылки, веткой, ссылкой, фиксацией, Tag, TagAnnotation, ObjectId или даже смешанный набор всего вышеперечисленного.

По сути, Since = repo.Refs означает "Я хочу просмотреть каждую ссылку на репозиторий при перечислении указанных коммитов".

Подобно git log --all, это действительно будет учитывать ветви, теги, тайник, заметки,...

Если вы хотите уменьшить объем ссылок, вам придется выбрать, с чем будет оцениваться Since.

  • Since = repo.Branches.Where(b => !b.IsRemote)
  • Since = new object[] { repo.Branches["br2"], "refs/heads/master", new ObjectId("e90810b") }

Например, чтобы учитывать только ветки и теги, вы должны использовать

Since = new object[]{ repo.Branches, repo.Tags }

person nulltoken    schedule 31.05.2012
comment
Как вы думаете, есть ли способ учесть те коммиты, на которые не ссылается ни одна ветка или ссылка HEAD? По сути, прокручивайте КАЖДЫЙ коммит в порядке даты/создания, независимо от того, упоминается он или нет. - person Tower; 01.06.2012
comment
Для этого потребуется использовать reflog и/или git fschk. Эти функции пока недоступны. - person nulltoken; 01.06.2012