Skip to content
Commits on Mar 26, 2008
  1. @gitster

    Tighten refspec processing

    Daniel Barkalow committed with gitster
    This changes the pattern matching code to not store the required final
    / before the *, and then to require each side to be a valid ref (or
    empty). In particular, any refspec that looks like it should be a
    pattern but doesn't quite meet the requirements will be found to be
    invalid as a fallback non-pattern.
    This was cherry picked from commit ef00d15 (Tighten refspec processing,
    2008-03-17), and two fix-up commits 46220ca (remote.c: Fix overtight
    refspec validation, 2008-03-20) and 7d19da4 (refspec: allow colon-less
    wildcard "refs/category/*", 2008-03-25) squashed in.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Dec 4, 2007
  1. @gitster

    Add remote.<name>.proxy

    Sam Vilain committed with gitster
    As well as allowing a default http.proxy option, allow it to be set
    Signed-off-by: Sam Vilain <>
    Signed-off-by: Junio C Hamano <>
Commits on Nov 10, 2007
  1. @awhitcroft @gitster

    Teach send-pack a mirror mode

    awhitcroft committed with gitster
    Existing "git push --all" is almost perfect for backing up to
    another repository, except that "--all" only means "all
    branches" in modern git, and it does not delete old branches and
    tags that exist at the back-up repository that you have removed
    from your local repository.
    This teaches "git-send-pack" a new "--mirror" option.  The
    difference from the "--all" option are that (1) it sends all
    refs, not just branches, and (2) it deletes old refs you no
    longer have on the local side from the remote side.
    Original patch by Junio C Hamano.
    Signed-off-by: Andy Whitcroft <>
    Signed-off-by: Junio C Hamano <>
Commits on Nov 3, 2007
  1. @gitster

    Miscellaneous const changes and utilities

    Daniel Barkalow committed with gitster
    The list of remote refs in struct transport should be const, because
    builtin-fetch will get confused if it changes.
    The url in git_connect should be const (and work on a copy) instead of
    requiring the caller to copy it.
    match_refs doesn't modify the refspecs it gets.
    get_fetch_map and get_remote_ref don't change the list they get.
    Allow transport get_refs_list methods to modify the struct transport.
    Add a function to copy a list of refs, when a function needs a mutable
    copy of a const list.
    Add a function to check the type of a ref, as per the code in connect.c
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Oct 28, 2007
  1. @gitster

    git-fetch: do not fail when remote branch disappears

    gitster committed
    When the branch named with branch.$name.merge is not covered by
    the fetch configuration for the remote repository named with
    branch.$name.remote, we automatically add that branch to the set
    of branches to be fetched.  However, if the remote repository
    does not have that branch (e.g. it used to exist, but got
    removed), this is not a reason to fail the git-fetch itself.
    The situation however will be noticed if git-fetch was called by
    git-pull, as the resulting FETCH_HEAD would not have any entry
    that is marked for merging.
    Acked-By: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Oct 16, 2007
  1. @spearce

    Remove duplicate ref matches in fetch

    Daniel Barkalow committed with spearce
    If multiple refspecs matched the same ref, the update would be
    processed multiple times. Now having the same destination for the same
    source has no additional effect, and having the same destination for
    different sources is an error.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Lars Hjemli <>
    Signed-off-by: Shawn O. Pearce <>
