]> git.proxmox.com Git - libgit2.git/log
libgit2.git
12 years agotravis: make it run the tests under valgrind
Carlos Martín Nieto [Thu, 12 Jul 2012 19:04:09 +0000 (21:04 +0200)]
travis: make it run the tests under valgrind

12 years agoFix memory leak in test
Russell Belfer [Thu, 12 Jul 2012 18:56:50 +0000 (11:56 -0700)]
Fix memory leak in test

12 years agoMissed a couple of khash inline dependencies
Russell Belfer [Thu, 12 Jul 2012 18:52:10 +0000 (11:52 -0700)]
Missed a couple of khash inline dependencies

12 years agoIsolate khash inlines from global namespace
Russell Belfer [Thu, 12 Jul 2012 18:48:12 +0000 (11:48 -0700)]
Isolate khash inlines from global namespace

khash.h was globally #define'ing "inline" which messes with
other files.  Let's keep it as "kh_inline".

12 years agoUse GIT_INLINE instead of inline
Carlos Martín Nieto [Thu, 12 Jul 2012 18:48:46 +0000 (20:48 +0200)]
Use GIT_INLINE instead of inline

12 years agotests: fix git_odb_foreach() object count
Carlos Martín Nieto [Thu, 12 Jul 2012 18:40:09 +0000 (20:40 +0200)]
tests: fix git_odb_foreach() object count

Some objects were added in another PR

12 years agocommit: properly export git_commit_nth_gen_ancestor()
Carlos Martín Nieto [Thu, 12 Jul 2012 18:33:30 +0000 (20:33 +0200)]
commit: properly export git_commit_nth_gen_ancestor()

12 years agoMerge pull request #789 from carlosmn/odb-foreach
Vicent Martí [Thu, 12 Jul 2012 16:42:54 +0000 (09:42 -0700)]
Merge pull request #789 from carlosmn/odb-foreach

odb: add git_odb_foreach()

12 years agoMerge pull request #805 from nulltoken/fix/revwalk-email-parsing
Vicent Martí [Thu, 12 Jul 2012 16:37:09 +0000 (09:37 -0700)]
Merge pull request #805 from nulltoken/fix/revwalk-email-parsing

Fix revwalk email parsing

12 years agoMerge pull request #814 from nulltoken/topic/revparse-refac
Vicent Martí [Thu, 12 Jul 2012 16:35:35 +0000 (09:35 -0700)]
Merge pull request #814 from nulltoken/topic/revparse-refac

Revparse refactoring: a start

12 years agoMerge pull request #812 from arrbee/assorted-tweaks
Vicent Martí [Thu, 12 Jul 2012 16:32:44 +0000 (09:32 -0700)]
Merge pull request #812 from arrbee/assorted-tweaks

Assorted goodies

12 years agorevparse: deploy git_reference_remote_tracking_from_branch()
nulltoken [Wed, 11 Jul 2012 22:52:01 +0000 (00:52 +0200)]
revparse: deploy git_reference_remote_tracking_from_branch()

12 years agorefs: introduce git_reference_remote_tracking_from_branch()
nulltoken [Wed, 11 Jul 2012 22:44:07 +0000 (00:44 +0200)]
refs: introduce git_reference_remote_tracking_from_branch()

12 years agorefs: readonly tests don't need a sandboxed repo
nulltoken [Wed, 11 Jul 2012 21:47:58 +0000 (23:47 +0200)]
refs: readonly tests don't need a sandboxed repo

12 years agorevparse: deploy git_commit_nth_gen_ancestor()
nulltoken [Wed, 11 Jul 2012 14:52:02 +0000 (16:52 +0200)]
revparse: deploy git_commit_nth_gen_ancestor()

12 years agocommit: introduce git_commit_nth_gen_ancestor()
nulltoken [Wed, 11 Jul 2012 14:14:12 +0000 (16:14 +0200)]
commit: introduce git_commit_nth_gen_ancestor()

12 years agocommit: reduce code duplication
nulltoken [Wed, 11 Jul 2012 09:20:20 +0000 (11:20 +0200)]
commit: reduce code duplication

12 years agorevparse: simplify the parsing of described object
nulltoken [Tue, 10 Jul 2012 18:52:56 +0000 (20:52 +0200)]
revparse: simplify the parsing of described object

