Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Oct 21, 2011
  1. @gitster

    Merge branch 'jc/broken-ref-dwim-fix'

    gitster committed
    * jc/broken-ref-dwim-fix:
      resolve_ref(): report breakage to the caller without warning
      resolve_ref(): expose REF_ISBROKEN flag
      refs.c: move dwim_ref()/dwim_log() from sha1_name.c
Commits on Oct 19, 2011
  1. @gitster

    resolve_ref(): expose REF_ISBROKEN flag

    gitster committed
    Instead of keeping this as an internal API, let the callers find
    out the reason why resolve_ref() returned NULL is not because there
    was no such file in $GIT_DIR but because a file was corrupt.
    Signed-off-by: Junio C Hamano <>
Commits on Oct 17, 2011
  1. @mhagger @gitster

    invalidate_ref_cache(): expose this function in the refs API

    mhagger committed with gitster
    Make invalidate_ref_cache() an official part of the refs API.  It is
    currently a fact of life that code outside of refs.c mucks about with
    references.  This change gives such code a way of informing the refs
    module that it should no longer trust its cache.
    Signed-off-by: Michael Haggerty <>
    Signed-off-by: Junio C Hamano <>
Commits on Oct 10, 2011
  1. @gitster

    Merge branch 'jp/get-ref-dir-unsorted'

    gitster committed
    * jp/get-ref-dir-unsorted:
      refs.c: free duplicate entries in the ref array instead of leaking them
      refs.c: abort ref search if ref array is empty
      refs.c: ensure struct whose member may be passed to realloc is initialized
      refs: Use binary search to lookup refs faster
      Don't sort ref_list too early
