Fork of Git, same baseline, more features
C Shell Perl Tcl Python C++ Other
Pull request Compare This branch is 972 commits ahead, 6399 commits behind git:master.
Latest commit 3ce268d May 20, 2016 @felipec felipec test: remove httpd tests that ask for user
Until we figure a way to pass the user correctly.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Permalink
Failed to load latest commit information.
Documentation Merge tag 'v2.8.0' May 19, 2016
block-sha1 sha1: provide another level of indirection for the SHA-1 functions Nov 5, 2015
builtin Merge tag 'v2.8.0' May 19, 2016
compat config --show-origin: report paths with forward slashes Mar 23, 2016
contrib Merge tag 'v2.8.0' May 19, 2016
ewah ewah: convert to REALLOC_ARRAY, etc Feb 22, 2016
git-gui git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for com… Dec 27, 2015
gitk-git Merge branch 'master' of git://ozlabs.org/~paulus/gitk Mar 21, 2016
gitweb gitweb: squelch "uninitialized value" warning Jan 12, 2016
mergetools mergetool: reorder vim/gvim buffers in three-way diffs Feb 12, 2016
perl git-svn: shorten glob error message Mar 15, 2016
po Merge branch 'master' of https://github.com/vnwildman/git Mar 23, 2016
ppc sha1: provide another level of indirection for the SHA-1 functions Nov 5, 2015
refs Merge branch 'jk/tighten-alloc' Feb 26, 2016
shared Merge tag 'v2.8.0' May 19, 2016
t test: remove httpd tests that ask for user May 20, 2016
templates Merge branch 'ma/update-hooks-sample-typofix' into maint Mar 10, 2016
vcs-svn Silence gcc warnings with -O3 May 18, 2016
xdiff Merge branch 'ps/plug-xdl-merge-leak' into maint Mar 10, 2016
.gitattributes .gitattributes: detect 8-space indent in shell scripts Jan 6, 2010
.gitignore Merge tag 'v2.8.0' May 19, 2016
.mailmap mailmap: update my entry with new email address Sep 16, 2015
.travis.yml travis: trivial improvements May 18, 2016
COPYING Update COPYING with GPLv2 with new FSF address Jan 17, 2010
GIT-VERSION-GEN Merge tag 'v2.8.0' May 19, 2016
INSTALL git-imap-send: use libcurl for implementation Nov 10, 2014
LGPL-2.1 provide a copy of the LGPLv2.1 May 20, 2011
Makefile Merge tag 'v2.8.0' May 19, 2016
README.md test: fix README location May 18, 2016
README.upstream Merge tag 'v2.8.0' May 19, 2016
RelNotes First batch for post 2.7 cycle Jan 12, 2016
abspath.c abspath: convert absolute_path() to strbuf Aug 26, 2014
aclocal.m4 configure: use AC_LANG_PROGRAM consistently Feb 14, 2011
advice.c merge: grammofix in please-commit-before-merge message Oct 2, 2015
advice.h pull: check if in unresolved merge state Jun 18, 2015
alias.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
alloc.c alloc: factor out commit index Jul 28, 2014
archive-tar.c archive-tar: use xsnprintf for trivial formatting Sep 25, 2015
archive-zip.c Merge branch 'rs/archive-zip-many' into maint Sep 4, 2015
archive.c use st_add and st_mult for allocation size computation Feb 22, 2016
archive.h archive: convert to use parse_pathspec Jul 15, 2013
argv-array.c argv-array: add detach function Feb 22, 2016
argv-array.h argv-array: add detach function Feb 22, 2016
attr.c convert trivial cases to FLEX_ARRAY macros Feb 22, 2016
attr.h correct a few doubled-word nits in comments and documentation Mar 28, 2012
base85.c base85.c: have SP around arithmetic operators Oct 16, 2013
bisect.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
bisect.h bisect: simplify the addition of new bisect terms Aug 3, 2015
blob.c add object_as_type helper for casting objects Jul 28, 2014
blob.h Replace parse_blob() with an explanatory comment Jan 19, 2010
branch.c Merge tag 'v2.8.0' May 19, 2016
branch.h Merge tag 'v2.8.0' May 19, 2016
builtin.h Merge tag 'v2.7.0' May 18, 2016
bulk-checkin.c use xsnprintf for generating git object headers Sep 25, 2015
bulk-checkin.h cleanups: ensure that git-compat-util.h is included first Sep 15, 2014
bundle.c Remove get_object_hash. Nov 20, 2015
bundle.h Merge branch 'jc/unseekable-bundle' Oct 21, 2011
cache-tree.c Merge branch 'jk/tighten-alloc' into maint Mar 10, 2016
cache-tree.h cache-tree: introduce write_index_as_tree() Aug 5, 2015
cache.h Merge tag 'v2.8.0' May 19, 2016
check-builtins.sh check-builtins: strip executable suffix $X when enumerating builtins Feb 5, 2015
check-racy.c ce_match_stat, run_diff_files: use symbolic constants for readability Nov 10, 2007
check_bindir check_bindir: avoid "test <cond> -a/-o <cond>" Jun 9, 2014
color.c color: add color_set helper for copying raw colors Oct 5, 2015
color.h color: add color_set helper for copying raw colors Oct 5, 2015
column.c use xmallocz to avoid size arithmetic Feb 22, 2016
column.h column: support piping stdout to external git-column process Apr 27, 2012
combine-diff.c use st_add and st_mult for allocation size computation Feb 22, 2016
command-list.txt Merge branch 'nd/multiple-work-trees' Jul 13, 2015
commit-slab.h Merge branch 'jc/commit-slab' Aug 3, 2015
commit.c Merge tag 'v2.8.0' May 19, 2016
commit.h merge: add --reverse-parents option May 18, 2016
config.c Merge tag 'v2.8.0' May 19, 2016
config.mak.in Merge branch 'jc/remove-export-from-config-mak-in' Apr 1, 2013
config.mak.uname Merge branch 'tb/avoid-gcc-on-darwin-10-6' Mar 21, 2016
configure.ac Merge branch 'jc/sane-grep' Mar 16, 2016
connect.c Merge branch 'cn/deprecate-ssh-git-url' Mar 16, 2016
connect.h connect & http: support -4 and -6 switches for remote operations Feb 12, 2016
connected.c run-command: introduce CHILD_PROCESS_INIT Aug 20, 2014
connected.h connected.c: add new variant that runs with --shallow-file Dec 11, 2013
convert.c Merge branch 'tb/conversion' Feb 26, 2016
convert.h ls-files: add eol diagnostics Jan 19, 2016
copy.c copy.c: make copy_fd() report its status silently May 19, 2015
credential-cache--daemon.c Merge branch 'jg/credential-cache-chdir-to-sockdir' Feb 26, 2016
credential-cache.c am, credential-cache: add angle brackets to usage string Oct 16, 2015
credential-store.c strbuf: introduce strbuf_getline_{lf,nul}() Jan 15, 2016
credential.c Merge tag 'v2.8.0' May 19, 2016
credential.h credential: let helpers tell us to quit Dec 4, 2014
csum-file.c sha1fd_check: die when we cannot open the file Mar 19, 2015
csum-file.h Merge branch 'jk/pack-bitmap' Dec 12, 2014
ctype.c kwset: use unsigned char to store values with high-bit set Mar 2, 2015
daemon.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
date.c date: make "local" orthogonal to date format Sep 3, 2015
decorate.c Remove get_object_hash. Nov 20, 2015
decorate.h decorate: allow const objects to be decorated Aug 20, 2008
delta.h comments: fix misuses of "nor" Mar 31, 2014
diff-delta.c create_delta_index: simplify condition always evaluating to true Aug 18, 2013
diff-lib.c Remove get_object_hash. Nov 20, 2015
diff-no-index.c Merge branch 'nd/diff-with-path-params' into maint Feb 5, 2016
diff.c Merge branch 'jk/tighten-alloc' into maint Mar 10, 2016
diff.h Merge branch 'jk/tighten-alloc' into maint Mar 10, 2016
diffcore-break.c diff -B -M: fix output for "copy and then rewrite" case Oct 23, 2014
diffcore-delta.c use st_add and st_mult for allocation size computation Feb 22, 2016
diffcore-order.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
diffcore-pickaxe.c react to errors in xdi_diff Sep 28, 2015
diffcore-rename.c use st_add and st_mult for allocation size computation Feb 22, 2016
diffcore.h diff --stat: mark any file larger than core.bigfilethreshold binary Aug 18, 2014
dir.c Revert "Merge branch 'nd/exclusion-regression-fix'" Mar 18, 2016
dir.h Revert "Merge branch 'nd/exclusion-regression-fix'" Mar 18, 2016
editor.c run-command: introduce CHILD_PROCESS_INIT Aug 20, 2014
entry.c use xmallocz to avoid size arithmetic Feb 22, 2016
environment.c Merge tag 'v2.8.0' May 19, 2016
exec_cmd.c Merge branch 'ak/extract-argv0-last-dir-sep' into maint Mar 10, 2016
exec_cmd.h prepare_{git,shell}_cmd: use argv_array Feb 22, 2016
fast-import.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
fetch-pack.c fetch-pack: ignore SIGPIPE in sideband demuxer Feb 25, 2016
fetch-pack.h Merge branch 'nd/shallow-clone' Jan 17, 2014
fmt-merge-msg.h fmt-merge-msg: use branch.$name.description Oct 7, 2011
fsck.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
fsck.h fsck: git receive-pack: support excluding objects from fsck'ing Jun 23, 2015
generate-cmdlist.sh generate-cmdlist: re-implement as shell script Aug 25, 2015
gettext.c introduce "format" date-mode Jun 29, 2015
gettext.h Merge branch 'ye/http-accept-language' Mar 6, 2015
git-add--interactive.perl Merge branch 'ak/add-i-empty-candidates' into maint Feb 25, 2015
git-archimport.perl git-archimport: use a lowercase "usage:" string Feb 24, 2013
git-bisect.sh bisect: allow setting any user-specified in 'git bisect start' Aug 3, 2015
git-compat-util.h Merge tag 'v2.8.0' May 19, 2016
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string Feb 24, 2013
git-cvsimport.perl Merge branch 'cn/cvsimport-perl-update' Jun 25, 2015
git-cvsserver.perl git-cvsserver.perl: fix typo Feb 17, 2016
git-difftool--helper.sh difftool--helper: add explicit exit statement Nov 21, 2014
git-difftool.perl difftool: ignore symbolic links in use_wt_file Oct 29, 2015
git-filter-branch.sh Merge branch 'jk/filter-branch-no-index' into maint Feb 5, 2016
git-instaweb.sh git-instaweb: use @SHELL_PATH@ instead of /bin/sh Mar 10, 2015
git-merge-octopus.sh merge-octopus: Work around environment issue on Windows Oct 1, 2010
git-merge-one-file.sh Merge branch 'jk/no-diff-emit-common' into maint Mar 10, 2016
git-merge-resolve.sh Convert to use quiet option when available Apr 23, 2009
git-mergetool--lib.sh mergetool-lib: fix default tool selection Jun 19, 2015
git-mergetool.sh config: add core.mode = progress pseudo-config May 18, 2016
git-p4.py git-p4.py: add support for filetype change Jan 13, 2016
git-parse-remote.sh remove #!interpreter line from shell libraries Nov 26, 2013
git-quiltimport.sh git-quiltimport: add commandline option --series <file> Sep 1, 2015
git-rb-setup.rb ruby: add simpler option parser May 18, 2016
git-rebase--am.sh rebase: return non-zero error code if format-patch fails Jul 8, 2015
git-rebase--interactive.sh Merge tag 'v2.8.0' May 19, 2016
git-rebase--merge.sh *.sh: avoid hardcoding $GIT_DIR/hooks/... Dec 1, 2014
git-rebase.sh Merge tag 'v2.8.0' May 19, 2016
git-relink.perl git-relink: use a lowercase "usage:" string Feb 24, 2013
git-remote-bzr.py git-remote-bzr: update to v0.3 May 18, 2016
git-remote-hg.py remote-hg: avoid deprecated bookmarks.write() May 18, 2016
git-remote-testgit.sh transport-helper: do not request symbolic refs to remote helpers Jan 22, 2015
git-request-pull.sh Merge branch 'lt/request-pull' May 19, 2014
git-send-email.perl Merge branch 'ew/send-email-mutt-alias-fix' into maint Feb 5, 2016
git-sh-i18n.sh remove #!interpreter line from shell libraries Nov 26, 2013
git-sh-setup.sh sane_grep: pass "-a" if grep accepts it Mar 10, 2016
git-stash.sh Merge tag 'v2.7.0' May 18, 2016
git-submodule.sh Merge tag 'v2.8.0' May 19, 2016
git-svn.perl git-svn: fix URL canonicalization during init w/ SVN 1.7+ Mar 16, 2016
git-update.sh Add new `git update` tool May 18, 2016
git-web--browse.sh git-web--browse.sh: use the $( ... ) construct for command substitution Apr 23, 2014
git.c Merge tag 'v2.8.0' May 19, 2016
git.rc Makefile: Fix compilation of Windows resource file Jan 23, 2014
git.spec.in spec: add missing build dependency Apr 6, 2012
gpg-interface.c verify-commit: add option to print raw gpg status information Jun 22, 2015
gpg-interface.h verify-commit: add option to print raw gpg status information Jun 22, 2015
graph.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
graph.h Revert "graph.c: mark private file-scope symbols as static" Mar 4, 2013
grep.c use xmallocz to avoid size arithmetic Feb 22, 2016
grep.h grep: add color.grep.matchcontext and color.grep.matchselected Oct 28, 2014
hashmap.c convert trivial cases to FLEX_ARRAY macros Feb 22, 2016
hashmap.h hashmap: add string interning API Jul 7, 2014
help.c convert trivial cases to FLEX_ARRAY macros Feb 22, 2016
help.h help: add help_unknown_ref() May 8, 2013
hex.c add reentrant variants of sha1_to_hex and find_unique_abbrev Sep 25, 2015
http-backend.c Convert struct object to object_id Nov 20, 2015
http-fetch.c Merge branch 'ab/enable-i18n' Dec 20, 2011
http-push.c Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 Mar 16, 2016
http-walker.c http-walker: store url in a strbuf Sep 25, 2015
http.c Merge branch 'jx/http-no-proxy' Mar 10, 2016
http.h Merge branch 'ew/force-ipv4' Feb 24, 2016
ident.c Merge branch 'da/user-useconfigonly' Feb 17, 2016
imap-send.c use xmallocz to avoid size arithmetic Feb 22, 2016
khash.h convert trivial cases to ALLOC_ARRAY Feb 22, 2016
kwset.c kwset: use unsigned char to store values with high-bit set Mar 2, 2015
kwset.h kwset: use unsigned char to store values with high-bit set Mar 2, 2015
levenshtein.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
levenshtein.h Typofixes outside documentation area Feb 4, 2010
line-log.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
line-log.h line-log.c: make line_log_data_init() static Jan 15, 2015
line-range.c line-range: reject -L line numbers less than 1 Aug 6, 2013
line-range.h line-range: teach -L/RE/ to search relative to anchor point Aug 6, 2013
list-objects.c Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 Mar 16, 2016
list-objects.h list-objects: pass full pathname to callbacks Mar 16, 2016
ll-merge.c use xmallocz to avoid size arithmetic Feb 22, 2016
ll-merge.h merge-recursive --patience Aug 26, 2010
lockfile.c lockfile: remove function "hold_lock_file_for_append" Aug 28, 2015
lockfile.h lockfile: remove function "hold_lock_file_for_append" Aug 28, 2015
log-tree.c convert trivial cases to FLEX_ARRAY macros Feb 22, 2016
log-tree.h Merge branch 'jn/parse-config-slot' Oct 20, 2014
mailinfo.c strbuf: introduce strbuf_getline_{lf,nul}() Jan 15, 2016
mailinfo.h mailinfo: remove calls to exit() and die() deep in the callchain Oct 21, 2015
mailmap.c mailmap: replace strcpy with xstrdup Sep 25, 2015
mailmap.h mailmap: simplify map_user() interface Jan 10, 2013
match-trees.c use xstrfmt to replace xmalloc + sprintf Jun 19, 2014
merge-blobs.c Merge branch 'jk/no-diff-emit-common' into maint Mar 10, 2016
merge-blobs.h Which merge_file() function do you mean? Dec 10, 2012
merge-recursive.c merge-recursive: find-renames resets threshold Feb 24, 2016
merge-recursive.h merge-recursive: option to disable renames Feb 17, 2016
merge.c Convert struct object to object_id Nov 20, 2015
mergesort.c mergesort: rename it to llist_mergesort() Apr 17, 2012
mergesort.h mergesort: rename it to llist_mergesort() Apr 17, 2012
name-hash.c convert trivial cases to FLEX_ARRAY macros Feb 22, 2016
notes-cache.c notes: allow treeish expressions as notes ref Jan 12, 2016
notes-cache.h introduce notes-cache interface Apr 2, 2010
notes-merge.c Remove get_object_hash. Nov 20, 2015
notes-merge.h notes: extract enum notes_merge_strategy to notes-utils.h Aug 17, 2015
notes-utils.c notes: allow treeish expressions as notes ref Jan 12, 2016
notes-utils.h notes: extract parse_notes_merge_strategy to notes-utils Aug 17, 2015
notes.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
notes.h Merge branch 'jk/notes-merge-from-anywhere' Feb 3, 2016
object.c Remove get_object_hash. Nov 20, 2015
object.h Remove get_object_hash. Nov 20, 2015
pack-bitmap-write.c Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 Mar 16, 2016
pack-bitmap.c list-objects: pass full pathname to callbacks Feb 12, 2016
pack-bitmap.h pack-bitmap.c: make pack_bitmap_filename() static Jan 15, 2015
pack-check.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
pack-objects.c use REALLOC_ARRAY for changing the allocation size of arrays Sep 18, 2014
pack-objects.h pack-objects: implement bitmap writing Dec 30, 2013
pack-revindex.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
pack-revindex.h pack-revindex: store entries directly in packed_git Dec 21, 2015
pack-write.c pack-write: simplify index_pack_lockfile using skip_prefix() and xstr… Sep 2, 2014
pack.h finish_tmp_packfile():use strbuf for pathname construction Mar 3, 2014
pager.c Merge branch 'jc/am-i-v-fix' into maint Mar 10, 2016
parse-options-cb.c Merge branch 'kn/for-each-tag-branch' Oct 5, 2015
parse-options.c Merge tag 'v2.7.0' May 18, 2016
parse-options.h Merge tag 'v2.7.0' May 18, 2016
patch-delta.c compat: helper for detecting unsigned overflow Feb 10, 2011
patch-ids.c Remove get_object_hash. Nov 20, 2015
patch-ids.h Refactor patch-id filtering out of git-cherry and git-format-patch. Apr 12, 2007
path.c config --show-origin: report paths with forward slashes Mar 23, 2016
pathspec.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
pathspec.h Support pathspec magic :(exclude) and its short form :! Dec 6, 2013
pkt-line.c pkt-line: show packets in async processes as "sideband" Sep 1, 2015
pkt-line.h comments: fix misuses of "nor" Mar 31, 2014
preload-index.c cache.h: rename cache_def_free to cache_def_clear Jul 13, 2014
pretty.c Remove get_object_hash. Nov 20, 2015
prio-queue.c prio-queue: make output stable with respect to insertion Jul 15, 2014
prio-queue.h prio-queue: make output stable with respect to insertion Jul 15, 2014
progress.c use xmallocz to avoid size arithmetic Feb 22, 2016
progress.h nicer display of thin pack completion Nov 8, 2007
prompt.c prompt.c: remove git_getpass() nobody uses Jan 15, 2015
prompt.h prompt.c: remove git_getpass() nobody uses Jan 15, 2015
quote.c quote: move comment before sq_quote_buf() Oct 7, 2015
quote.h ls-tree: remove path filtering logic in show_tree Dec 1, 2014
reachable.c Merge branch 'maint-2.5' into maint-2.6 Mar 17, 2016
reachable.h pack-objects: match prune logic for discarding objects Oct 16, 2014
read-cache.c Merge branch 'cc/untracked' Feb 10, 2016
ref-filter.c ref-filter.c: mark strings for translation Feb 29, 2016
ref-filter.h branch.c: use 'ref-filter' APIs Sep 25, 2015
reflog-walk.c Merge branch 'dk/reflog-walk-with-non-commit' into maint Feb 5, 2016
reflog-walk.h convert "enum date_mode" into a struct Jun 29, 2015
refs.c use st_add and st_mult for allocation size computation Feb 22, 2016
refs.h Merge branch 'dt/initial-ref-xn-commit-doc' Feb 26, 2016
remote-curl.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
remote-testsvn.c strbuf: introduce strbuf_getline_{lf,nul}() Jan 15, 2016
remote.c Merge tag 'v2.8.0' May 19, 2016
remote.h Merge tag 'v2.8.0' May 19, 2016
replace_object.c register_replace_ref(): rewrite to take an object_id argument May 25, 2015
rerere.c Merge branch 'jk/rerere-xsnprintf' Feb 17, 2016
rerere.h Merge branch 'jc/rerere' Oct 5, 2015
resolve-undo.c resolve-undo: be specific what part of the index has changed Jun 13, 2014
resolve-undo.h convert unmerge_cache to take struct pathspec Jul 15, 2013
revision.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
revision.h Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 Mar 16, 2016
rewrite.c builtin: rewrite: add copy_rewrite_notes() May 18, 2016
rewrite.h builtin: rewrite: add copy_rewrite_notes() May 18, 2016
ruby.c ruby: bind log_tree_diff_flush() May 18, 2016
run-command.c Merge branch 'sb/submodule-parallel-fetch' Mar 4, 2016
run-command.h Merge branch 'sb/submodule-parallel-fetch' Mar 4, 2016
send-pack.c Convert struct ref to use object_id. Nov 20, 2015
send-pack.h push: support signing pushes iff the server supports it Aug 19, 2015
sequencer.c Merge tag 'v2.8.0' May 19, 2016
sequencer.h cherry-pick: add --action-name option May 18, 2016
server-info.c Convert struct object to object_id Nov 20, 2015
setup.c Merge branch 'jk/tighten-alloc' into maint Mar 10, 2016
sh-i18n--envsubst.c use REALLOC_ARRAY for changing the allocation size of arrays Sep 18, 2014
sha1-array.c sha1-array.c: mark a private file-scope symbol as static Sep 16, 2012
sha1-array.h sha1-array.c: mark a private file-scope symbol as static Sep 16, 2012
sha1-lookup.c sha1-lookup: handle duplicates in sha1_pos() Oct 1, 2014
sha1-lookup.h sha1-lookup: add new "sha1_pos" function to efficiently lookup sha1 Apr 5, 2009
sha1_file.c Merge branch 'jk/pack-idx-corruption-safety' Mar 4, 2016
sha1_name.c Merge tag 'v2.8.0' May 19, 2016
shallow.c use st_add and st_mult for allocation size computation Feb 22, 2016
shell.c strbuf: introduce strbuf_getline_{lf,nul}() Jan 15, 2016
shortlog.c Merge tag 'v2.8.0' May 19, 2016
shortlog.h shortlog: split builtin from common code May 18, 2016
show-index.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
sideband.c convert trivial sprintf / strcpy calls to xsnprintf Sep 25, 2015
sideband.h pkt-line: move LARGE_PACKET_MAX definition from sideband Feb 20, 2013
sigchain.c sigchain: add command to pop all common signals Dec 16, 2015
sigchain.h sigchain: add command to pop all common signals Dec 16, 2015
split-index.c ewah: add convenient wrapper ewah_serialize_strbuf() Mar 12, 2015
split-index.h split-index: the reading part Jun 13, 2014
strbuf.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
strbuf.h Merge branch 'jc/strbuf-getline' Jan 29, 2016
streaming.c Merge branch 'sb/plug-streaming-leak' Apr 14, 2015
streaming.h streaming: void pointer instead of char pointer May 3, 2012
string-list.c Merge branch 'sb/string-list' Dec 22, 2014
string-list.h Merge branch 'sb/string-list' Dec 22, 2014
submodule-config.c config: add 'origin_type' to config_source struct Feb 22, 2016
submodule-config.h push: add recurseSubmodules config option Nov 20, 2015
submodule.c Merge branch 'sb/submodule-parallel-fetch' Mar 4, 2016
submodule.h Merge branch 'sb/submodule-parallel-fetch' Jan 12, 2016
symlinks.c symlinks: remove PATH_MAX limitation Jul 7, 2014
tag.c Remove get_object_hash. Nov 20, 2015
tag.h gpg-interface: move parse_signature() to where it should be Sep 15, 2014
tar.h tar-tree: Introduce write_entry() Mar 26, 2006
tempfile.c register_tempfile(): new function to handle an existing temporary file Aug 10, 2015
tempfile.h register_tempfile(): new function to handle an existing temporary file Aug 10, 2015
test-chmtime.c comments: fix misuses of "nor" Mar 31, 2014
test-config.c add tests for `git_config_get_string_const()` Aug 7, 2014
test-ctype.c test-ctype: add test for is_pathspec_magic Oct 3, 2011
test-date.c convert "enum date_mode" into a struct Jun 29, 2015
test-delta.c tests: use a lowercase "usage:" string Feb 25, 2013
test-dump-cache-tree.c test-dump-cache-tree: avoid overflow of cache-tree name Sep 25, 2015
test-dump-split-index.c commit: don't rewrite shared index unnecessarily Aug 31, 2015
test-dump-untracked-cache.c test-dump-untracked-cache: don't modify the untracked cache Jan 27, 2016
test-fake-ssh.c mingw: fix t5601-clone.sh Jan 27, 2016
test-genrandom.c tests: use a lowercase "usage:" string Feb 25, 2013
test-hashmap.c Merge branch 'js/test-hashmap-squelch-gcc' Dec 22, 2014
test-index-version.c sparse: Fix mingw_main() argument number/type errors Apr 28, 2013
test-line-buffer.c replace {pre,suf}fixcmp() with {starts,ends}_with() Dec 5, 2013
test-match-trees.c Remove get_object_hash. Nov 20, 2015
test-mergesort.c sparse: Fix mingw_main() argument number/type errors Apr 28, 2013
test-mktemp.c Improve error messages when temporary file creation fails Dec 22, 2010
test-parse-options.c parse-options: move unsigned long option parsing out of pack-objects.c Jun 22, 2015
test-path-utils.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
test-prio-queue.c prio-queue: priority queue of pointers to structs Jun 11, 2013
test-read-cache.c read-cache: add simple performance test Jun 10, 2013
test-regex.c cleanups: ensure that git-compat-util.h is included first Sep 15, 2014
test-revision-walking.c convert "enum date_mode" into a struct Jun 29, 2015
test-run-command.c run-command: do not pass child process data into callbacks Mar 1, 2016
test-scrap-cache-tree.c lockfile.h: extract new header file for the functions in lockfile.c Oct 1, 2014
test-sha1-array.c test-sha1-array: read command stream with strbuf_getline() Jan 15, 2016
test-sha1.c test-sha1: add a binary output mode Aug 22, 2013
test-sha1.sh test-sha1.sh: use the $( ... ) construct for command substitution Dec 27, 2015
test-sigchain.c cleanups: ensure that git-compat-util.h is included first Sep 15, 2014
test-string-list.c replace {pre,suf}fixcmp() with {starts,ends}_with() Dec 5, 2013
test-submodule-config.c submodule: use new config API for worktree configurations Aug 19, 2015
test-subprocess.c run-command: introduce CHILD_PROCESS_INIT Aug 20, 2014
test-svn-fe.c msvc: test-svn-fe: Fix linker "unresolved external" error Feb 25, 2013
test-urlmatch-normalization.c builtin/config.c: compilation fix Aug 9, 2013
test-wildmatch.c stop using fnmatch (either native or compat) Feb 20, 2014
thread-utils.c thread-utils.c: detect CPU count on older BSD-like systems Mar 10, 2015
thread-utils.h pack-objects: set number of threads before checking and warning Oct 13, 2014
trace.c trace: use strbuf for quote_crnl output Sep 25, 2015
trace.h pkt-line: support tracing verbatim pack contents Jun 16, 2015
trailer.c trailer.c: mark strings for translation Feb 29, 2016
trailer.h interpret-trailers: add option for in-place editing Jan 14, 2016
transport-helper.c Merge branch 'ew/force-ipv4' Feb 24, 2016
transport.c Merge tag 'v2.8.0' May 19, 2016
transport.h Merge tag 'v2.8.0' May 19, 2016
tree-diff.c Merge branch 'maint-2.4' into maint-2.5 Mar 17, 2016
tree-walk.c do_compare_entry: use already-computed path Jan 5, 2016
tree-walk.h do_compare_entry: use already-computed path Jan 5, 2016
tree.c Remove get_object_hash. Nov 20, 2015
tree.h Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into m… Jun 25, 2015
unicode_width.h Update of unicode_width.h to Unicode Version 7.0 Jun 18, 2014
unimplemented.sh unimplemented.sh: use the $( ... ) construct for command substitution Dec 27, 2015
unix-socket.c Merge branch 'rs/strbuf-getcwd' Sep 2, 2014
unix-socket.h credentials: add "cache" helper Dec 12, 2011
unpack-trees.c unpack-trees: fix accidentally quadratic behavior Jan 22, 2016
unpack-trees.h diff-lib, read-tree, unpack-trees: mark cache_entry array paramters c… Jun 2, 2013
update_unicode.sh update_unicode.sh: delete the command group Dec 22, 2014
upload-pack.c Remove get_object_hash. Nov 20, 2015
url.c use strbuf_complete to conditionally append slash Oct 5, 2015
url.h url: decode buffers that are not NUL-terminated Jul 20, 2011
urlmatch.c urlmatch.c: make match_urls() static Jan 15, 2015
urlmatch.h urlmatch.c: make match_urls() static Jan 15, 2015
usage.c Revert "make error()'s constant return value more visible" May 18, 2016
userdiff.c userdiff: add support for Fountain documents Jul 23, 2015
userdiff.h diff: clarify textconv interface Feb 22, 2016
utf8.c utf8: add function to align a string into given strbuf Sep 17, 2015
utf8.h utf8: add function to align a string into given strbuf Sep 17, 2015
varint.c cleanups: ensure that git-compat-util.h is included first Sep 15, 2014
varint.h cleanups: ensure that git-compat-util.h is included first Sep 15, 2014
version.c include agent identifier in capability string Aug 3, 2012
version.h include agent identifier in capability string Aug 3, 2012
versioncmp.c versionsort: support reorder prerelease suffixes Feb 27, 2015
walker.c strbuf: introduce strbuf_getline_{lf,nul}() Jan 15, 2016
walker.h http: init and cleanup separately from http-walker Mar 2, 2010
wildmatch.c wildmatch: properly fold case everywhere Jun 2, 2013
wildmatch.h wildmatch: support "no FNM_PATHNAME" mode Jan 1, 2013
worktree.c worktree.c: fix indentation Jan 19, 2016
worktree.h worktree: add details to the worktree struct Oct 8, 2015
wrap-for-bin.sh test: facilitate debugging Git executables in tests with gdb Oct 30, 2015
wrapper.c Merge branch 'jk/tighten-alloc' Feb 26, 2016
write_or_die.c write_or_die: handle EPIPE in async threads Feb 25, 2016
ws.c use strchrnul() in place of strchr() and strlen() Mar 10, 2014
wt-status.c Merge branch 'mg/wt-status-mismarked-i18n' Mar 14, 2016
wt-status.h wt-status: move #include "pathspec.h" to the header Aug 21, 2015
xdiff-interface.c convert trivial cases to ALLOC_ARRAY Feb 22, 2016
xdiff-interface.h xdiff: reject files larger than ~1GB Sep 28, 2015
zlib.c zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw} Mar 5, 2015