12 years agosignature: prevent angle bracket usage in identity
nulltoken [Thu, 5 Jul 2012 15:02:03 +0000 (17:02 +0200)]
signature: prevent angle bracket usage in identity

12 years agorevwalk: relax the parsing of the commit time
nulltoken [Wed, 4 Jul 2012 14:06:07 +0000 (16:06 +0200)]
revwalk: relax the parsing of the commit time

12 years agotests: add test commit with angle brackets in the author name
nulltoken [Wed, 4 Jul 2012 12:00:19 +0000 (14:00 +0200)]
tests: add test commit with angle brackets in the author name

12 years agoAdd missing includes
Vicent Marti [Wed, 11 Jul 2012 12:37:26 +0000 (14:37 +0200)]
Add missing includes

12 years agoMerge pull request #801 from nulltoken/fix/ref-renaming
Vicent Martí [Wed, 11 Jul 2012 12:29:51 +0000 (05:29 -0700)]
Merge pull request #801 from nulltoken/fix/ref-renaming

refs and revparse love <3

12 years agoFix missing NUL termination of buffer
Russell Belfer [Wed, 11 Jul 2012 06:51:32 +0000 (23:51 -0700)]
Fix missing NUL termination of buffer

12 years agoAdd flag to write gitlink on setting repo workdir
Russell Belfer [Tue, 10 Jul 2012 22:35:38 +0000 (15:35 -0700)]
Add flag to write gitlink on setting repo workdir

This added a flag to the `git_repository_set_workdir()` function
that enables generation of a `.git` gitlink file that links the
new workdir to the parent repository.  Essentially, the flag tells
the function to write out the changes to disk to permanently set
the workdir of the repository to the new path.

If you pass this flag as true, then setting the workdir to something
other than the default workdir (i.e. the parent of the .git repo
directory), will create a plain file named ".git" with the standard
gitlink contents "gitdir: <repo-path>", and also update the
"core.worktree" and "core.bare" config values.

Setting the workdir to the default repo workdir will clear the
core.worktree flag (but still permanently set core.bare to false).

BTW, the libgit2 API does not currently provide a function for
clearing the workdir and converting a non-bare repo into a bare one.

12 years agoAdding git_config_foreach_match() iteration fn
Russell Belfer [Tue, 10 Jul 2012 22:22:39 +0000 (15:22 -0700)]
Adding git_config_foreach_match() iteration fn

Adding a new config iteration function that let's you iterate
over just the config entries that match a particular regular
expression.  The old foreach becomes a simple use of this with
an empty pattern.

This also fixes an apparent bug in the existing `git_config_foreach`
where returning a non-zero value from the iteration callback was
not correctly aborting the iteration and the returned value was
not being propogated back to the caller of foreach.

Added to tests to cover all these changes.

12 years agoAdding unicode space to match crlf patterns
Russell Belfer [Tue, 10 Jul 2012 22:20:08 +0000 (15:20 -0700)]
Adding unicode space to match crlf patterns

Adding 0x85 to `git__isspace` since we also look for that in filter.c
as a whitespace character.

12 years agoAdd path utilities to resolve relative paths
Russell Belfer [Tue, 10 Jul 2012 22:13:30 +0000 (15:13 -0700)]
Add path utilities to resolve relative paths

This makes it easy to take a buffer containing a path with relative
references (i.e. .. or . path segments) and resolve all of those
into a clean path.  This can be applied to URLs as well as file
paths which can be useful.

As part of this, I made the drive-letter detection apply on all
platforms, not just windows.  If you give a path that looks like
"c:/..." on any platform, it seems like we might as well detect
that as a rooted path.  I suppose if you create a directory named
"x:" on another platform and want to use that as the beginning
of a relative path under the root directory of your repo, this
could cause a problem, but then it seems like you're asking for
trouble.

12 years agoAdd a couple of useful git_buf utilities
Russell Belfer [Tue, 10 Jul 2012 22:10:14 +0000 (15:10 -0700)]
Add a couple of useful git_buf utilities

