GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — How to get the hash of the most recent commit of a file under a ref? · gitpython-developers/GitPython · Discussion #1949

How to get the hash of the most recent commit of a file under a ref? #1949

Answered by Byron
ali1234 asked this question in Q&A
How to get the hash of the most recent commit of a file under a ref? #1949
@ali1234 ali1234
Aug 7, 2024 · 1 comment
Answered by Byron Return to top
Discussion options
  • Uh oh!

    There was an error while loading. Please reload this page.

ali1234
Aug 7, 2024

I can get the required information using the git wrapper:

repo.git.log("-1", '--pretty="%H"', ref, '--', path)

However this is too slow when run on in a loop over every file in a set of refs due to process execution overhead.

You must be logged in to vote
All reactions
Answered by Byron Aug 7, 2024

The algorithm can't be used - instead one should traverse each commit, see which files were changed, and remove those from the set of all currently tracked files while associating the hash of the commit. Repeat until the set of tracked files is empty.

This will traverse the commit-graph once, in the worst case, and diff the trees of each commit. But there isn't really any other way.

View full answer

Replies: 1 comment

Comment options
  • Uh oh!

    There was an error while loading. Please reload this page.

Byron
Aug 7, 2024
Maintainer

The algorithm can't be used - instead one should traverse each commit, see which files were changed, and remove those from the set of all currently tracked files while associating the hash of the commit. Repeat until the set of tracked files is empty.

This will traverse the commit-graph once, in the worst case, and diff the trees of each commit. But there isn't really any other way.

You must be logged in to vote
All reactions
0 replies
Answer selected by ali1234
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
🙏
Q&A
Labels
None yet
2 participants
@ali1234 @Byron
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.