README.md

git-fc

git-fc is a friendly fork of Git, which means it's a fork that won't deviate from the mainline; it is more like a branch in Git terms. This branch will move forward close to Git's mainline, and it could be merged at any point in time, if the maintainer wished to do so.

git-fc doesn't include experimental code, or half-assed features, so you can expect the same level of stability as Git's mainline. Also, it doesn't remove any feature, or do any backwards incompatible changes, so you can replace git with git-fc and you wouldn't notice the difference. The difference comes in the extra features, that is all.

Maintenance

Each release of Git is merged directly into git-fc, so if there's a new feature in Git, git-fc will get it as well.

Every extra feature is maintained individually in a separate branch, so if you are interested in a specific feature and don't trust the rest of git-fc, you can use that branch instead. For example the publish tracking branch feature is maintained in the 'fc/publish' branch which sits on top of git.git's v1.9.2. You can grab the specific branch and do whatever you want with it.

Extra features

Streamlined remote helpers

git-remote-hg and git-remote-bzr are remote helpers that allow two-way communication between Git and Mercurial/Bazaar. They have been proven to be very reliable and solid, and used by many people. In order to use them in Git mainline you might need a bit of tinkering.

With git-fc they are installed by default, and in the right way. Plus there are fixes in the remote helper infrastructure so they always work better than in Git mainline.

