[PATCH] api change in libgit2-0.22

Martin Gysel me at bearsh.org
Thu Jan 22 13:14:03 PST 2015


Yet another api change in libgit2...
let's quote the website "libgit2 is ... linkable library with a solid
API ..."

Signed-off-by: Martin Gysel <me at bearsh.org>
---
 save-git.c | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/save-git.c b/save-git.c
index a8f745c..6c2587b 100644
--- a/save-git.c
+++ b/save-git.c
@@ -26,6 +26,14 @@
   #define git_reference_set_target(out,ref,target,signature,log_message) \
 	git_reference_set_target(out,ref,target)
 #endif
+/*
+ * api break in libgit2 revision 0.22
+ */
+#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR < 22
+  #define git_treebuilder_new(out, repo, source) git_treebuilder_create(out, source)
+#else
+  #define git_treebuilder_write(id, repo, bld)   git_treebuilder_write(id, bld)
+#endif
 
 #define VA_BUF(b, fmt) do { va_list args; va_start(args, fmt); put_vformat(b, fmt, args); va_end(args); } while (0)
 
@@ -464,7 +472,7 @@ static int tree_insert(git_treebuilder *dir, const char *name, int mkunique, git
  * set the "unique" flag, which will then append the SHA1
  * of the directory to the name when it is written.
  */
-static struct dir *new_directory(struct dir *parent, struct membuffer *namebuf)
+static struct dir *new_directory(git_repository *repo, struct dir *parent, struct membuffer *namebuf)
 {
 	struct dir *subdir;
 	const char *name = mb_cstring(namebuf);
@@ -477,7 +485,7 @@ static struct dir *new_directory(struct dir *parent, struct membuffer *namebuf)
 	 * and an empty treebuilder list of files.
 	 */
 	subdir->subdirs = NULL;
-	git_treebuilder_create(&subdir->files, NULL);
+	git_treebuilder_new(&subdir->files, repo, NULL);
 	memcpy(subdir->name, name, len);
 	subdir->unique = 0;
 	subdir->name[len] = 0;
@@ -489,7 +497,7 @@ static struct dir *new_directory(struct dir *parent, struct membuffer *namebuf)
 	return subdir;
 }
 
-static struct dir *mktree(struct dir *dir, const char *fmt, ...)
+static struct dir *mktree(git_repository *repo, struct dir *dir, const char *fmt, ...)
 {
 	struct membuffer buf = { 0 };
 	struct dir *subdir;
@@ -504,7 +512,7 @@ static struct dir *mktree(struct dir *dir, const char *fmt, ...)
 			break;
 	}
 	if (!subdir)
-		subdir = new_directory(dir, &buf);
+		subdir = new_directory(repo, dir, &buf);
 	free_buffer(&buf);
 	return subdir;
 }
@@ -595,7 +603,7 @@ static int save_one_picture(git_repository *repo, struct dir *dir, struct pictur
 static int save_pictures(git_repository *repo, struct dir *dir, struct dive *dive)
 {
 	if (dive->picture_list) {
-		dir = mktree(dir, "Pictures");
+		dir = mktree(repo, dir, "Pictures");
 		FOR_EACH_PICTURE(dive) {
 			save_one_picture(repo, dir, picture);
 		}
@@ -612,7 +620,7 @@ static int save_one_dive(git_repository *repo, struct dir *tree, struct dive *di
 
 	/* Create dive directory */
 	create_dive_name(dive, &name, tm);
-	subdir = new_directory(tree, &name);
+	subdir = new_directory(repo, tree, &name);
 	subdir->unique = 1;
 	free_buffer(&name);
 
@@ -738,7 +746,7 @@ static int save_one_trip(git_repository *repo, struct dir *tree, dive_trip_t *tr
 
 	/* Create trip directory */
 	create_trip_name(trip, &name, tm);
-	subdir = new_directory(tree, &name);
+	subdir = new_directory(repo, tree, &name);
 	subdir->unique = 1;
 	free_buffer(&name);
 
@@ -837,8 +845,8 @@ static int create_git_tree(git_repository *repo, struct dir *root, bool select_o
 
 		/* Create the date-based hierarchy */
 		utc_mkdate(trip ? trip->when : dive->when, &tm);
-		tree = mktree(root, "%04d", tm.tm_year + 1900);
-		tree = mktree(tree, "%02d", tm.tm_mon + 1);
+		tree = mktree(repo, root, "%04d", tm.tm_year + 1900);
+		tree = mktree(repo, tree, "%02d", tm.tm_mon + 1);
 
 		if (trip) {
 			/* Did we already save this trip? */
@@ -1072,7 +1080,7 @@ static int do_git_save(git_repository *repo, const char *branch, bool select_onl
 	/* Start with an empty tree: no subdirectories, no files */
 	tree.name[0] = 0;
 	tree.subdirs = NULL;
-	if (git_treebuilder_create(&tree.files, NULL))
+	if (git_treebuilder_new(&tree.files, repo, NULL))
 		return report_error("git treebuilder failed");
 
 	/* Populate our tree data structure */
-- 
2.2.1



More information about the subsurface mailing list