Code

Merge branch 'jc/name-branch'
authorJunio C Hamano <gitster@pobox.com>
Mon, 6 Apr 2009 07:43:44 +0000 (00:43 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Apr 2009 07:43:44 +0000 (00:43 -0700)
* jc/name-branch:
  Don't permit ref/branch names to end with ".lock"
  check_ref_format(): tighten refname rules
  strbuf_check_branch_ref(): a helper to check a refname for a branch
  Fix branch -m @{-1} newname
  check-ref-format --branch: give Porcelain a way to grok branch shorthand
  strbuf_branchname(): a wrapper for branch name shorthands
  Rename interpret/substitute nth_last_branch functions

Conflicts:
Documentation/git-check-ref-format.txt

1  2 
Documentation/git-check-ref-format.txt
builtin-branch.c
builtin-checkout.c
cache.h
refs.c

index 171b68377d6604167fde4f5e4266432fa9048345,9b707a7030b0128a32e3290f2325754d608624e3..c1ce26884e73f1599602472ba5032988486cc465
@@@ -11,40 -13,44 +13,44 @@@ SYNOPSI
  
  DESCRIPTION
  -----------
 -Checks if a given 'refname' is acceptable, and exits non-zero if
 -it is not.
 +Checks if a given 'refname' is acceptable, and exits with a non-zero
 +status if it is not.
  
  A reference is used in git to specify branches and tags.  A
 -branch head is stored under `$GIT_DIR/refs/heads` directory, and
 -a tag is stored under `$GIT_DIR/refs/tags` directory.  git
 -imposes the following rules on how refs are named:
 +branch head is stored under the `$GIT_DIR/refs/heads` directory, and
 +a tag is stored under the `$GIT_DIR/refs/tags` directory.  git
 +imposes the following rules on how references are named:
  
 -. It can include slash `/` for hierarchical (directory)
 +. They can include slash `/` for hierarchical (directory)
    grouping, but no slash-separated component can begin with a
 -  dot `.`;
 +  dot `.`.
  
 -. It cannot have two consecutive dots `..` anywhere;
 +. They cannot have two consecutive dots `..` anywhere.
  
 -. It cannot have ASCII control character (i.e. bytes whose
 +. They cannot have ASCII control characters (i.e. bytes whose
    values are lower than \040, or \177 `DEL`), space, tilde `~`,
    caret `{caret}`, colon `:`, question-mark `?`, asterisk `*`,
 -  or open bracket `[` anywhere;
 +  or open bracket `[` anywhere.
  
- . They cannot end with a slash `/`.
+ . They cannot end with a slash `/` nor a dot `.`.
+ . They cannot end with the sequence `.lock`.
+ . They cannot contain a sequence `@{`.
  
 -These rules makes it easy for shell script based tools to parse
 -refnames, pathname expansion by the shell when a refname is used
 +These rules make it easy for shell script based tools to parse
 +reference names, pathname expansion by the shell when a reference name is used
  unquoted (by mistake), and also avoids ambiguities in certain
 -refname expressions (see linkgit:git-rev-parse[1]).  Namely:
 +reference name expressions (see linkgit:git-rev-parse[1]):
  
 -. double-dot `..` are often used as in `ref1..ref2`, and in some
 -  context this notation means `{caret}ref1 ref2` (i.e. not in
 -  ref1 and in ref2).
 +. A double-dot `..` is often used as in `ref1..ref2`, and in some
 +  contexts this notation means `{caret}ref1 ref2` (i.e. not in
 +  `ref1` and in `ref2`).
  
 -. tilde `~` and caret `{caret}` are used to introduce postfix
 +. A tilde `~` and caret `{caret}` are used to introduce the postfix
    'nth parent' and 'peel onion' operation.
  
 -. colon `:` is used as in `srcref:dstref` to mean "use srcref\'s
 +. colon `:` is used as in `srcref:dstref` to mean "use srcref\'s
    value and store it in dstref" in fetch and push operations.
    It may also be used to select a specific object such as with
    'git-cat-file': "git cat-file blob v1.3.3:refs.c".
Simple merge
Simple merge
diff --cc cache.h
Simple merge
diff --cc refs.c
Simple merge