New 'git update' tool

Everybody has agreed the git pull command is broken for most use-cases, which is why most seasoned Git users avoid it, and it is recommended for new users to avoid it.

A new tool is necessary for the most common use case, which is fetch all the updates and update the current branch if possible.

The new git update will fast-forward to the latest commit in the remote branch if there's no divergence (you haven't made extra commits). But if you have made extra commits you will be told to either merge or rebase, or run git update --merge or git update --rebase.

This ensures that new users won't be making merges by mistake.

Additionally, when doing a merge the order of the parents will be reversed, so it would appear as if you are merging your local branch to the remote one, and not the other way around like git pull does. Everybody has agreed this is a problem with git pull.

Publish tracking branch

Git mainline doesn't have the greatest support for triangular workflows, a good solution for that is to introduce a second "upstream" tracking branch which is for the reverse; the branch you normally push to.

Say you clone a repository (libgit2) in GitHub, then create a branch (feature-a) and push it to your personal repository, you would want to track two branches (origin/master), and (mine/feature-a), but Git mainline only provides support for a single upstream tracking branch.

If you setup your upstream tracking branch to 'origin/master', then you can just do git rebase without arguments and git will pick the right branch (origin/master) to rebase to. However, git push by default will also try to push to 'origin/master', which is not what you want. Plus git branch -v will show how ahead/behind your branch is compared to origin/master, not mine/feature-a.

