Testing for commit reachability through plumbing commands

2014-03-06 Thread Martin Langhoff
I have a shell script that trims old history on a cronjob. This is for
a repo that is used to track reports that have limited life (like
logs). Old history is trimmed with grafts pointing to an empty root
commit.

Right now, info/graft grows unbound. I am looking for a way to trim
unreachable grafts, I would like to be able to say something like:

 git is-reachable treeish

Grepping through docs and existing code hasn't helped, but perhaps I'm
missing something obvious...

This repository has a couple hundred branches (one per server
tracked). For a single branch, I can picture a relatively easy
approach with git merge-base.

thanks!



m
-- 
 martin.langh...@gmail.com
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Testing for commit reachability through plumbing commands

2014-03-06 Thread Andreas Schwab
Martin Langhoff martin.langh...@gmail.com writes:

 I have a shell script that trims old history on a cronjob. This is for
 a repo that is used to track reports that have limited life (like
 logs). Old history is trimmed with grafts pointing to an empty root
 commit.

 Right now, info/graft grows unbound. I am looking for a way to trim
 unreachable grafts, I would like to be able to say something like:

  git is-reachable treeish

 Grepping through docs and existing code hasn't helped, but perhaps I'm
 missing something obvious...

Does git fsck --unreachable --no-reflogs help?

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
And now for something completely different.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Testing for commit reachability through plumbing commands

2014-03-06 Thread Martin Langhoff
On Thu, Mar 6, 2014 at 2:17 PM, Andreas Schwab sch...@linux-m68k.org wrote:
 Does git fsck --unreachable --no-reflogs help?

Well, my script, called regularly, does:

 - adds grafts
 - git repack -AFfd (which unpacks unreachable objects)
 - git prune --expire now

 hmm, I guess could prune the grafts using git fsck --unreachable
--no-reflogs before pruning the objects themselves.

we'll find out if it works :-)



m
-- 
 martin.langh...@gmail.com
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Testing for commit reachability through plumbing commands

2014-03-06 Thread Jeff King
On Thu, Mar 06, 2014 at 12:17:34PM -0500, Martin Langhoff wrote:

 I have a shell script that trims old history on a cronjob. This is for
 a repo that is used to track reports that have limited life (like
 logs). Old history is trimmed with grafts pointing to an empty root
 commit.
 
 Right now, info/graft grows unbound. I am looking for a way to trim
 unreachable grafts, I would like to be able to say something like:
 
  git is-reachable treeish

How about:

git rev-list --objects --all |
cut -d' ' -f1 |
grep $(git rev-parse treeish)

Add --reflog to the rev-list invocation if you want to catch things
referenced by the reflog, too.

If you're looking for a commit, you can drop the --objects, and it
will run much faster.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html