* `git_buf_rfind` (with tests and tests for `git_buf_rfind_next`)
* `git_buf_puts_escaped` and `git_buf_puts_escaped_regex` (with tests)
  to copy strings into a buffer while injecting an escape sequence
  (e.g. '\') in front of particular characters.

12 years agoUpdating language in examples README
Russell Belfer [Wed, 11 Jul 2012 04:50:36 +0000 (21:50 -0700)]
Updating language in examples README

12 years agoMerge pull request #804 from schu/examples-readme
Russell Belfer [Wed, 11 Jul 2012 04:46:40 +0000 (21:46 -0700)]
Merge pull request #804 from schu/examples-readme

examples: add README

12 years agoMerge pull request #793 from libgit2/tree-entry-by-path
Russell Belfer [Wed, 11 Jul 2012 04:45:16 +0000 (21:45 -0700)]
Merge pull request #793 from libgit2/tree-entry-by-path

Bring back `entry_bypath`

12 years agoMerge pull request #797 from yorah/fix/inter-hunk-context
Russell Belfer [Tue, 10 Jul 2012 23:24:17 +0000 (16:24 -0700)]
Merge pull request #797 from yorah/fix/inter-hunk-context

diff: make inter-hunk-context default value git-compliant

12 years agoMerge pull request #811 from nacho/development
Russell Belfer [Tue, 10 Jul 2012 22:49:51 +0000 (15:49 -0700)]
Merge pull request #811 from nacho/development

Point to the libgit2-glib wiki page

12 years agoexamples: add README
Michael Schubert [Fri, 29 Jun 2012 17:23:36 +0000 (19:23 +0200)]
examples: add README

12 years agoMerge pull request #810 from Steap/development
Russell Belfer [Tue, 10 Jul 2012 04:49:34 +0000 (21:49 -0700)]
Merge pull request #810 from Steap/development

Fix libgit2 on GNU/Hurd.

12 years agoPoint to the libgit2-glib wiki page
Ignacio Casal Quinteiro [Mon, 9 Jul 2012 11:12:16 +0000 (13:12 +0200)]
Point to the libgit2-glib wiki page

12 years agorevparse: unfound reference return ENOTFOUND
nulltoken [Sat, 7 Jul 2012 06:25:39 +0000 (08:25 +0200)]
revparse: unfound reference return ENOTFOUND

12 years agorevparse: fix invalid test reference name
nulltoken [Sat, 7 Jul 2012 05:27:53 +0000 (07:27 +0200)]
revparse: fix invalid test reference name

12 years agorevparse: do not segfault when retrieving the last entry
nulltoken [Fri, 6 Jul 2012 21:37:44 +0000 (23:37 +0200)]
revparse: do not segfault when retrieving the last entry

12 years agorevparse: fix disambiguation of refs
nulltoken [Fri, 6 Jul 2012 19:25:42 +0000 (21:25 +0200)]
revparse: fix disambiguation of refs

12 years agorevparse: unfound previous head return ENOTFOUND
nulltoken [Fri, 6 Jul 2012 18:44:17 +0000 (20:44 +0200)]
revparse: unfound previous head return ENOTFOUND

12 years agorevparse: split reflog test per feature
nulltoken [Fri, 6 Jul 2012 17:48:57 +0000 (19:48 +0200)]
revparse: split reflog test per feature

12 years agorevparse: enhance upstream reflog test coverage
nulltoken [Fri, 6 Jul 2012 15:25:31 +0000 (17:25 +0200)]
revparse: enhance upstream reflog test coverage

12 years agorevparse: enhance refs/<name> coverage
nulltoken [Tue, 3 Jul 2012 16:01:46 +0000 (18:01 +0200)]
revparse: enhance refs/<name> coverage

12 years agorevparse: only allow decimal reflog ordinal specs
nulltoken [Fri, 6 Jul 2012 10:47:14 +0000 (12:47 +0200)]
revparse: only allow decimal reflog ordinal specs

passing 0 to git_strol(32|64) let the implementation guess if it's
dealing with an octal number or a decimal one.

Let's make it safe and ensure that both 'HEAD@{010}' and 'HEAD@{10}'
point at the same commit.

12 years agorevparse: leverage git__isdigit()
nulltoken [Wed, 4 Jul 2012 20:02:54 +0000 (22:02 +0200)]
revparse: leverage git__isdigit()

12 years agoutil: add git__isdigit()
nulltoken [Wed, 4 Jul 2012 14:24:09 +0000 (16:24 +0200)]
util: add git__isdigit()

12 years agorevparse: detect incorrect "refname@{-n}" syntax
nulltoken [Thu, 5 Jul 2012 20:26:14 +0000 (22:26 +0200)]
revparse: detect incorrect "refname@{-n}" syntax

12 years agorevparse: slightly improve readability of tests
nulltoken [Tue, 3 Jul 2012 13:34:22 +0000 (15:34 +0200)]
revparse: slightly improve readability of tests

12 years agorevparse: readonly tests don't need a sandboxed repo
nulltoken [Tue, 3 Jul 2012 12:59:14 +0000 (14:59 +0200)]
revparse: readonly tests don't need a sandboxed repo

12 years agorefs: deep unfound ref returns ENOTFOUND
nulltoken [Sat, 7 Jul 2012 08:36:35 +0000 (10:36 +0200)]
refs: deep unfound ref returns ENOTFOUND

12 years agorefs: remove seemingly useless giterr_clear() call
nulltoken [Wed, 4 Jul 2012 10:23:03 +0000 (12:23 +0200)]
refs: remove seemingly useless giterr_clear() call

12 years agorefs: deploy git_reference_has_log()
nulltoken [Wed, 4 Jul 2012 10:20:43 +0000 (12:20 +0200)]
refs: deploy git_reference_has_log()

12 years agorefs: add git_reference_has_log()
nulltoken [Wed, 4 Jul 2012 09:58:04 +0000 (11:58 +0200)]
refs: add git_reference_has_log()

12 years agorefs: fix moving of the reflog when renaming a ref
nulltoken [Tue, 3 Jul 2012 10:07:33 +0000 (12:07 +0200)]
refs: fix moving of the reflog when renaming a ref

12 years agoFix libgit2 on GNU/Hurd.
Cyril Roelandt [Thu, 5 Jul 2012 22:54:07 +0000 (00:54 +0200)]
Fix libgit2 on GNU/Hurd.

On GNU, the d_name field of the dirent structure is defined as "char d_name[1]",
so we must allocate more than sizeof(struct dirent) bytes, just like on Sun.

12 years agoMerge pull request #798 from nulltoken/fix/revparse-date
Vicent Martí [Tue, 3 Jul 2012 19:38:09 +0000 (12:38 -0700)]
Merge pull request #798 from nulltoken/fix/revparse-date

revparse: fix parsing of date specifiers

12 years agoMerge pull request #800 from kevinsawicki/patch-1
Vicent Martí [Tue, 3 Jul 2012 19:37:08 +0000 (12:37 -0700)]
Merge pull request #800 from kevinsawicki/patch-1

Replace incorrect 'it' with 'if' in documentation

12 years agoReplace incorrect 'it' with 'if' in documentation
Kevin Sawicki [Tue, 3 Jul 2012 19:35:33 +0000 (12:35 -0700)]
Replace incorrect 'it' with 'if' in documentation

12 years agoodb: add git_odb_foreach()
Carlos Martín Nieto [Tue, 5 Jun 2012 12:48:51 +0000 (14:48 +0200)]
odb: add git_odb_foreach()

Go through each backend and list every objects that exists in
them. This allows fsck-like uses.

12 years agorepo tests: do cleanup reinit tests
Carlos Martín Nieto [Tue, 3 Jul 2012 10:11:19 +0000 (12:11 +0200)]
repo tests: do cleanup reinit tests

12 years agorevparse: fix parsing of date specifiers
nulltoken [Mon, 2 Jul 2012 15:51:02 +0000 (17:51 +0200)]
revparse: fix parsing of date specifiers

12 years agodiff: make inter-hunk-context default value git-compliant
yorah [Mon, 2 Jul 2012 09:18:01 +0000 (11:18 +0200)]
diff: make inter-hunk-context default value git-compliant

Default in git core is 0, not 3

12 years agoMerge pull request #795 from nulltoken/topic/revparse-notfound
Vicent Martí [Fri, 29 Jun 2012 19:16:52 +0000 (12:16 -0700)]
Merge pull request #795 from nulltoken/topic/revparse-notfound

More git_revparse_single ENOTFOUND use cases

12 years agorevparse: unfound reflog entry returns ENOTFOUND
nulltoken [Fri, 29 Jun 2012 15:06:38 +0000 (17:06 +0200)]
revparse: unfound reflog entry returns ENOTFOUND

12 years agorevparse: unfound reflog ref returns ENOTFOUND
nulltoken [Fri, 29 Jun 2012 15:02:29 +0000 (17:02 +0200)]
revparse: unfound reflog ref returns ENOTFOUND

12 years agorevparse: unfound partially-named ref returns ENOTFOUND
nulltoken [Fri, 29 Jun 2012 14:51:46 +0000 (16:51 +0200)]
revparse: unfound partially-named ref returns ENOTFOUND

12 years agotree: Rename `entry_copy` to `entry_dup`
Vicent Marti [Fri, 29 Jun 2012 15:08:36 +0000 (17:08 +0200)]
tree: Rename `entry_copy` to `entry_dup`

12 years agoDon't rmdir() nonexistent dirs in object::tree::frompath tests
Scott J. Goldman [Fri, 29 Jun 2012 07:47:46 +0000 (00:47 -0700)]
Don't rmdir() nonexistent dirs in object::tree::frompath tests

It causes the clar testsuite to abort on Windows, and isn't necessary.

12 years agotree: Bring back `entry_bypath`
Vicent Marti [Fri, 29 Jun 2012 00:21:12 +0000 (02:21 +0200)]
tree: Bring back `entry_bypath`

Smaller, simpler, faster.

12 years agoMerge pull request #788 from nulltoken/topix/revparse
Ben Straub [Thu, 28 Jun 2012 18:47:34 +0000 (11:47 -0700)]
Merge pull request #788 from nulltoken/topix/revparse

Small revparse colon syntax improvements

12 years agorevparse: unfound nth parent returns ENOTFOUND
nulltoken [Thu, 28 Jun 2012 16:04:01 +0000 (18:04 +0200)]
revparse: unfound nth parent returns ENOTFOUND

12 years agorevparse: handle specs with caret and colon
nulltoken [Thu, 28 Jun 2012 09:09:16 +0000 (11:09 +0200)]
revparse: handle specs with caret and colon

12 years agorevparse: unfound treepath returns ENOTFOUND
nulltoken [Wed, 27 Jun 2012 15:27:38 +0000 (17:27 +0200)]
revparse: unfound treepath returns ENOTFOUND

12 years agorevparse: return trees through the "colon" syntax
nulltoken [Wed, 27 Jun 2012 14:51:19 +0000 (16:51 +0200)]
revparse: return trees through the "colon" syntax

12 years agorevparse: replace spaces with tabs
nulltoken [Thu, 28 Jun 2012 05:50:16 +0000 (07:50 +0200)]
revparse: replace spaces with tabs

12 years agomwindow: allow memory-window files to deregister
Carlos Martin Nieto [Thu, 28 Jun 2012 10:05:49 +0000 (12:05 +0200)]
mwindow: allow memory-window files to deregister

Once a file is registered, there is no way to deregister it, even
after the structure that contains it is no longer needed and has been
freed. This may be the source of #624.

Allow and use the deregister function to remove our file from the
global list.

12 years agoMerge pull request #791 from carlosmn/index-path
Vicent Martí [Thu, 28 Jun 2012 10:03:43 +0000 (03:03 -0700)]
Merge pull request #791 from carlosmn/index-path

indexer: don't use '/objects/pack/' unconditionally

12 years agoindexer: don't use '/objects/pack/' unconditionally
Carlos Martín Nieto [Thu, 28 Jun 2012 07:33:08 +0000 (09:33 +0200)]
indexer: don't use '/objects/pack/' unconditionally

Not everyone who indexes a packfile wants to put it in the standard
git repository location.

12 years agoMerge pull request #783 from nulltoken/topic/reinit-coverage
Vicent Martí [Tue, 26 Jun 2012 06:28:17 +0000 (23:28 -0700)]
Merge pull request #783 from nulltoken/topic/reinit-coverage

Repo reinit fix + enhanced test coverage

12 years agoMerge pull request #785 from nulltoken/topic/refs-fromglob
Vicent Martí [Tue, 26 Jun 2012 06:27:35 +0000 (23:27 -0700)]
Merge pull request #785 from nulltoken/topic/refs-fromglob

Topic/refs fromglob

12 years agoMerge pull request #786 from schu/indexer
Vicent Martí [Mon, 25 Jun 2012 17:32:05 +0000 (10:32 -0700)]
Merge pull request #786 from schu/indexer

indexer: start parsing input data immediately

12 years agoindexer: start parsing input data immediately
Michael Schubert [Mon, 25 Jun 2012 13:26:38 +0000 (15:26 +0200)]
indexer: start parsing input data immediately

Currently, the first call of git_indexer_stream_add adds the data to the
underlying pack file and opens it for later use, but doesn't start
parsing the already available data.
This means, git_indexer_stream_finalize only works if
git_indexer_stream_add was called at least twice. Kill this limitation
by parsing available data immediately.

12 years agoamigaos: Add missing include
Vicent Marti [Sun, 24 Jun 2012 14:56:32 +0000 (16:56 +0200)]
amigaos: Add missing include

12 years agorevwalk: make git_revwalk_(push|hide)_glob() leverage git_reference_foreach_glob()
nulltoken [Fri, 22 Jun 2012 15:04:16 +0000 (17:04 +0200)]
revwalk: make git_revwalk_(push|hide)_glob() leverage git_reference_foreach_glob()

12 years agoreferences: introduce git_reference_foreach_glob()
nulltoken [Fri, 22 Jun 2012 13:51:44 +0000 (15:51 +0200)]
references: introduce git_reference_foreach_glob()

12 years agoamigaos: Cleanup
Vicent Marti [Fri, 22 Jun 2012 19:25:17 +0000 (21:25 +0200)]
amigaos: Cleanup

12 years agoMerge branch 'pull-req' of https://github.com/chris-y/libgit2 into amigaos
Vicent Marti [Fri, 22 Jun 2012 18:48:50 +0000 (20:48 +0200)]
Merge branch 'pull-req' of https://github.com/chris-y/libgit2 into amigaos

12 years agoMerge pull request #784 from nulltoken/patch-1
Scott J. Goldman [Fri, 22 Jun 2012 17:42:43 +0000 (10:42 -0700)]
Merge pull request #784 from nulltoken/patch-1

Fix MSVC compilation errors

12 years agoFix MSVC compilation errors
nulltoken [Fri, 22 Jun 2012 13:42:37 +0000 (16:42 +0300)]
Fix MSVC compilation errors

12 years agotests-clar: fix isolation of repo initialization tests
nulltoken [Fri, 22 Jun 2012 11:41:26 +0000 (13:41 +0200)]
tests-clar: fix isolation of repo initialization tests

12 years agorepository: enhance reinitialization test coverage
nulltoken [Fri, 22 Jun 2012 09:30:43 +0000 (11:30 +0200)]
repository: enhance reinitialization test coverage

12 years agorepository: fix configuration updating issue while reinitialization
nulltoken [Thu, 21 Jun 2012 22:02:23 +0000 (00:02 +0200)]
repository: fix configuration updating issue while reinitialization

When the repository was reinitialized, every configuration change in repo_init_config() was directly performed against the file on the filesystem. However, a previous version of the configuration had previously been loaded in memory and attached to the repository, in repo_init_reinit().

The repository was unaware of the change and the stale cached version of the configuration never refreshed.

12 years agotests-clar: mark unused variables
Michael Schubert [Fri, 22 Jun 2012 08:13:50 +0000 (10:13 +0200)]
tests-clar: mark unused variables

12 years agoMerge pull request #782 from nulltoken/topic/branch-foreach
Vicent Martí [Fri, 22 Jun 2012 03:12:50 +0000 (20:12 -0700)]
Merge pull request #782 from nulltoken/topic/branch-foreach

Branch foreach

12 years agoMerge pull request #780 from schu/cleanup
Vicent Martí [Thu, 21 Jun 2012 18:22:45 +0000 (11:22 -0700)]
Merge pull request #780 from schu/cleanup

Cleanup

12 years agoMerge pull request #781 from liyuray/development
Scott J. Goldman [Thu, 21 Jun 2012 18:15:30 +0000 (11:15 -0700)]
Merge pull request #781 from liyuray/development

fix crash issue on mingw caused by variable argument list type promotion.

12 years agobranch: drop git_branch_list()
nulltoken [Thu, 21 Jun 2012 16:48:36 +0000 (18:48 +0200)]
branch: drop git_branch_list()

12 years agobranch: add git_branch_foreach()
nulltoken [Thu, 21 Jun 2012 16:29:38 +0000 (18:29 +0200)]
branch: add git_branch_foreach()