Method: Rugged::Walker.walk

Defined in:
ext/rugged/rugged_revwalk.c

.Rugged::Walker.walk(repo, options = ) { ... } ⇒ Object

Create a Walker object, initialize it with the given options and perform a walk on the repository; the lifetime of the walker is bound to the call and it is immediately cleaned up after the walk is over.

The following options are available:

  • sort: Sorting mode for the walk (or an OR combination

of several sorting modes).

  • show: Tips of the repository that will be walked;

this is necessary for the walk to yield any results. A tip can be a 40-char object ID, an existing Rugged::Commit object, a reference, or an Array of several of these (if you’d like to walk several tips in parallel).

  • hide: Same as show, but hides the given tips instead

so they don’t appear on the walk.

  • oid_only: if true, the walker will yield 40-char OIDs

for each commit, instead of real Rugged::Commit objects. Defaults to false.

  • simplify: if true, the walk will be simplified

to the first parent of each commit.

Example:

Rugged::Walker.walk(repo,
        show: "92b22bbcb37caf4f6f53d30292169e84f5e4283b",
        sort: Rugged::SORT_DATE|Rugged::SORT_TOPO,
        oid_only: true) do |commit_oid|
    puts commit_oid
end

generates:

92b22bbcb37caf4f6f53d30292169e84f5e4283b
6b750d5800439b502de669465b385e5f469c78b6
ef9207141549f4ffcd3c4597e270d32e10d0a6bc
cb75e05f0f8ac3407fb3bd0ebd5ff07573b16c9f
...

Yields:



362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
# File 'ext/rugged/rugged_revwalk.c', line 362

static VALUE rb_git_walk(int argc, VALUE *argv, VALUE self)
{
	VALUE rb_repo, rb_options;
	struct walk_options w;
	int exception = 0;

	RETURN_ENUMERATOR(self, argc, argv);
	rb_scan_args(argc, argv, "10:", &rb_repo, &rb_options);

	Data_Get_Struct(rb_repo, git_repository, w.repo);
	rugged_exception_check(git_revwalk_new(&w.walk, w.repo));

	w.rb_owner = rb_repo;
	w.rb_options = rb_options;

	w.oid_only = 0;
	w.offset = 0;
	w.limit = UINT64_MAX;

	if (!NIL_P(w.rb_options))
		rb_protect(load_all_options, (VALUE)&w, &exception);

	if (!exception)
		rb_protect(do_walk, (VALUE)&w, &exception);

	git_revwalk_free(w.walk);

	if (exception)
		rb_jump_tag(exception);

	return Qnil;
}