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

[PATCH] cg-fetch: retrieve missing commits with a smarter optimization

From
MLMartin Langhoff <martin@catalyst.net.nz>
Date
Oct 21, 2005, 05:31 UTC
Message-ID
<11298726913836-git-send-email-martin@catalyst.net.nz>

I've actually rebased this one so Petr doesn't have to deal with the silly conflicts. It also turns out that my repo got fsck'd in one of the last updates, and cg-merge was seriously broken. I guess did an update in the middle of the transition between positional parameters and named parameters, and got stuck.

Actual commit message follows.
 
---
 + will check tagrefs, trying to ensure it actually has the relevant
   commits. If the commits are missing, it'll go out and fetch them.
 + if the tagref points to a blob and we have it, it'll skip it

This isn't a complete solution for cg-fetch -- git-fetch is actually much smarter now, and cg-fetch should perhaps be a thin wrapper around it, dropping all the duplicate code.

This version uses ^0 instead of ^{commit} which does a more thorough check, so we don't need to call git-cat-file.

---
 cg-fetch |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

applies-to: e6fab694ece986de77f6e17c16df9f17276c6666 e2cf1ab9b594d3d12655dd93377dfea03247379e

diff --git a/cg-fetch b/cg-fetch
index b004ab3..f0c11aa 100755
--- a/cg-fetch
+++ b/cg-fetch
@@ -377,7 +377,8 @@ $get -i -s -u -d "$uri/refs/tags" "$_git
 	for tag in *; do
 		[ "$tag" = "*" ] && break
 		tagid="$(cat "$tag")"
-		GIT_DIR=../.. git-cat-file -t "$tagid" >/dev/null 2>&1 && continue
+		GIT_DIR=../.. git-rev-parse --verify "$tag"^0 2>/dev/null >> /dev/null && continue
+		GIT_DIR=../.. git-cat-file blob `git-rev-parse --verify "$tag"^{blob} 2>/dev/null` 2>/dev/null >> /dev/null && continue
 		echo -n "Missing object of tag $tag... "
 		if [ "$fetch" != "fetch_rsync" ] && GIT_DIR=../.. $fetch "$tagid" "$uri" 2>/dev/null >&2; then
 			echo "retrieved"
---
0.99.8.GIT
Next: Petr Baudis
Message 1 of 2 in “cg-fetch: retrieve missing commits with a smarter optimization”
  1. cg-fetch: retrieve missing commits with a smarter optimizationMartin Langhoff, Oct 21, 2005
  2. Petr BaudisOct 21, 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.