A fork of Git containing Microsoft-specific patches.
Перейти к файлу
Jeff King 5b1ef2cef4 replace unchecked snprintf calls with heap buffers
We'd prefer to avoid unchecked snprintf calls because
truncation can lead to unexpected results.

These are all cases where truncation shouldn't ever happen,
because the input to snprintf is fixed in size. That makes
them candidates for xsnprintf(), but it's simpler still to
just use the heap, and then nobody has to wonder if "100" is
big enough.

We'll use xstrfmt() where possible, and a strbuf when we need
the resulting size or to reuse the same buffer in a loop.

Signed-off-by: Jeff King <peff@peff.net>
2017-03-30 14:59:50 -07:00
Documentation Ninth batch for 2.13 2017-03-28 14:14:56 -07:00
block-sha1
builtin replace unchecked snprintf calls with heap buffers 2017-03-30 14:59:50 -07:00
ci Travis: also test on 32-bit Linux 2017-03-06 11:19:09 -08:00
compat Merge branch 'js/mingw-isatty' 2017-02-16 14:45:13 -08:00
contrib Merge branch 'rs/strbuf-add-real-path' into maint 2017-03-28 13:52:19 -07:00
ewah Merge branch 'jk/ewah-use-right-type-in-sizeof' into maint 2017-03-21 15:03:24 -07:00
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2017-01-18 10:27:59 -08:00
gitweb
mergetools Merge branch 'da/mergetool-xxdiff-hotkey' into maint 2017-01-17 15:11:05 -08:00
perl Merge branch 'svn-escape-backslash' of git://bogomips.org/git-svn 2017-02-20 22:01:59 -08:00
po l10n: zh_CN: for git v2.12.0 l10n round 2 2017-02-25 00:19:14 +08:00
ppc
refs Merge branch 'bc/object-id' 2017-03-17 13:50:25 -07:00
sha1dc sha1dc: avoid CPP macro collisions 2017-03-26 15:34:44 -07:00
t Merge branch 'jh/memihash-opt' 2017-03-28 14:06:00 -07:00
templates
vcs-svn
xdiff xdiff -W: relax end-of-file function detection 2017-01-15 16:08:11 -08:00
.gitattributes
.gitignore rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
.mailmap Git 2.12.2 2017-03-24 13:31:01 -07:00
.travis.yml Travis: also test on 32-bit Linux 2017-03-06 11:19:09 -08:00
COPYING
GIT-VERSION-GEN Git 2.12.2 2017-03-24 12:59:15 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'jh/memihash-opt' 2017-03-28 14:06:00 -07:00
README.md README: create HTTP/HTTPS links from URLs in Markdown 2017-03-01 14:45:45 -08:00
RelNotes Prepare for 2.12.3 2017-03-28 13:54:14 -07:00
abspath.c prefix_filename: simplify windows #ifdef 2017-03-21 11:18:41 -07:00
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
apply.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
apply.h
archive-tar.c
archive-zip.c archive-zip: load userdiff config 2017-01-07 18:49:30 -08:00
archive.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
archive.h archive: read local configuration 2016-11-22 13:55:20 -08:00
argv-array.c
argv-array.h
attr.c pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
attr.h pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
base85.c
bisect.c replace unchecked snprintf calls with heap buffers 2017-03-30 14:59:50 -07:00
bisect.h
blob.c
blob.h
branch.c create_branch: use xstrfmt for reflog message 2017-03-30 14:59:50 -07:00
branch.h branch: record creation of renamed branch in HEAD's log 2017-02-20 22:04:47 -08:00
builtin.h rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
bulk-checkin.c encode_in_pack_object_header: respect output buffer length 2017-03-24 12:34:07 -07:00
bulk-checkin.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c Merge branch 'nd/log-graph-configurable-colors' 2017-02-02 13:36:58 -08:00
color.h
column.c
column.h
combine-diff.c
command-list.txt relink: retire the command 2017-01-25 14:42:37 -08:00
commit-slab.h
commit.c Merge branch 'rs/commit-parsing-optim' into maint 2017-03-21 15:03:29 -07:00
commit.h Merge branch 'rs/log-email-subject' 2017-03-10 13:24:24 -08:00
common-main.c attr: use hashmap for attribute dictionary 2017-02-01 13:46:53 -08:00
config.c Merge branch 'jk/parse-config-key-cleanup' into maint 2017-03-28 13:52:19 -07:00
config.mak.in
config.mak.uname Merge branch 'rj/remove-unused-mktemp' into maint 2017-03-21 15:03:24 -07:00
configure.ac wrapper.c: remove unused gitmkstemps() function 2017-02-28 11:54:21 -08:00
connect.c connect.c: stop conflating ssh command names and overrides 2017-02-10 13:47:24 -08:00
connect.h
connected.c
connected.h
convert.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
convert.h
copy.c
credential-cache--daemon.c
credential-cache.c credential-cache: use XDG_CACHE_HOME for socket 2017-03-17 11:19:40 -07:00
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c Merge branch 'jk/daemon-path-ok-check-truncation' into maint 2016-11-29 13:27:56 -08:00
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
diff.c diff: avoid fixed-size buffer for patch-ids 2017-03-30 14:58:29 -07:00
diff.h
diffcore-break.c Merge branch 'tk/diffcore-delta-remove-unused' into maint 2016-11-29 13:28:03 -08:00
diffcore-delta.c Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
diffcore-order.c
diffcore-pickaxe.c Merge branch 'js/regexec-buf' into maint 2017-03-28 13:52:24 -07:00
diffcore-rename.c Merge branch 'tk/diffcore-delta-remove-unused' into maint 2016-11-29 13:28:03 -08:00
diffcore.h Merge branch 'tk/diffcore-delta-remove-unused' into maint 2016-11-29 13:28:03 -08:00
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
dir.h submodule: add absorb-git-dir function 2016-12-12 15:15:07 -08:00
editor.c
entry.c entry.c: create submodules when interesting 2017-03-16 14:07:16 -07:00
environment.c odb_mkstemp: use git_path_buf 2017-03-28 15:28:04 -07:00
exec_cmd.c Merge branch 'js/exec-path-coverity-workaround' into maint 2017-01-31 13:32:10 -08:00
exec_cmd.h common-main: stop munging argv[0] path 2016-11-29 11:01:48 -08:00
fast-import.c odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
fetch-pack.c Merge branch 'mm/fetch-show-error-message-on-unadvertised-object' 2017-03-14 15:23:18 -07:00
fetch-pack.h fetch-pack: move code to report unmatched refs to a function 2017-03-02 11:12:53 -08:00
fmt-merge-msg.h
fsck.c fsck: lazily load types under --connectivity-only 2017-01-26 10:51:09 -08:00
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl Merge branch 'jk/add-i-use-pathspecs' 2017-03-17 13:50:26 -07:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'jk/pack-name-cleanups' into maint 2017-03-28 13:52:25 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh filter-branch: fix --prune-empty on parentless commits 2017-03-03 12:43:37 -08:00
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool: honor mergetool.$tool.trustExitCode for built-in tools 2016-11-29 10:54:03 -08:00
git-mergetool.sh mergetool: fix running in subdir when rerere enabled 2017-01-10 13:22:51 -08:00
git-p4.py Merge branch 'ls/p4-path-encoding' 2017-02-16 14:45:12 -08:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh rebase -i: use the rebase--helper builtin 2017-02-09 14:55:40 -08:00
git-rebase--merge.sh
git-rebase.sh Merge branch 'nd/rebase-forget' 2016-12-19 14:45:35 -08:00
git-remote-testgit.sh
git-request-pull.sh request-pull: drop old USAGE stuff 2017-01-15 16:23:23 -08:00
git-send-email.perl Merge branch 'jh/send-email-one-cc' into maint 2017-03-21 15:03:30 -07:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'va/i18n-even-more' 2016-12-27 00:11:45 -08:00
git-stash.sh stash: keep untracked files intact in stash -k 2017-03-22 14:55:56 -07:00
git-submodule.sh Merge branch 'sb/submodule-update-initial-runs-custom-script' 2017-02-03 11:25:19 -08:00
git-svn.perl git svn: fix authentication with 'branch' 2017-03-07 21:29:03 +00:00
git-web--browse.sh
git.c rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
git.rc
gpg-interface.c
gpg-interface.h gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
graph.c Merge branch 'rs/swap' 2017-02-15 12:54:19 -08:00
graph.h
grep.c grep: set default output method 2017-03-17 12:18:41 -07:00
grep.h grep: add submodules as a grep source type 2016-12-22 11:47:33 -08:00
hash.h Makefile: add DC_SHA1 knob 2017-03-17 10:40:25 -07:00
hashmap.c hashmap: add disallow_rehash setting 2017-03-22 13:41:41 -07:00
hashmap.h hashmap: add disallow_rehash setting 2017-03-22 13:41:41 -07:00
help.c help: improve is_executable() on Windows 2017-01-30 09:04:17 -08:00
help.h
hex.c hex: introduce parse_oid_hex 2017-02-20 01:11:26 -08:00
http-backend.c
http-fetch.c
http-push.c http-push: don't check return value of lookup_unknown_object() 2017-03-18 10:14:07 -07:00
http-walker.c Merge branch 'ew/http-alternates-as-redirects-warning' into maint 2017-03-28 13:52:23 -07:00
http.c Merge branch 'jt/http-base-url-update-upon-redirect' into maint 2017-03-16 13:56:42 -07:00
http.h Merge branch 'jk/http-walker-limit-redirect' into maint 2017-01-17 14:49:29 -08:00
ident.c ident: do not ignore empty config name/email 2017-02-23 12:58:47 -08:00
imap-send.c
iterator.h
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c Merge branch 'vn/line-log-memcpy-size-fix' into maint 2017-03-16 13:56:42 -07:00
line-log.h
line-range.c use SWAP macro 2017-01-30 14:17:00 -08:00
line-range.h
list-objects.c
list-objects.h
list.h
ll-merge.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
ll-merge.h
lockfile.c lockfile: LOCK_REPORT_ON_ERROR 2016-12-07 11:31:59 -08:00
lockfile.h lockfile: move REPORT_ON_ERROR bit elsewhere 2016-12-27 09:12:09 -08:00
log-tree.c pretty: use fmt_output_email_subject() 2017-03-01 15:09:17 -08:00
log-tree.h pretty: use fmt_output_email_subject() 2017-03-01 15:09:17 -08:00
mailinfo.c Merge branch 'jt/mailinfo-fold-in-body-headers' into maint 2017-01-17 15:11:06 -08:00
mailinfo.h
mailmap.c
mailmap.h
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'mm/merge-rename-delete-message' 2017-02-27 13:57:12 -08:00
merge-recursive.h
merge.c lockfile: LOCK_REPORT_ON_ERROR 2016-12-07 11:31:59 -08:00
mergesort.c
mergesort.h
mru.c
mru.h
name-hash.c name-hash: perf improvement for lazy_init_name_hash 2017-03-24 11:00:03 -07:00
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c
notes-utils.h
notes.c
notes.h
object.c use SWAP macro 2017-01-30 14:17:00 -08:00
object.h fetch-pack: cache results of for_each_alternate_ref 2017-02-08 15:39:55 -08:00
oidset.c add oidset API 2017-02-08 15:39:55 -08:00
oidset.h add oidset API 2017-02-08 15:39:55 -08:00
pack-bitmap-write.c odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
pack-bitmap.c
pack-bitmap.h
pack-check.c
pack-objects.c
pack-objects.h pack-objects: enforce --depth limit in reused deltas 2017-01-27 16:24:44 -08:00
pack-revindex.c use SWAP macro 2017-01-30 14:17:00 -08:00
pack-revindex.h
pack-write.c odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
pack.h pack.h: define largest possible encoded object size 2017-03-24 12:34:07 -07:00
pager.c Merge branch 'jk/pager-in-use' 2017-03-28 14:05:59 -07:00
parse-options-cb.c
parse-options.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c path.c: add xdg_cache_home 2017-03-13 14:39:36 -07:00
pathspec.c pathspec: allow escaped query values 2017-03-13 15:28:56 -07:00
pathspec.h pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
pkt-line.c
pkt-line.h
preload-index.c preload-index: avoid lstat for skip-worktree items 2017-02-10 14:44:18 -08:00
pretty.c Merge branch 'rs/log-email-subject' 2017-03-10 13:24:24 -08:00
prio-queue.c use SWAP macro 2017-01-30 14:17:00 -08:00
prio-queue.h
progress.c stop_progress_msg: convert xsnprintf to xstrfmt 2017-02-16 11:28:02 -08:00
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c Convert object iteration callbacks to struct object_id 2017-02-22 10:12:15 -08:00
reachable.h
read-cache.c Merge branch 'cc/split-index-config' 2017-03-17 13:50:23 -07:00
ref-filter.c Merge branch 'jk/ref-filter-flags-cleanup' 2017-03-17 13:50:25 -07:00
ref-filter.h ref-filter: move ref_cbdata definition into ref-filter.c 2017-03-10 11:51:30 -08:00
reflog-walk.c refs: convert each_reflog_ent_fn to struct object_id 2017-02-22 10:12:15 -08:00
reflog-walk.h
refs.c avoid using mksnpath for refs 2017-03-30 14:59:50 -07:00
refs.h Merge branch 'bc/object-id' 2017-03-17 13:50:25 -07:00
remote-curl.c remote-curl: allow push options 2017-03-22 15:41:21 -07:00
remote-testsvn.c
remote.c Merge branch 'jn/remote-helpers-with-git-dir' into maint 2017-03-24 12:57:53 -07:00
remote.h Merge branch 'mm/fetch-show-error-message-on-unadvertised-object' into maint 2017-03-28 13:52:22 -07:00
replace_object.c
rerere.c hold_locked_index(): align error handling with hold_lockfile_for_update() 2016-12-07 11:31:59 -08:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'bc/object-id' 2017-03-17 13:50:25 -07:00
revision.h Merge branch 'rs/path-name-safety-cleanup' into maint 2017-03-28 13:52:27 -07:00
run-command.c Merge branch 'jk/execv-dashed-external' into maint 2017-03-28 13:52:23 -07:00
run-command.h execv_dashed_external: wait for child on signal death 2017-01-09 13:41:40 -08:00
send-pack.c Merge branch 'sb/push-options-via-transport' 2017-03-27 10:59:27 -07:00
send-pack.h
sequencer.c sequencer: fix missing newline 2017-03-23 11:19:23 -07:00
sequencer.h sequencer (rebase -i): learn about the 'verbose' mode 2017-01-09 14:57:29 -08:00
server-info.c
setup.c Merge branch 'rs/strbuf-add-real-path' into maint 2017-03-28 13:52:19 -07:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'jk/pack-name-cleanups' into maint 2017-03-28 13:52:25 -07:00
sha1_name.c Merge branch 'bc/object-id' 2017-03-17 13:50:25 -07:00
shallow.c Merge branch 'nd/shallow-fixup' into maint 2017-01-17 15:11:05 -08:00
shell.c
shortlog.h shortlog: group by committer information 2016-12-15 16:19:13 -08:00
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c split-index: add {add,remove}_split_index() functions 2017-03-01 13:24:21 -08:00
split-index.h split-index: add {add,remove}_split_index() functions 2017-03-01 13:24:21 -08:00
strbuf.c strbuf: add strbuf_add_real_path() 2017-02-27 11:02:06 -08:00
strbuf.h Merge branch 'jk/interpret-branch-name' into maint 2017-03-28 13:52:22 -07:00
streaming.c
streaming.h
string-list.c string-list: use QSORT_S in string_list_sort() 2017-01-23 11:02:38 -08:00
string-list.h
submodule-config.c Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
submodule-config.h update submodules: add submodule config parsing 2017-03-15 18:15:54 -07:00
submodule.c Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
submodule.h Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
symlinks.c
tag.c gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
tag.h
tar.h
tempfile.c tempfile: set errno to a known value before calling ferror() 2017-02-17 14:40:29 -08:00
tempfile.h
thread-utils.c
thread-utils.h
tmp-objdir.c tmp-objdir: quote paths we add to alternates 2016-12-12 15:10:46 -08:00
tmp-objdir.h
trace.c
trace.h
trailer.c trailer: have function to describe trailer layout 2016-11-29 14:22:18 -08:00
trailer.h trailer: have function to describe trailer layout 2016-11-29 14:22:18 -08:00
transport-helper.c Merge branch 'jn/remote-helpers-with-git-dir' into maint 2017-03-24 12:57:53 -07:00
transport.c Merge branch 'mm/fetch-show-error-message-on-unadvertised-object' into maint 2017-03-28 13:52:22 -07:00
transport.h for_each_alternate_ref: pass name/oid instead of ref struct 2017-02-08 15:39:55 -08:00
tree-diff.c
tree-walk.c grep: enable recurse-submodules to work on <tree> objects 2016-12-22 11:47:33 -08:00
tree-walk.h
tree.c
tree.h
unicode_width.h unicode_width.h: update the width tables to Unicode 9.0 2016-12-14 09:48:07 -08:00
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c unpack-trees: check if we can perform the operation for submodules 2017-03-16 14:07:16 -07:00
unpack-trees.h unpack-trees: check if we can perform the operation for submodules 2017-03-16 14:07:16 -07:00
upload-pack.c upload-pack: report "not our ref" to client 2017-02-23 12:14:40 -08:00
url.c
url.h
urlmatch.c urlmatch: allow globbing for the URL host part 2017-02-01 13:22:50 -08:00
urlmatch.h urlmatch: include host in urlmatch ranking 2017-02-01 13:22:46 -08:00
usage.c Merge branch 'jk/vreport-sanitize' 2017-01-31 13:14:56 -08:00
userdiff.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c versioncmp: generalize version sort suffix reordering 2017-01-12 12:25:24 -08:00
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c Merge branch 'rs/strbuf-add-real-path' into maint 2017-03-28 13:52:19 -07:00
worktree.h worktree: check if a submodule uses worktrees 2016-12-12 15:15:07 -08:00
wrap-for-bin.sh
wrapper.c wrapper.c: remove unused gitmkstemps() function 2017-02-28 11:54:21 -08:00
write_or_die.c
ws.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
wt-status.c Merge branch 'sb/wt-status-cleanup' into maint 2017-03-28 13:52:26 -07:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

README.md

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to git@vger.kernel.org (read Documentation/SubmittingPatches for instructions on patch submission). To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org. The mailing list archives are available at https://public-inbox.org/git/, http://marc.info/?l=git and other archival sites.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks