builtin-symbolic-ref.con commit git-merge: fix confusion between tag and branch (3683dc5)
   1#include "builtin.h"
   2#include "cache.h"
   3#include "refs.h"
   4
   5static const char git_symbolic_ref_usage[] =
   6"git-symbolic-ref name [ref]";
   7
   8static void check_symref(const char *HEAD)
   9{
  10        unsigned char sha1[20];
  11        int flag;
  12        const char *refs_heads_master = resolve_ref(HEAD, sha1, 0, &flag);
  13
  14        if (!refs_heads_master)
  15                die("No such ref: %s", HEAD);
  16        else if (!(flag & REF_ISSYMREF))
  17                die("ref %s is not a symbolic ref", HEAD);
  18        puts(refs_heads_master);
  19}
  20
  21int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)
  22{
  23        git_config(git_default_config);
  24        switch (argc) {
  25        case 2:
  26                check_symref(argv[1]);
  27                break;
  28        case 3:
  29                create_symref(argv[1], argv[2]);
  30                break;
  31        default:
  32                usage(git_symbolic_ref_usage);
  33        }
  34        return 0;
  35}