git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Finding file revisions

From
Linus Torvalds <torvalds@osdl.org>
Date
Apr 27, 2005, 17:34 UTC
Message-ID
<Pine.LNX.4.58.0504271027460.18901@ppc970.osdl.org>
In-Reply-To
<200504271251.00635.mason@suse.com>
On Wed, 27 Apr 2005, Chris Mason wrote:
Show 9 quoted lines
> 
> I haven't seen a tool yet to find which changeset modified a given file, so 
> I whipped up something.  The basic idea is to:
> 
> for each changeset in rev-list
> 	for each file in diff-tree -r parent changeset
> 		match against desired files
> 
> Is there a faster way? 

Yes. Tell "diff-tree" what your desired files are, and it will cut down the amount of work by a _lot_ (because then diff-tree doesn't need to recurse into subdirectories that don't matter).

So you should just do
	for each changeset in rev-list
	do 
		diff-tree -r parent changeset <file-list>
	...
instead. 
> This will scale pretty badly as the tree grows, but 
> I usually only want to search back a few months in the history.  So, it 
> might make sense to limit the results by date or commit/tag.

With more history, "rev-list" should do basically the right thing: it will be constant-time for _recent_ commits, and it is linear time in how far back you want to go. Which seems quite reasonable.

And diff-tree is obviously constant-time (and very fast at that, especially if you limit it to just a few files, since then it won't even bother with any other subdirectories).

		Linus
Previous: Chris MasonNext: Chris Mason
Message 2 of 25 in “Finding file revisions”
  1. Chris MasonApr 27, 2005
  2. Linus TorvaldsApr 27, 2005
  3. Chris MasonApr 27, 2005
  4. Linus TorvaldsApr 27, 2005
  5. Chris MasonApr 27, 2005
  6. Simon FowlerApr 28, 2005
  7. Chris MasonApr 28, 2005
  8. Simon FowlerApr 28, 2005
  9. Chris MasonApr 28, 2005
  10. Kay SieversApr 28, 2005
  11. Tony LuckApr 28, 2005
  12. Thomas GlanzmannApr 28, 2005
  13. Kay SieversApr 28, 2005
  14. Chris MasonApr 28, 2005
  15. Linus TorvaldsApr 28, 2005
  16. Kay SieversApr 28, 2005
  17. Linus TorvaldsApr 28, 2005
  18. Chris MasonApr 28, 2005
  19. David WoodhouseApr 28, 2005
  20. David WoodhouseApr 28, 2005
  21. Thomas GleixnerApr 27, 2005
  22. Linus TorvaldsApr 28, 2005
  23. Thomas GleixnerApr 28, 2005
  24. Daniel BarkalowApr 28, 2005
  25. Chris MasonApr 28, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.