ref_update_reject_duplicates(): expose function to whole refs module
[gitweb.git] / refs.c
diff --git a/refs.c b/refs.c
index b3860a9e333b7b0fc284b7794a2d40ea621eb638..beb49fb2979fe7780e721237cc0e4d7c47c355ee 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1702,6 +1702,23 @@ int create_symref(const char *ref_target, const char *refs_heads_master,
                                  refs_heads_master, logmsg);
 }
 
+int ref_update_reject_duplicates(struct string_list *refnames,
+                                struct strbuf *err)
+{
+       int i, n = refnames->nr;
+
+       assert(err);
+
+       for (i = 1; i < n; i++)
+               if (!strcmp(refnames->items[i - 1].string, refnames->items[i].string)) {
+                       strbuf_addf(err,
+                                   "multiple updates for ref '%s' not allowed.",
+                                   refnames->items[i].string);
+                       return 1;
+               }
+       return 0;
+}
+
 int ref_transaction_prepare(struct ref_transaction *transaction,
                            struct strbuf *err)
 {