1. 10 11月, 2007 1 次提交
    • A
      Teach send-pack a mirror mode · 28b9d6e5
      Andy Whitcroft 提交于
      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: NAndy Whitcroft <apw@shadowen.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      28b9d6e5
  2. 03 11月, 2007 1 次提交
    • D
      Miscellaneous const changes and utilities · 4577370e
      Daniel Barkalow 提交于
      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: NDaniel Barkalow <barkalow@iabervon.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4577370e
  3. 29 10月, 2007 1 次提交
    • J
      git-fetch: do not fail when remote branch disappears · 9ad7c5ae
      Junio C Hamano 提交于
      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: NDaniel Barkalow <barkalow@iabervon.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9ad7c5ae
  4. 16 10月, 2007 1 次提交
  5. 19 9月, 2007 5 次提交
    • S
      Rename remote.uri to remote.url within remote handling internals · 28b91f8a
      Shawn O. Pearce 提交于
      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: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      28b91f8a
    • S
      Correct handling of branch.$name.merge in builtin-fetch · 85682c19
      Shawn O. Pearce 提交于
      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://git.kernel.org/pub/scm/git/git.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: NShawn O. Pearce <spearce@spearce.org>
      85682c19
    • D
      Add matching and parsing for fetch-side refspec rules · d71ab174
      Daniel Barkalow 提交于
      Also exports parse_ref_spec().
      Signed-off-by: NDaniel Barkalow <barkalow@iabervon.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d71ab174
    • D
      Report information on branches from remote.h · cf818348
      Daniel Barkalow 提交于
      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: NDaniel Barkalow <barkalow@iabervon.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      cf818348
    • D
      0012ba21
  6. 12 7月, 2007 1 次提交
  7. 10 7月, 2007 1 次提交
  8. 21 5月, 2007 3 次提交