Commit 95057b85034a226ed5f9bcd7a461a296bbdb7bd9

Carlos Martín Nieto 2011-11-18T21:18:39

remote: get rid of git_remote_negotiate There is no good reason to expose the negotiation as a different step to downloading the packfile. Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>

diff --git a/include/git2/remote.h b/include/git2/remote.h
index 54116c2..0781bb7 100644
--- a/include/git2/remote.h
+++ b/include/git2/remote.h
@@ -107,20 +107,13 @@ GIT_EXTERN(int) git_remote_connect(struct git_remote *remote, int direction);
 GIT_EXTERN(int) git_remote_ls(git_remote *remote, git_headarray *refs);
 
 /**
- * Negotiate what data needs to be exchanged to synchroize the remtoe
- * and local references
- *
- * @param remote the remote you want to negotiate with
- */
-GIT_EXTERN(int) git_remote_negotiate(git_remote *remote);
-
-/**
  * Download the packfile
  *
- * The packfile is downloaded with a temporary filename, as it's final
- * name is not known yet. If there was no packfile needed (all the
- * objects were available locally), filename will be NULL and the
- * function will return success.
+ * Negotiate what objects should be downloaded and download the
+ * packfile with those objects. The packfile is downloaded with a
+ * temporary filename, as it's final name is not known yet. If there
+ * was no packfile needed (all the objects were available locally),
+ * filename will be NULL and the function will return success.
  *
  * @param remote the remote to download from
  * @param filename where to store the temproray filename
diff --git a/src/remote.c b/src/remote.c
index 3ff08a2..6ac3bc1 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -206,13 +206,13 @@ int git_remote_ls(git_remote *remote, git_headarray *refs)
 	return remote->transport->ls(remote->transport, refs);
 }
 
-int git_remote_negotiate(git_remote *remote)
-{
-	return git_fetch_negotiate(remote);
-}
-
 int git_remote_download(char **filename, git_remote *remote)
 {
+	int error;
+
+	if ((error = git_fetch_negotiate(remote)) < 0)
+		return git__rethrow(error, "Error negotiating");
+
 	return git_fetch_download_pack(filename, remote);
 }