tree-diff: catch integer overflow in combine_diff_path allocation
[gitweb.git] / remote.h
index 357a90963db926b328d3b7df1b9bd3b8515b08b9..4a039bae0b15d6d28aace0c62287c3f3bb11befa 100644 (file)
--- a/remote.h
+++ b/remote.h
@@ -79,9 +79,9 @@ extern const struct refspec *tag_refspec;
 
 struct ref {
        struct ref *next;
-       unsigned char old_sha1[20];
-       unsigned char new_sha1[20];
-       unsigned char old_sha1_expect[20]; /* used by expect-old */
+       struct object_id old_oid;
+       struct object_id new_oid;
+       struct object_id old_oid_expect; /* used by expect-old */
        char *symref;
        unsigned int
                force:1,
@@ -150,7 +150,7 @@ extern struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
                                     struct sha1_array *shallow);
 
 int resolve_remote_symref(struct ref *ref, struct ref *list);
-int ref_newer(const unsigned char *new_sha1, const unsigned char *old_sha1);
+int ref_newer(const struct object_id *new_oid, const struct object_id *old_oid);
 
 /*
  * Remove and free all but the first of any entries in the input list
@@ -209,6 +209,8 @@ struct branch {
        struct refspec **merge;
        int merge_nr;
        int merge_alloc;
+
+       const char *push_tracking_ref;
 };
 
 struct branch *branch_get(const char *name);
@@ -229,6 +231,14 @@ int branch_merge_matches(struct branch *, int n, const char *);
  */
 const char *branch_get_upstream(struct branch *branch, struct strbuf *err);
 
+/**
+ * Return the tracking branch that corresponds to the ref we would push to
+ * given a bare `git push` while `branch` is checked out.
+ *
+ * The return value and `err` conventions match those of `branch_get_upstream`.
+ */
+const char *branch_get_push(struct branch *branch, struct strbuf *err);
+
 /* Flags to match_refs. */
 enum match_refs_flags {
        MATCH_REFS_NONE         = 0,