If you set up your upstream to 'mine/feature-a', then git push will work, but git rebase won't.

With this option, git rebase uses the upstream branch, and git push uses the publish branch.

Setting the upstream tracking branch is easy:

git push --set-publish mine feature-a

Or:

git branch --set-publish mine/feature-a

And git branch -v will show it as well:

  fc/branch/fast      177dcad [master, gh/fc/branch/fast] branch: ...
  fc/stage            abb6ad5 [master, gh/fc/stage] completion: ..
  fc/transport/improv eb4d3c7 [master, gh/fc/transport/improv] ...

Official staging area

Everybody already uses the term "staging area" already, and Git developers also agreed it the best term to what is officially referred to as "the index". So git-fc has new options for all commands that modify the staging area (e.g. git grep --staged, git rm --staged), and also adds a new git stage command that makes it easier to work with the staging area.

'git stage' [options] [--] [<paths>...]
'git stage add' [options] [--] [<paths>...]
'git stage reset' [-q|--patch] [--] [<paths>...]
'git stage diff' [options] [<commit>] [--] [<paths>...]
'git stage rm' [options] [--] [<paths>...]
'git stage apply' [options] [--] [<paths>...]
'git stage edit'

Without any command, git stage adds files to the stage, same as git add, same as in Git mainline.

