This is a re-roll of [v3]. It squashes in Ramsay's patch "fix some sparse
warnings", and fixes the use-before-free reported by Duy. Thanks a lot for
dealing with my mess :-).

Other than that, there are no other changes as I'm working on the git-am side
of things.

Previous versions:

[v1] http://thread.gmane.org/gmane.comp.version-control.git/269258
[v2] http://thread.gmane.org/gmane.comp.version-control.git/270639
[v3] http://thread.gmane.org/gmane.comp.version-control.git/271614

git-pull is a commonly executed command to check for new changes in the
upstream repository and, if there are, fetch and integrate them into the
current branch. Currently it is implemented by the shell script git-pull.sh.
However, compared to C, shell scripts have certain deficiencies -- they need to
spawn a lot of processes, introduce a lot of dependencies and cannot take
advantage of git's internal caches.

This series rewrites git-pull.sh into a C builtin, thus improving its
performance and portability. It is part of my GSoC project to rewrite git-pull
and git-am into builtins[1].

[1] https://gist.github.com/pyokagan/1b7b0d1f4dab6ba3cef1


Paul Tan (19):
  parse-options-cb: implement parse_opt_passthru()
  parse-options-cb: implement parse_opt_passthru_argv()
  argv-array: implement argv_array_pushv()
  pull: implement skeletal builtin pull
  pull: implement fetch + merge
  pull: pass verbosity, --progress flags to fetch and merge
  pull: pass git-merge's options to git-merge
  pull: pass git-fetch's options to git-fetch
  pull: error on no merge candidates
  pull: support pull.ff config
  pull: check if in unresolved merge state
  pull: fast-forward working tree if head is updated
  pull: implement pulling into an unborn branch
  pull: set reflog message
  pull: teach git pull about --rebase
  pull: configure --rebase via branch.<name>.rebase or pull.rebase
  pull --rebase: exit early when the working directory is dirty
  pull --rebase: error on no merge candidate cases
  pull: remove redirection to git-pull.sh

 Documentation/technical/api-argv-array.txt    |   3 +
 Documentation/technical/api-parse-options.txt |  13 +
 Makefile                                      |   2 +-
 advice.c                                      |   8 +
 advice.h                                      |   1 +
 argv-array.c                                  |   6 +
 argv-array.h                                  |   1 +
 builtin.h                                     |   1 +
 builtin/pull.c                                | 882 ++++++++++++++++++++++++++
 git-pull.sh => contrib/examples/git-pull.sh   |   0
 git.c                                         |   1 +
 parse-options-cb.c                            |  69 ++
 parse-options.h                               |   6 +
 13 files changed, 992 insertions(+), 1 deletion(-)
 create mode 100644 builtin/pull.c
 rename git-pull.sh => contrib/examples/git-pull.sh (100%)

-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to