summaryrefslogtreecommitdiff
path: root/file/git-file.c
diff options
context:
space:
mode:
authorWerner Almesberger <werner@almesberger.net>2016-10-29 17:08:02 -0300
committerWerner Almesberger <werner@almesberger.net>2016-10-29 17:16:19 -0300
commit7bea1c432cbc60844eca08c044f559b4411f8887 (patch)
treefd77371f087ec0e9f22cd2325cb571c38528d4c8 /file/git-file.c
parentda077cfcc19b21ebc994e6d1fb5ab85c99f9cc72 (diff)
downloadeeshow-7bea1c432cbc60844eca08c044f559b4411f8887.tar.gz
eeshow-7bea1c432cbc60844eca08c044f559b4411f8887.tar.bz2
eeshow-7bea1c432cbc60844eca08c044f559b4411f8887.zip
file/: implement caching version of git_repository_open_ext for libgit2 < 0.22
In version 0.22, this was added: Share open packfiles across repositories to share descriptors and mmaps Unfortunately, some people are unable to upgrade to modern libraries. Without FD sharing, eeshow may run out of file descriptors when loading large repositories. This commit adds a cache to reduce the number of times a repository is opened, which may in turn reduce the number of open files.
Diffstat (limited to 'file/git-file.c')
-rw-r--r--file/git-file.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/file/git-file.c b/file/git-file.c
index 24c90fb..10e70a4 100644
--- a/file/git-file.c
+++ b/file/git-file.c
@@ -79,7 +79,7 @@ static git_repository *select_repo(const char *path)
*/
while (1) {
progress(3, "trying \"%s\"", tmp);
- if (!git_repository_open_ext(&repo, *tmp ? tmp : "/",
+ if (!git_repository_open_ext_caching(&repo, *tmp ? tmp : "/",
GIT_REPOSITORY_OPEN_CROSS_FS, NULL))
break;
slash = strrchr(tmp, '/');