summaryrefslogtreecommitdiff
path: root/file/git-hist.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-hist.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-hist.c')
-rw-r--r--file/git-hist.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/file/git-hist.c b/file/git-hist.c
index 0359673..24d0252 100644
--- a/file/git-hist.c
+++ b/file/git-hist.c
@@ -210,7 +210,7 @@ bool vcs_git_try(const char *path)
* exists, but then it would complain about the file not existing,
* which would be at best confusing.
*/
- if (git_repository_open_ext(&repo, path,
+ if (git_repository_open_ext_caching(&repo, path,
GIT_REPOSITORY_OPEN_CROSS_FS, NULL))
return 0;
if (git_repository_is_empty(repo))
@@ -267,7 +267,7 @@ struct vcs_history *vcs_git_history(const char *path, unsigned depth)
git_init_once();
- if (git_repository_open_ext(&history->repo, path,
+ if (git_repository_open_ext_caching(&history->repo, path,
GIT_REPOSITORY_OPEN_CROSS_FS, NULL))
pfatal_git(path);