branch: add a --copy (-c) option to go with --move (-m)
[gitweb.git] / branch.c
index bb9eb60dcdb946f380ae9441caf84561a61f5dd3..985316eb76505a60bca0aa303322bef35e7defaa 100644 (file)
--- a/branch.c
+++ b/branch.c
@@ -191,9 +191,9 @@ int validate_new_branchname(const char *name, struct strbuf *ref,
 
        if (!attr_only) {
                const char *head;
-               unsigned char sha1[20];
+               struct object_id oid;
 
-               head = resolve_ref_unsafe("HEAD", 0, sha1, NULL);
+               head = resolve_ref_unsafe("HEAD", 0, oid.hash, NULL);
                if (!is_bare_repository() && head && !strcmp(head, ref->buf))
                        die(_("Cannot force update the current branch."));
        }
@@ -233,7 +233,7 @@ void create_branch(const char *name, const char *start_name,
                   int quiet, enum branch_track track)
 {
        struct commit *commit;
-       unsigned char sha1[20];
+       struct object_id oid;
        char *real_ref;
        struct strbuf ref = STRBUF_INIT;
        int forcing = 0;
@@ -253,7 +253,7 @@ void create_branch(const char *name, const char *start_name,
        }
 
        real_ref = NULL;
-       if (get_sha1(start_name, sha1)) {
+       if (get_oid(start_name, &oid)) {
                if (explicit_tracking) {
                        if (advice_set_upstream_failure) {
                                error(_(upstream_missing), start_name);
@@ -265,7 +265,7 @@ void create_branch(const char *name, const char *start_name,
                die(_("Not a valid object name: '%s'."), start_name);
        }
 
-       switch (dwim_ref(start_name, strlen(start_name), sha1, &real_ref)) {
+       switch (dwim_ref(start_name, strlen(start_name), oid.hash, &real_ref)) {
        case 0:
                /* Not branching from any existing branch */
                if (explicit_tracking)
@@ -286,9 +286,9 @@ void create_branch(const char *name, const char *start_name,
                break;
        }
 
-       if ((commit = lookup_commit_reference(sha1)) == NULL)
+       if ((commit = lookup_commit_reference(&oid)) == NULL)
                die(_("Not a valid branch point: '%s'."), start_name);
-       hashcpy(sha1, commit->object.oid.hash);
+       oidcpy(&oid, &commit->object.oid);
 
        if (reflog)
                log_all_ref_updates = LOG_REFS_NORMAL;
@@ -306,7 +306,7 @@ void create_branch(const char *name, const char *start_name,
                transaction = ref_transaction_begin(&err);
                if (!transaction ||
                    ref_transaction_update(transaction, ref.buf,
-                                          sha1, forcing ? NULL : null_sha1,
+                                          oid.hash, forcing ? NULL : null_sha1,
                                           0, msg, &err) ||
                    ref_transaction_commit(transaction, &err))
                        die("%s", err.buf);