Nice 'branch -v'

Currently git branch -v will show you the tracking status (ahead/behind), but wouldn't show you which from which branch, and it takes considerable amount of time (compared to most Git commands).

This is fixed so the branch is showed instead, which is more useful and faster. If you want the tracking status, you can use git branch -vv which shows everything, as with Git mainline.

  fc/branch/fast      177dcad [master] branch: ...
  fc/stage            abb6ad5 [master] completion: ...
  fc/transport/improv eb4d3c7 [master] transport-helper: ...

Default aliases

Many (if not all) version control system tools have shortcuts for their most common operations; hg ci, svn co, cvs st, but not Git... git-fc does:

co = checkout
ci = commit
rb = rebase
st = status
br = branch
pi = cherry-pick
mt = mergetool

If you have already these aliases, or mapped to something else, your aliases would take precedence over the default ones, so you won't have any problems.

New core.mode configuration

The behavior of Git v2.0 is already being defined, but there's no way to test it, if you want to test it, along with all future behaviors, you can enable it on git-fc by setting the configuration core.mode = next.

In addition to the "next" (v2.0) mode, there's the "progress" mode. This mode enables "next" plus other configurations that are saner.

It is recommended that you setup this mode for git-fc:

git config --global core.mode progress

New fetch.default configuration

