git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Testing for commit reachability through plumbing commands
@ 2014-03-06 17:17 Martin Langhoff
  2014-03-06 19:17 ` Andreas Schwab
  2014-03-06 20:23 ` Jeff King
  0 siblings, 2 replies; 4+ messages in thread
From: Martin Langhoff @ 2014-03-06 17:17 UTC (permalink / raw)
  To: Git Mailing List

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.langhoff@gmail.com
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Testing for commit reachability through plumbing commands
  2014-03-06 17:17 Testing for commit reachability through plumbing commands Martin Langhoff
@ 2014-03-06 19:17 ` Andreas Schwab
  2014-03-06 19:29   ` Martin Langhoff
  2014-03-06 20:23 ` Jeff King
  1 sibling, 1 reply; 4+ messages in thread
From: Andreas Schwab @ 2014-03-06 19:17 UTC (permalink / raw)
  To: Martin Langhoff; +Cc: Git Mailing List

Martin Langhoff <martin.langhoff@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, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Testing for commit reachability through plumbing commands
  2014-03-06 19:17 ` Andreas Schwab
@ 2014-03-06 19:29   ` Martin Langhoff
  0 siblings, 0 replies; 4+ messages in thread
From: Martin Langhoff @ 2014-03-06 19:29 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Git Mailing List

On Thu, Mar 6, 2014 at 2:17 PM, Andreas Schwab <schwab@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.langhoff@gmail.com
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Testing for commit reachability through plumbing commands
  2014-03-06 17:17 Testing for commit reachability through plumbing commands Martin Langhoff
  2014-03-06 19:17 ` Andreas Schwab
@ 2014-03-06 20:23 ` Jeff King
  1 sibling, 0 replies; 4+ messages in thread
From: Jeff King @ 2014-03-06 20:23 UTC (permalink / raw)
  To: Martin Langhoff; +Cc: Git Mailing List

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-03-06 20:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-06 17:17 Testing for commit reachability through plumbing commands Martin Langhoff
2014-03-06 19:17 ` Andreas Schwab
2014-03-06 19:29   ` Martin Langhoff
2014-03-06 20:23 ` Jeff King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).