Commits on Oct 5, 2011
  1. @mhagger @gitster

    add_ref(): verify that the refname is formatted correctly

    mhagger committed with gitster
    In add_ref(), verify that the refname is formatted correctly before
    adding it to the ref_list.  Here we have to allow refname components
    that start with ".", since (for example) the remote protocol uses
    synthetic reference name ".have".  So add a new REFNAME_DOT_COMPONENT
    flag that can be passed to check_refname_format() to allow leading
    Signed-off-by: Michael Haggerty <>
    Signed-off-by: Junio C Hamano <>
  2. @mhagger @gitster

    Change check_refname_format() to reject unnormalized refnames

    mhagger committed with gitster
    Since much of the infrastructure does not work correctly with
    unnormalized refnames, change check_refname_format() to reject them.
    Similarly, change "git check-ref-format" to reject unnormalized
    refnames by default.  But add an option --normalize, which causes "git
    check-ref-format" to normalize the refname before checking its format,
    and print the normalized refname.  This is exactly the behavior of the
    old --print option, which is retained but deprecated.
    Signed-off-by: Michael Haggerty <>
    Signed-off-by: Junio C Hamano <>
  3. @mhagger @gitster

    Change check_ref_format() to take a flags argument

    mhagger committed with gitster
    Change check_ref_format() to take a flags argument that indicates what
    is acceptable in the reference name (analogous to "git
    check-ref-format"'s "--allow-onelevel" and "--refspec-pattern").  This
    is more convenient for callers and also fixes a failure in the test
    suite (and likely elsewhere in the code) by enabling "onelevel" and
    "refspec-pattern" to be allowed independently of each other.
    Also rename check_ref_format() to check_refname_format() to make it
    obvious that it deals with refnames rather than references themselves.
    Signed-off-by: Michael Haggerty <>
    Signed-off-by: Junio C Hamano <>
Commits on Aug 18, 2011
  1. @gitster

    Merge branch 'js/ref-namespaces'

    gitster committed
    * js/ref-namespaces:
      ref namespaces: tests
      ref namespaces: documentation
      ref namespaces: Support remote repositories via upload-pack and receive-pack
      ref namespaces: infrastructure
      Fix prefix handling in ref iteration functions
Commits on Jul 6, 2011
  1. @joshtriplett @gitster

    ref namespaces: infrastructure

    joshtriplett committed with gitster
    Add support for dividing the refs of a single repository into multiple
    namespaces, each of which can have its own branches, tags, and HEAD.
    Git can expose each namespace as an independent repository to pull from
    and push to, while sharing the object store, and exposing all the refs
    to operations such as git-gc.
    Storing multiple repositories as namespaces of a single repository
    avoids storing duplicate copies of the same objects, such as when
    storing multiple branches of the same source.  The alternates mechanism
    provides similar support for avoiding duplicates, but alternates do not
    prevent duplication between new objects added to the repositories
    without ongoing maintenance, while namespaces do.
    To specify a namespace, set the GIT_NAMESPACE environment variable to
    the namespace.  For each ref namespace, git stores the corresponding
    refs in a directory under refs/namespaces/.  For example,
    GIT_NAMESPACE=foo will store refs under refs/namespaces/foo/.  You can
    also specify namespaces via the --namespace option to git.
    Note that namespaces which include a / will expand to a hierarchy of
    namespaces; for example, GIT_NAMESPACE=foo/bar will store refs under
    refs/namespaces/foo/refs/namespaces/bar/.  This makes paths in
    GIT_NAMESPACE behave hierarchically, so that cloning with
    GIT_NAMESPACE=foo/bar produces the same result as cloning with
    GIT_NAMESPACE=foo and cloning from that repo with GIT_NAMESPACE=bar.  It
    also avoids ambiguity with strange namespace paths such as
    foo/refs/heads/, which could otherwise generate directory/file conflicts
    within the refs directory.
    Add the infrastructure for ref namespaces: handle the GIT_NAMESPACE
    environment variable and --namespace option, and support iterating over
    refs in a namespace.
    Signed-off-by: Josh Triplett <>
    Signed-off-by: Jamey Sharp <>
    Signed-off-by: Junio C Hamano <>
Commits on Jun 30, 2011
  1. @gitster

    Merge branch 'jc/maint-1.7.3-checkout-describe'

    gitster committed
    * jc/maint-1.7.3-checkout-describe:
      checkout -b <name>: correctly detect existing branch
Commits on Jun 6, 2011
  1. @gitster

    checkout -b <name>: correctly detect existing branch

    gitster committed
    When create a new branch, we fed "refs/heads/<proposed name>" as a string
    to get_sha1() and expected it to fail when a branch already exists.
    The right way to check if a ref exists is to check with resolve_ref().
    A naïve solution that might appear attractive but does not work is to
    forbid slashes in get_describe_name() but that will not work. A describe
    name is is in the form of "ANYTHING-g<short sha1>", and that ANYTHING part
    comes from a original tag name used in the repository the user ran the
    describe command. A sick user could have a confusing hierarchical tag
    whose name is "refs/heads/foobar" (stored as refs/tags/refs/heads/foobar")
    to generate a describe name "refs/heads/foobar-6-g02ac983", and we should
    be able to use that name to refer to the object whose name is 02ac983.
    Signed-off-by: Junio C Hamano <>
Commits on Jul 7, 2010
  1. @gitster

    setup_revisions(): Allow walking history in a submodule

    Heiko Voigt committed with gitster
    By passing the path to a submodule in opt->submodule, the function can
    be used to walk history in the named submodule repository, instead of
    the toplevel repository.
    Signed-off-by: Heiko Voigt <>
    Signed-off-by: Junio C Hamano <>
Commits on Jun 12, 2010
  1. @trast @gitster

    log_ref_setup: don't return stack-allocated array

    trast committed with gitster
    859c301 (refs: split log_ref_write logic into log_ref_setup,
    2010-05-21) refactors the stack allocation of the log_file array into
    the new log_ref_setup() function, but passes it back to the caller.
    Since the original intent seems to have been to split the work between
    log_ref_setup and log_ref_write, make it the caller's responsibility
    to allocate the buffer.
    Signed-off-by: Thomas Rast <>
    Reported-by: Ævar Arnfjörð Bjarmason <>
    Signed-off-by: Junio C Hamano <>
Commits on Jun 2, 2010
  1. @erickmattos @gitster

    refs: split log_ref_write logic into log_ref_setup

    erickmattos committed with gitster
    Separation of the logic for testing and preparing the reflogs from
    function log_ref_write to a new non static new function: log_ref_setup.
    This allows to be performed from outside the first all reasonable checks
    and procedures for writing reflogs.
    Signed-off-by: Erick Mattos <>
    Signed-off-by: Junio C Hamano <>
Commits on Mar 13, 2010
  1. @trast @gitster

    Support showing notes from more than one notes tree

    trast committed with gitster
    With this patch, you can set notes.displayRef to a glob that points at
    your favourite notes refs, e.g.,
    	displayRef = refs/notes/*
    Then git-log and friends will show notes from all trees.
    Thanks to Junio C Hamano for lots of feedback, which greatly
    influenced the design of the entire series and this commit in
    Signed-off-by: Thomas Rast <>
    Acked-by: Johan Herland <>
    Signed-off-by: Junio C Hamano <>
Commits on Jan 20, 2010
  1. @gitster

    rev-parse --branches/--tags/--remotes=pattern

    Ilari Liusvaara committed with gitster
    Since local branch, tags and remote tracking branch namespaces are
    most often used, add shortcut notations for globbing those in
    manner similar to --glob option.
    With this, one can express the "what I have but origin doesn't?"
    'git log --branches --not --remotes=origin'
    Original-idea-by: Johannes Sixt <>
    Signed-off-by: Ilari Liusvaara <>
    Signed-off-by: Junio C Hamano <>
  2. @gitster

    rev-parse --glob

    Ilari Liusvaara committed with gitster
    Add --glob=<glob-pattern> option to rev-parse and everything that
    accepts its options. This option matches all refs that match given
    shell glob pattern (complete with some DWIM logic).
    'git log --branches --not --glob=remotes/origin'
    To show what you have that origin doesn't.
    Signed-off-by: Ilari Liusvaara <>
    Signed-off-by: Junio C Hamano <>
Commits on Nov 10, 2009
  1. @jaysoffian @gitster

    teach warn_dangling_symref to take a FILE argument

    jaysoffian committed with gitster
    Different callers of warn_dangling_symref() may want to control whether its
    output goes to stdout or stderr so let it take a FILE argument.
    Signed-off-by: Jay Soffian <>
    Signed-off-by: Junio C Hamano <>
Commits on Jun 1, 2009
  1. @chriscool @gitster

    refs: add a "for_each_replace_ref" function

    chriscool committed with gitster
    This is some preparation work for the following patches that are using
    the "refs/replace/" ref namespace.
    Signed-off-by: Christian Couder <>
    Signed-off-by: Junio C Hamano <>
Commits on May 14, 2009
  1. @felipec @gitster

    Change prettify_ref to prettify_refname

    felipec committed with gitster
    In preparation to be used when the ref object is not available
    Signed-off-by: Felipe Contreras <>
    Acked-by: Jeff King <>
    Signed-off-by: Junio C Hamano <>
Commits on Apr 13, 2009
  1. @bertwesarg @gitster

    shorten_unambiguous_ref(): add strict mode

    bertwesarg committed with gitster
    Add the strict mode of abbreviation to shorten_unambiguous_ref(), i.e. the
    resulting ref won't trigger the ambiguous ref warning.
    All users of shorten_unambiguous_ref() still use the loose mode.
    Signed-off-by: Bert Wesarg <>
    Signed-off-by: Junio C Hamano <>
Commits on Apr 12, 2009
  1. @gitster

    Merge branch 'jk/show-upstream'

    gitster committed
    * jk/show-upstream:
      branch: show upstream branch when double verbose
      make get_short_ref a public function
      for-each-ref: add "upstream" format field
      for-each-ref: refactor refname handling
      for-each-ref: refactor get_short_ref function
Commits on Apr 8, 2009
  1. @peff @gitster

    make get_short_ref a public function

    peff committed with gitster
    Often we want to shorten a full ref name to something "prettier"
    to show a user. For example, "refs/heads/master" is often shown
    simply as "master", or "refs/remotes/origin/master" is shown as
    Many places in the code use a very simple formula: skip common
    prefixes like refs/heads, refs/remotes, etc. This is codified in
    the prettify_ref function.
    for-each-ref has a more correct (but more expensive) approach:
    consider the ref lookup rules, and try shortening as much as
    possible while remaining unambiguous.
    This patch makes the latter strategy globally available as
    Signed-off-by: Jeff King <>
    Signed-off-by: Junio C Hamano <>
Commits on Apr 5, 2009
  1. @gitster

    Merge branch 'cc/sha1-bsearch' into HEAD

    gitster committed
    * cc/sha1-bsearch: (95 commits)
      patch-ids: use the new generic "sha1_pos" function to lookup sha1
      sha1-lookup: add new "sha1_pos" function to efficiently lookup sha1
      Update draft release notes to 1.6.3
      send-email: ensure quoted addresses are rfc2047 encoded
      send-email: correct two tests which were going interactive
      Documentation: git-svn: fix trunk/fetch svn-remote key typo
      Mailmap: Allow empty email addresses to be mapped
      Cleanup warning about known issues in cvsimport documentation
      Documentation: Remove an odd "instead"
      send-email: ask_default should apply to all emails, not just the first
      send-email: don't attempt to prompt if tty is closed
      fix portability problem with IS_RUN_COMMAND_ERR
      Documentation: use "spurious .sp" XSLT if DOCBOOK_SUPPRESS_SP is set
      mailmap: resurrect lower-casing of email addresses
      builtin-clone.c: no need to strdup for setenv
      builtin-clone.c: make junk_pid static
      git-svn: add a double quiet option to hide git commits
      Update draft release notes to
      Documentation: push.default applies to all remotes
Commits on Mar 30, 2009
  1. @chriscool @gitster

    refs: add "for_each_ref_in" function to refactor "for_each_*_ref" fun…

    chriscool committed with gitster
    The "for_each_{tag,branch,remote,replace,}_ref" functions are
    redefined in terms of "for_each_ref_in" so that we can lose the
    hardcoded length of prefix strings from the code.
    Signed-off-by: Christian Couder <>
Commits on Mar 9, 2009
  1. @gitster

    Use a common function to get the pretty name of refs

    Daniel Barkalow committed with gitster
    The result should be consistent between fetch and push, so we ought to
    use the same code in both cases, even though it's short.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Feb 11, 2009
  1. @gitster

    remote prune: warn dangling symrefs

    gitster committed
    If you prune from the remote "frotz" that deleted the ref your tracking
    branch remotes/frotz/HEAD points at, the symbolic ref will become
    dangling.  We used to detect this as an error condition and issued a
    message every time refs are enumerated.
    This stops the error message, but moves the warning to "remote prune".
    Signed-off-by: Junio C Hamano <>
Commits on Jan 20, 2009
  1. @gitster

    Introduce for_each_recent_reflog_ent().

    gitster committed
    This can be used to scan only the last few kilobytes of a reflog, as a
    cheap optimization when the data you are looking for is likely to be
    found near the end of it.  The caller is expected to fall back to the
    full scan if that is not the case.
    Signed-off-by: Junio C Hamano <>
Commits on May 5, 2008
  1. @gitster

    Allow for having for_each_ref() list extra refs

    Daniel Barkalow committed with gitster
    These refs can be anything, but they are most likely useful as
    pointing to objects that you know are in the object database but don't
    have any regular refs for. For example, when cloning with --reference,
    the refs in this repository should be listed as objects that we have,
    even though we don't have refs in our newly-created repository for
    them yet.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Feb 23, 2008
  1. @gitster

    refs.c: make close_ref() and commit_ref() non-static

    Brandon Casey committed with gitster
    This is in preparation to the reflog-expire changes which will
    allow updating the ref after expiring the reflog.
    Signed-off-by: Brandon Casey <>
    Signed-off-by: Junio C Hamano <>
Commits on Jan 2, 2008
  1. @gitster

    lock_any_ref_for_update(): reject wildcard return from check_ref_format

    gitster committed
    Recent check_ref_format() returns -3 as well as -1 (general
    error) and -2 (less than two levels).  The caller was explicitly
    checking for -1, to allow "HEAD" but still needed to disallow
    bogus refs.
    This introduces symbolic constants for the return values from
    check_ref_format() to make them read better and more
    meaningful.  Normal ref creation codepath can still treat
    non-zero return values as errors.
    Signed-off-by: Junio C Hamano <>
Commits on Nov 16, 2007
  1. @gitster

    refs.c: Remove unused get_ref_sha1()

    Johannes Sixt committed with gitster
    Signed-off-by: Johannes Sixt <>
    Signed-off-by: Junio C Hamano <>
Commits on Sep 5, 2007
  1. @jasampler @gitster

    Function for updating refs.

    jasampler committed with gitster
    A function intended to be called from builtins updating refs
    by locking them before write, specially those that came from
    scripts using "git update-ref".
    [jc: with minor fixups]
    Signed-off-by: Carlos Rica <>
    Signed-off-by: Junio C Hamano <>
Commits on May 10, 2007
  1. git-update-ref: add --no-deref option for overwriting/detaching ref

    Sven Verdoolaege committed with Junio C Hamano
    git-checkout is also adapted to make use of this new option
    instead of the handcrafted command sequence.
    Signed-off-by: Sven Verdoolaege <>
    Signed-off-by: Junio C Hamano <>
Commits on Apr 10, 2007
  1. @torvalds

    Add 'resolve_gitlink_ref()' helper function

    torvalds committed with Junio C Hamano
    This new function resolves a ref in *another* git repository.  It's
    named for its intended use: to look up the git link to a subproject.
    It's not actually wired up to anything yet, but we're getting closer to
    having fundamental plumbing support for "links" from one git directory
    to another, which is the basis of subproject support.
    [jc: amended a FILE* leak]
    Signed-off-by: Linus Torvalds <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.