When you have configured the upstream tracking branch for all your branches, you will probably have tracking branches that point to a local branch, for example 'feature-a' pointing to 'master', in which case you would get something like:

% git fetch
From .
 * branch            master     -> FETCH_HEAD

Which makes absolutely no sense, since the '.' repository is not even documented, and FETCH_HEAD is a marginally known concept. In this case git fetch is basically doing nothing from the user's point of view.

So the user can configure fetch.default = simple to get a simple sensible default; git fetch will always use 'origin' by default.

If you use the "progress" mode, this option is also enabled.

Support for Ruby

There is partial optional support for Ruby. Git already has tooling so any language can use it's plumbing and achieve plenty of tasks:

IO.popen(%w[git for-each-ref]) do |io|
  io.each do |line|
    sha1, kind, name = line.split()
    # stuff
  end
end

However, this a) requires a process fork, and b) requires I/O communication to get the desired data. While this is not a big deal on many systems, it is in Windows systems where forks are slow, and many Git core programs don't work as well as they do in Linux.

Git has a goal to replace all the core scripts with native C versions, but it's a goal only in name that is not actually pursued. In addition, that still leaves out any third party tools since Git doesn't provide a shared libgit library, which is why an independent libgit2 was needed in the first place.

Ruby bindings solve these problems:

for_each_ref() do |name, sha1, flags|
  # stuff
end

The command git ruby can use this script by providing the bindings for many Git's internal C functions (though not all), which makes it easier to write Ruby programs that take full advantage of Git without any need of forks, or I/O communication.

Contributions

All these patches were written by me, Felipe Contreras, but contributions from other people are welcome, as long as they follow these guidelines:

  1. Follows Git coding guidelines and is technically correct according to Git standards
  2. Doesn't break backwards compatibility
  3. It doesn't conflict with other Git features so it can be rebased on newer versions of Git without much maintenance burden

Patches should be sent using git send-email to the mailing list git-fc@googlegroups.com.