Commits on Sep 19, 2007
  1. @spearce @gitster

    Rename remote.uri to remote.url within remote handling internals

    spearce committed with gitster
    Anyplace we talk about the address of a remote repository we always
    refer to it as a URL, especially in the configuration file and
    .git/remotes where we call it "remote.$n.url" or start the first
    line with "URL:".  Calling this value a uri within the internal C
    code just doesn't jive well with our commonly accepted terms.
    Signed-off-by: Shawn O. Pearce <>
    Signed-off-by: Junio C Hamano <>
  2. @spearce @gitster

    Correct handling of branch.$name.merge in builtin-fetch

    spearce committed with gitster
    My prior bug fix for git-push titled "Don't configure remote "." to
    fetch everything to itself" actually broke t5520 as we were unable
    to evaluate a branch configuration of:
      [branch "copy"]
        remote = .
        merge = refs/heads/master
    as remote "." did not have a "remote...fetch" configuration entry to
    offer up refs/heads/master as a possible candidate available to be
    fetched and merged.  In shell script git-fetch and prior to the above
    mentioned commit this was hardcoded for a url of "." to be the set of
    local branches.
    Chasing down this bug led me to the conclusion that our prior behavior
    with regards to branch.$name.merge was incorrect.  In the shell script
    based git-fetch implementation we only fetched and merged a branch if
    it appeared both in branch.$name.merge *and* in remote.$r.fetch, where
    $r = branch.$name.remote.  In other words in the following config file:
      [remote "origin"]
        url = git://
        fetch = refs/heads/master:refs/remotes/origin/master
      [branch "master"]
        remote = origin
        merge = refs/heads/master
      [branch "pu"]
        remote = origin
        merge = refs/heads/pu
    Attempting to run `git pull` while on branch "pu" would always give
    the user "Already up-to-date" as git-fetch did not fetch pu and thus
    did not mark it for merge in .git/FETCH_HEAD.  The configured merge
    would always be ignored and the user would be left scratching her
    confused head wondering why merge did not work on "pu" but worked
    fine on "master".
    If we are using the "default fetch" specification for the current
    branch and the current branch has a branch.$name.merge configured
    we now union it with the list of refs in remote.$r.fetch.  This
    way the above configuration does what the user expects it to do,
    which is to fetch only "master" by default but when on "pu" to
    fetch both "master" and "pu".
    This uncovered some breakage in the test suite where old-style Cogito
    branches (.git/branches/$r) did not fetch the branches listed in
    .git/config for merging and thus did not actually merge them if the
    user tried to use `git pull` on that branch.  Junio and I discussed
    it on list and felt that the union approach here makes more sense to
    DWIM for the end-user than silently ignoring their configured request
    so the test vectors for t5515 have been updated to include for-merge
    lines in .git/FETCH_HEAD where they have been configured for-merge
    in .git/config.
    Since we are now performing a union of the fetch specification and
    the merge specification and we cannot allow a branch to be listed
    twice (otherwise it comes out twice in .git/FETCH_HEAD) we need to
    perform a double loop here over all of the branch.$name.merge lines
    and try to set their merge flag if we have already schedule that
    branch for fetching by remote.$r.fetch.  If no match is found then
    we must add new specifications to fetch the branch but not store it
    as no local tracking branch has been designated.
    Signed-off-by: Shawn O. Pearce <>
  3. @gitster

    Add matching and parsing for fetch-side refspec rules

    Daniel Barkalow committed with gitster
    Also exports parse_ref_spec().
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
  4. @gitster

    Report information on branches from remote.h

    Daniel Barkalow committed with gitster
    This adds full parsing for branch.<name> sections and functions to
    interpret the results usefully. It incidentally corrects the fetch
    configuration information for legacy branches/* files with '#'
    characters in the URLs.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
  5. @gitster

    Add uploadpack configuration info to remote.

    Daniel Barkalow committed with gitster
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on Jul 11, 2007
  1. @dscho @gitster

    Add for_each_remote() function, and extend remote_find_tracking()

    dscho committed with gitster
    The function for_each_remote() does exactly what the name
    The function remote_find_tracking() was extended to be able to
    search remote refs for a given local ref.  The caller sets
    either src or dst (but not both) in the refspec parameter, and
    remote_find_tracking() will fill in the other and return 0.
    Both changes are required for the next step: simplification of
    git-branch's --track functionality.
    Signed-off-by: Johannes Schindelin <>
    Signed-off-by: Junio C Hamano <>
Commits on Jul 10, 2007
  1. @gitster

    Add allocation and freeing functions for struct refs

    Daniel Barkalow committed with gitster
    Instead of open-coding allocation wherever it happens, have a function.
    Also, add a function to free a list of refs, which we currently never
    actually do.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Commits on May 21, 2007
  1. Add handlers for fetch-side configuration of remotes.

    Daniel Barkalow committed with Junio C Hamano
    These follow the pattern of the push side configuration, but aren't
    taken from anywhere else, because git-fetch is still in shell.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
  2. Move refspec parser from connect.c and cache.h to remote.{c,h}

    Daniel Barkalow committed with Junio C Hamano
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
  3. Move remote parsing into a library file out of builtin-push.

    Daniel Barkalow committed with Junio C Hamano
    The new parser is different from the one in builtin-push in two ways:
    the default is to use the current branch's remote, if there is one,
    before "origin"; and config is used in preference to remotes.
    Signed-off-by: Daniel Barkalow <>
    Signed-off-by: Junio C Hamano <>
Something went wrong with that request. Please try again.