Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Linus Torvalds 6c510bee20 Lazy man's auto-CRLF
It currently does NOT know about file attributes, so it does its
conversion purely based on content. Maybe that is more in the "git
philosophy" anyway, since content is king, but I think we should try to do
the file attributes to turn it off on demand.

Anyway, BY DEFAULT it is off regardless, because it requires a

	[core]
		AutoCRLF = true

in your config file to be enabled. We could make that the default for
Windows, of course, the same way we do some other things (filemode etc).

But you can actually enable it on UNIX, and it will cause:

 - "git update-index" will write blobs without CRLF
 - "git diff" will diff working tree files without CRLF
 - "git checkout" will write files to the working tree _with_ CRLF

and things work fine.

Funnily, it actually shows an odd file in git itself:

	git clone -n git test-crlf
	cd test-crlf
	git config core.autocrlf true
	git checkout
	git diff

shows a diff for "Documentation/docbook-xsl.css". Why? Because we have
actually checked in that file *with* CRLF! So when "core.autocrlf" is
true, we'll always generate a *different* hash for it in the index,
because the index hash will be for the content _without_ CRLF.

Is this complete? I dunno. It seems to work for me. It doesn't use the
filename at all right now, and that's probably a deficiency (we could
certainly make the "is_binary()" heuristics also take standard filename
heuristics into account).

I don't pass in the filename at all for the "index_fd()" case
(git-update-index), so that would need to be passed around, but this
actually works fine.

NOTE NOTE NOTE! The "is_binary()" heuristics are totally made-up by yours
truly. I will not guarantee that they work at all reasonable. Caveat
emptor. But it _is_ simple, and it _is_ safe, since it's all off by
default.

The patch is pretty simple - the biggest part is the new "convert.c" file,
but even that is really just basic stuff that anybody can write in
"Teaching C 101" as a final project for their first class in programming.
Not to say that it's bug-free, of course - but at least we're not talking
about rocket surgery here.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-02-14 11:19:22 -08:00
arm [PATCH] ARM optimized SHA1 implementation 2005-09-20 18:10:00 -07:00
compat Replacing the system call pread() with lseek()/xread()/lseek() sequence. 2007-01-09 16:40:40 -08:00
contrib blameview: Move the commit info to a pane below the blame window. 2007-02-12 19:20:08 -08:00
Documentation Add release notes to the distribution. 2007-02-13 15:15:05 -08:00
git-gui Merge branch 'master' of git://repo.or.cz/git-gui 2007-02-13 13:48:52 -08:00
gitweb gitweb: fix mismatched parenthesis 2007-02-06 01:09:32 -08:00
mozilla-sha1 Fix constness of input in mozilla-sha1/sha1.c::SHA1_Update(). 2005-11-01 14:05:12 -08:00
perl Assorted typo fixes 2007-02-03 21:49:54 -08:00
ppc Assorted typo fixes 2007-02-03 21:49:54 -08:00
t Work around Subversion race in git-svn tests. 2007-02-12 22:17:04 -08:00
templates Fix potential command line overflow in hooks--update 2007-02-13 09:33:09 -08:00
xdiff Fix yet another subtle xdl_merge() bug 2006-12-30 18:05:05 -08:00
.gitignore Remove git-merge-recur 2007-02-06 21:33:20 -08:00
.mailmap .mailmap: fix screw-ups in Uwe's name 2007-01-22 16:25:15 -08:00
alloc.c Add NO_C99_FORMAT to support older compilers. 2006-08-02 00:27:18 -07:00
archive-tar.c Set default "tar" umask to 002 and owner.group to root.root 2007-01-06 10:37:14 -08:00
archive-zip.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
archive.h Remove unsupported C99 style struct initializers in git-archive. 2006-11-04 23:48:36 -08:00
base85.c improve base85 generated assembly code 2006-05-08 11:05:01 -07:00
blob.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
blob.h [PATCH] Anal retentive 'const unsigned char *sha1' 2005-06-08 13:04:53 -07:00
builtin-add.c Make a short-and-sweet "git-add -i" synonym for "git-add --interactive" 2007-01-17 10:52:36 -08:00
builtin-annotate.c annotate: fix for cvsserver. 2007-02-06 01:52:04 -08:00
builtin-apply.c apply --cached: fix crash in subdirectory 2007-01-20 19:05:20 -08:00
builtin-archive.c Make sure git_connect() always give two file descriptors. 2007-01-21 21:51:01 -08:00
builtin-blame.c annotate: fix for cvsserver. 2007-02-06 01:52:04 -08:00
builtin-branch.c Merge branch 'master' into np/dreflog 2007-02-03 23:05:34 -08:00
builtin-cat-file.c Relative timestamps in git log 2006-08-26 19:12:03 -07:00
builtin-check-ref-format.c Further clean-up: usage() vs die() 2006-08-03 21:55:41 -07:00
builtin-checkout-index.c Use PATH_MAX instead of MAXPATHLEN 2006-08-26 17:52:58 -07:00
builtin-commit-tree.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
builtin-config.c [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
builtin-count-objects.c count-objects -v: show number of packs as well. 2006-12-27 01:05:00 -08:00
builtin-describe.c Compute accurate distances in git-describe before output. 2007-01-28 02:08:51 -08:00
builtin-diff-files.c Merge branch 'th/diff-extra' 2006-08-12 19:34:41 -07:00
builtin-diff-index.c Call setup_git_directory() much earlier 2006-07-29 01:34:07 -07:00
builtin-diff-stages.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
builtin-diff-tree.c Call setup_git_directory() much earlier 2006-07-29 01:34:07 -07:00
builtin-diff.c Revert "git-diff: Introduce --index and deprecate --cached." 2006-12-13 02:03:11 -08:00
builtin-fmt-merge-msg.c "git fmt-merge-msg" SIGSEGV 2006-11-16 23:45:57 -08:00
builtin-for-each-ref.c Assorted typo fixes 2007-02-03 21:49:54 -08:00
builtin-fsck.c Merge branch 'master' into np/dreflog 2007-02-03 23:05:34 -08:00
builtin-grep.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
builtin-init-db.c add logref support to git-symbolic-ref 2007-01-28 02:16:46 -08:00
builtin-log.c git reflog show 2007-02-08 15:35:24 -08:00
builtin-ls-files.c Commands requiring a work tree must not run in GIT_DIR 2007-02-05 14:02:16 -08:00
builtin-ls-tree.c remove unnecessary initializations 2006-08-15 21:22:20 -07:00
builtin-mailinfo.c -u is now default for 'git-mailinfo'. 2007-01-09 21:32:49 -08:00
builtin-mailsplit.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-merge-file.c move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00
builtin-mv.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-name-rev.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-pack-objects.c Use fixed-size integers for .idx file I/O 2007-01-18 14:11:50 -08:00
builtin-pack-refs.c Fix seriously broken "git pack-refs" 2007-01-25 19:16:07 -08:00
builtin-prune-packed.c prune-packed: add -q to usage 2007-01-18 14:30:05 -08:00
builtin-prune.c Revert "prune: --grace=time" 2007-01-21 21:29:57 -08:00
builtin-push.c git-push: allow globbing wildcard refspec. 2007-02-06 00:46:56 -08:00
builtin-read-tree.c read-tree: document --exclude-per-directory 2006-12-05 23:44:23 -08:00
builtin-reflog.c git reflog show 2007-02-08 15:35:24 -08:00
builtin-rerere.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
builtin-rev-list.c Teach all of log family --left-right output. 2006-12-17 10:35:28 -08:00
builtin-rev-parse.c Commands requiring a work tree must not run in GIT_DIR 2007-02-05 14:02:16 -08:00
builtin-rm.c git-rm documentation: remove broken behaviour from the example. 2007-01-16 11:50:29 -08:00
builtin-runstatus.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-shortlog.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-show-branch.c show-branch -g: default to the current branch. 2007-02-03 23:34:22 -08:00
builtin-show-ref.c show-ref: fix --exclude-existing 2006-12-18 13:40:25 -08:00
builtin-stripspace.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-symbolic-ref.c add logref support to git-symbolic-ref 2007-01-28 02:16:46 -08:00
builtin-tar-tree.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
builtin-unpack-objects.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
builtin-update-index.c Fix git-update-index to work with relative pathnames. 2007-01-31 13:14:32 -08:00
builtin-update-ref.c lock_any_ref_for_update(): do not accept malformatted refs. 2007-01-29 00:57:07 -08:00
builtin-upload-archive.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
builtin-verify-pack.c Load core configuration in git-verify-pack. 2006-12-29 11:36:45 -08:00
builtin-write-tree.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
builtin.h git reflog show 2007-02-08 15:35:24 -08:00
cache-tree.c Catch errors when writing an index that contains invalid objects. 2006-11-13 14:26:51 -08:00
cache-tree.h write-tree: --prefix=<path> 2006-05-01 22:29:16 -07:00
cache.h Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
check-builtins.sh cherry is built-in, do not ship git-cherry.sh 2006-11-05 11:26:21 -08:00
check-racy.c Add check program "git-check-racy" 2006-08-15 21:38:07 -07:00
color.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
color.h Move color option parsing out of diff.c and into color.[ch] 2006-09-08 16:44:10 -07:00
combine-diff.c combine-diff: special case --unified=0 2007-02-03 16:31:11 -08:00
commit.c Disallow invalid --pretty= abbreviations 2007-02-02 21:18:59 -08:00
commit.h is_repository_shallow(): prototype fix. 2007-01-21 22:22:23 -08:00
config.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
config.mak.in remove merge-recursive-old 2006-11-21 20:55:39 -08:00
configure.ac Remove NO_ACCURATE_DIFF options from build systems 2006-12-22 23:13:28 -08:00
connect.c Make sure git_connect() always give two file descriptors. 2007-01-21 21:51:01 -08:00
convert-objects.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
convert.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
copy.c copy_fd: close ifd on error 2005-12-27 10:49:25 -08:00
COPYING Add a COPYING notice, making it explicit that the license is GPLv2. 2005-04-11 10:18:16 -07:00
csum-file.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
csum-file.h [PATCH] -Werror fixes 2005-08-09 22:28:19 -07:00
ctype.c Unlocalized isspace and friends 2005-10-14 17:17:27 -07:00
daemon.c Assorted typo fixes 2007-02-03 21:49:54 -08:00
date.c show_date(): fix relative dates 2007-01-20 18:57:47 -08:00
delta.h pack-object: slightly more efficient 2006-05-15 12:32:13 -07:00
diff-delta.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
diff-lib.c git-blame: no rev means start from the working tree file. 2007-02-05 14:55:11 -08:00
diff.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
diff.h git-blame: no rev means start from the working tree file. 2007-02-05 14:55:11 -08:00
diffcore-break.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
diffcore-delta.c diffcore-delta: 64-byte-or-EOL ultrafast replacement (hash fix). 2006-03-15 13:19:27 -08:00
diffcore-order.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
diffcore-pickaxe.c diffcore-pickaxe: fix infinite loop on zero-length needle 2007-01-25 21:17:19 -08:00
diffcore-rename.c Bypass expensive content comparsion during rename detection. 2006-12-14 02:40:33 -08:00
diffcore.h diff-index --cached --raw: show tree entry on the LHS for unmerged entries. 2007-01-06 22:57:42 -08:00
dir.c short i/o: fix calls to read to use xread or read_in_full 2007-01-08 15:44:47 -08:00
dir.h Fix 'git add' with .gitignore 2006-12-29 11:01:31 -08:00
dump-cache-tree.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
entry.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
environment.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
exec_cmd.c Use preprocessor constants for environment variable names. 2006-12-19 01:51:51 -08:00
exec_cmd.h Const tightening. 2006-03-05 02:47:29 -08:00
fast-import.c fast-import: Support reusing 'from' and brown paper bag fix reset. 2007-02-12 12:17:31 -05:00
fetch-pack.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
fetch.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
fetch.h Teach git-local-fetch the --stdin switch 2006-07-27 19:33:48 -07:00
generate-cmdlist.sh use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
git-add--interactive.perl git-add -i: update removed path correctly. 2007-02-07 10:56:38 -08:00
git-am.sh Teach git-am to pass -p option down to git-apply 2007-02-11 22:05:36 -08:00
git-applymbox.sh -u is now default for 'git-mailinfo'. 2007-01-09 21:32:49 -08:00
git-applypatch.sh Fix more typos, primarily in the code 2006-07-10 00:36:44 -07:00
git-archimport.perl git-archimport: initial import needs empty directory 2007-02-04 17:05:16 -08:00
git-bisect.sh add replay and log to the usage string of git-bisect 2007-02-06 13:58:03 -08:00
git-checkout.sh Let git-checkout always drop any detached head 2007-02-03 23:06:27 -08:00
git-clean.sh Disallow working directory commands in a bare repository. 2007-01-10 15:03:09 -08:00
git-clone.sh git-clone --reference: work well with pack-ref'ed reference repository 2007-02-07 02:10:56 -08:00
git-commit.sh honor GIT_REFLOG_ACTION in git-commit 2007-02-03 15:17:49 -08:00
git-compat-util.h Use inttypes.h rather than stdint.h. 2007-01-26 00:03:23 -08:00
git-cvsexportcommit.perl Allow forcing of a parent commit, even if the parent is not a direct one. 2007-02-05 14:10:01 -08:00
git-cvsimport.perl Read cvsimport options from repo-config 2007-02-07 23:54:25 -08:00
git-cvsserver.perl [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-fetch.sh "git-fetch --tags $URL" should not overwrite existing tags 2007-02-12 23:31:00 -08:00
git-gc.sh git-gc: run pack-refs by default unless the repo is bare 2007-02-13 09:19:34 -08:00
git-instaweb.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-lost-found.sh git-fsck-objects is now synonym to git-fsck 2007-01-28 16:33:58 -08:00
git-ls-remote.sh Escape --upload-pack from expr. 2007-01-31 13:09:58 -08:00
git-merge-octopus.sh read-tree --aggressive 2006-02-06 21:43:27 -08:00
git-merge-one-file.sh Use git-merge-file in git-merge-one-file, too 2006-12-21 20:33:06 -08:00
git-merge-ours.sh git-merge-ours: make sure our index matches HEAD 2005-11-03 14:55:11 -08:00
git-merge-resolve.sh Assorted typo fixes 2007-02-03 21:49:54 -08:00
git-merge-stupid.sh Use Daniel's read-tree in the merge strategy 'resolve'. 2005-09-10 18:30:41 -07:00
git-merge.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-p4import.py [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-parse-remote.sh Revert "Allow branch.*.merge to talk about remote tracking branches." 2007-02-04 16:58:30 -08:00
git-pull.sh git-pull: disallow implicit merging to detached HEAD 2007-01-15 15:37:22 -08:00
git-quiltimport.sh Assorted typo fixes 2007-02-03 21:49:54 -08:00
git-rebase.sh add -C[NUM] to git-am 2007-02-08 15:23:52 -08:00
git-relink.perl Big tool rename. 2005-09-07 17:45:20 -07:00
git-remote.perl Teach git-remote add to fetch and track 2007-02-05 15:41:59 -08:00
git-repack.sh [PATCH] Rename git-repo-config to git-config. 2007-01-28 16:16:53 -08:00
git-request-pull.sh Pass -M to diff in request-pull 2006-12-04 13:39:27 -08:00
git-reset.sh Shell syntax fix in git-reset 2007-01-18 14:22:24 -08:00
git-resolve.sh merge and resolve: Output short hashes and .. in "Updating ..." 2006-09-30 22:13:28 -07:00
git-revert.sh honor GIT_REFLOG_ACTION in git-commit 2007-02-03 15:17:49 -08:00
git-send-email.perl git-send-email: remove debugging output. 2007-01-30 02:30:25 -08:00
git-sh-setup.sh Commands requiring a work tree must not run in GIT_DIR 2007-02-05 14:02:16 -08:00
git-svn.perl git-svn: correctly handle boolean options via git-config 2007-02-10 22:48:18 -08:00
git-svnimport.perl use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
git-tag.sh Fix git-tag -u 2007-01-30 21:03:11 -08:00
git-verify-tag.sh git-verify-tag: make sure we remove temporary file. 2007-01-03 12:34:20 -08:00
GIT-VERSION-GEN GIT 1.5.0 2007-02-14 00:00:00 +00:00
git.c Allow aliases to expand to shell commands 2007-02-10 22:46:34 -08:00
git.spec.in Update RPM core package description 2007-02-13 10:12:37 -08:00
gitk Make gitk save and restore window pane position on Linux and Cygwin. 2007-02-12 16:40:25 -08:00
grep.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
grep.h grep --all-match 2006-09-27 23:59:09 -07:00
hash-object.c Replace some calls to die(usage_str) with usage(usage_str). 2006-08-03 21:44:13 -07:00
help.c Avoid ugly linewrap in git help 2007-02-11 12:42:01 -08:00
http-fetch.c git-fsck-objects is now synonym to git-fsck 2007-01-28 16:33:58 -08:00
http-push.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
http.c http/ftp: optionally ask curl to not use EPSV command 2006-09-28 19:02:46 -07:00
http.h Work around http-fetch built with cURL 7.16.0 2006-12-27 16:44:30 -08:00
ident.c Rename get_ident() to fmt_ident() and make it available to outside 2007-02-04 17:50:14 -08:00
imap-send.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
index-pack.c index-pack: write-or-die instead of unchecked write-in-full. 2007-01-11 13:19:31 -08:00
INSTALL use 'init' instead of 'init-db' for shipped docs and tools 2007-01-12 13:36:16 -08:00
interpolate.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
interpolate.h do not discard constness in interp_set_entry value argument 2006-09-28 18:25:36 -07:00
list-objects.c pack-objects: further work on internal rev-list logic. 2006-09-07 02:46:02 -07:00
list-objects.h pack-objects: further work on internal rev-list logic. 2006-09-07 02:46:02 -07:00
local-fetch.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
lockfile.c Print a more accurate error message when we fail to create a lock file. 2007-01-06 10:42:49 -08:00
log-tree.c format-patch -n: make sorting easier by padding number 2007-02-08 17:47:38 -08:00
log-tree.h Add msg_sep to diff_options 2006-06-26 14:58:41 -07:00
Makefile Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
merge-base.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
merge-file.c Get rid of the dependency on RCS' merge program 2006-12-12 21:47:29 -08:00
merge-index.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
merge-recursive.c Use pretend_sha1_file() in git-blame and git-merge-recursive. 2007-02-05 14:55:11 -08:00
merge-tree.c Handle invalid argc gently 2006-09-14 11:48:11 -07:00
mktag.c Use xmalloc instead of malloc 2006-08-31 16:24:39 -07:00
mktree.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
object-refs.c Fix git-fsck-objects SIGSEGV/divide-by-zero 2006-09-04 15:24:10 -07:00
object.c Add git-for-each-ref: helper for language bindings 2006-09-16 10:22:02 -07:00
object.h Add git-for-each-ref: helper for language bindings 2006-09-16 10:22:02 -07:00
pack-check.c pack-check.c::verify_packfile(): don't run SHA-1 update on huge data 2007-01-04 22:17:59 -08:00
pack-redundant.c Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length. 2006-08-17 14:23:53 -07:00
pack.h Refactor the pack header reading function out of receive-pack.c 2007-01-24 18:08:02 -08:00
pager.c pager: Work around window resizing bug in 'less' 2007-02-05 15:42:36 -08:00
patch-delta.c make patch_delta() error cases a bit more verbose 2006-12-18 15:30:17 -08:00
patch-id.c Convert memcpy(a,b,20) to hashcpy(a,b). 2006-08-23 13:53:10 -07:00
path-list.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
path-list.h Extract helper bits from c-merge-recursive work 2006-07-26 13:36:36 -07:00
path.c Merge branch 'jc/detached-head' 2007-01-11 16:47:34 -08:00
peek-remote.c rename --exec to --upload-pack for fetch-pack and peek-remote 2007-01-24 16:12:15 -08:00
pkt-line.c make git a bit less cryptic on fetch errors 2006-12-18 15:31:28 -08:00
pkt-line.h Fix pkt-line.h to compile with a non-GCC compiler 2006-06-26 02:11:53 -07:00
quote.c Teach for-each-ref about a little language called Tcl. 2007-01-28 13:00:26 -08:00
quote.h Teach for-each-ref about a little language called Tcl. 2007-01-28 13:00:26 -08:00
reachable.c scan reflogs independently from refs 2007-02-03 11:57:18 -08:00
reachable.h Move traversal of reachable objects into a separate library. 2007-01-06 22:57:34 -08:00
read-cache.c write-cache: do not leak the serialized cache-tree data. 2007-01-11 12:25:16 -08:00
README sanitize content of README file 2007-01-17 12:03:50 -08:00
receive-pack.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
reflog-walk.c log --reflog: use dwim_log 2007-02-08 17:48:22 -08:00
reflog-walk.h log --reflog: honour --relative-date 2007-02-08 16:20:52 -08:00
refs.c for-each-reflog: not having $GIT_DIR/logs directory is not an error. 2007-02-12 23:22:07 -08:00
refs.h scan reflogs independently from refs 2007-02-03 11:57:18 -08:00
RelNotes Add release notes to the distribution. 2007-02-13 15:15:05 -08:00
revision.c Do not forget to pack objects reachable from HEAD reflog. 2007-02-12 23:06:54 -08:00
revision.h Teach the revision walker to walk by reflogs with --walk-reflogs 2007-01-20 21:32:31 -08:00
rsh.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
rsh.h git-ssh-push/pull: usability improvements 2005-06-07 14:23:46 -07:00
run-command.c Use /dev/null for update hook stdin. 2006-12-30 22:22:14 -08:00
run-command.h Use /dev/null for update hook stdin. 2006-12-30 22:22:14 -08:00
send-pack.c Add a missing fork() error check. 2007-01-30 02:30:25 -08:00
server-info.c Don't coredump on bad refs in update-server-info. 2007-01-31 13:09:58 -08:00
setup.c Do not verify filenames in a bare repository 2007-01-20 19:10:26 -08:00
sha1_file.c Lazy man's auto-CRLF 2007-02-14 11:19:22 -08:00
sha1_name.c reflog: handle $name => remotes/%s/HEAD mapping consistently for logs 2007-02-08 23:24:51 -08:00
shallow.c is_repository_shallow(): prototype fix. 2007-01-21 22:22:23 -08:00
shell.c Const tightening. 2006-03-05 02:47:29 -08:00
show-index.c Fix typo in show-index.c 2006-10-20 16:50:36 -07:00
sideband.c atomic write for sideband remote messages 2006-10-11 11:13:01 -07:00
sideband.h atomic write for sideband remote messages 2006-10-11 11:13:01 -07:00
ssh-fetch.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
ssh-pull.c Be more backward compatible with git-ssh-{push,pull}. 2005-09-15 14:56:37 -07:00
ssh-push.c Be more backward compatible with git-ssh-{push,pull}. 2005-09-15 14:56:37 -07:00
ssh-upload.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
strbuf.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
strbuf.h [PATCH] Kill a bunch of pointer sign warnings for gcc4 2005-05-18 08:44:23 -07:00
tag.c Remove TYPE_* constant macros and use object_type enums consistently. 2006-07-12 23:18:03 -07:00
tag.h Be careful when dereferencing tags. 2005-11-02 16:50:58 -08:00
tar.h tar-tree: Introduce write_entry() 2006-03-25 16:35:43 -08:00
test-date.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
test-delta.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
test-sha1.c test-sha1: test hashing large buffer 2006-06-24 02:59:20 -07:00
test-sha1.sh test-sha1: test hashing large buffer 2006-06-24 02:59:20 -07:00
trace.c short i/o: clean up the naming for the write_{in,or}_xxx family 2007-01-08 15:44:47 -08:00
tree-diff.c Make git-cherry handle root trees 2006-10-26 18:31:17 -07:00
tree-walk.c get_tree_entry: map blank requested entry to tree root 2007-01-09 14:08:41 -08:00
tree-walk.h tree_entry(): new tree-walking helper function 2006-05-30 23:03:01 -07:00
tree.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
tree.h Remove last vestiges of generic tree_entry_list 2006-05-29 19:08:37 -07:00
unpack-file.c short i/o: fix calls to write to use xwrite or write_in_full 2007-01-08 15:44:47 -08:00
unpack-trees.c simplify inclusion of system header files. 2006-12-20 09:51:35 -08:00
unpack-trees.h read-tree: further loosen "working file will be lost" check. 2006-12-05 23:25:52 -08:00
update-server-info.c Make the rest of commands work from a subdirectory. 2005-11-28 23:13:02 -08:00
upload-pack.c shallow repository: disable unsupported operations for now. 2007-01-21 22:23:58 -08:00
usage.c Introduce a global level warn() function. 2006-12-21 22:59:34 -08:00
utf8.c commit-tree: cope with different ways "utf-8" can be spelled. 2006-12-30 15:58:43 -08:00
utf8.h commit-tree: cope with different ways "utf-8" can be spelled. 2006-12-30 15:58:43 -08:00
var.c Don't force everybody to call setup_ident(). 2007-01-28 01:58:50 -08:00
write_or_die.c write_in_full: size_t is unsigned. 2007-01-26 17:39:03 -08:00
wt-status.c wt_status_prepare(): clean up structure initialization. 2007-02-09 16:26:02 -08:00
wt-status.h Provide better feedback for the untracked only case in status output 2007-01-10 14:29:21 -08:00
xdiff-interface.c move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00
xdiff-interface.h move read_mmfile() into xdiff-interface 2006-12-21 23:10:14 -08:00

////////////////////////////////////////////////////////////////

	GIT - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, 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

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.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.
See Documentation/tutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands,
and "man git-commandname" for documentation of each command.
CVS users may also want to read Documentation/cvs-migration.txt.

Many Git online resources are accessible from http://git.or.cz/
including full documentation and Git related tools.

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. 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
http://marc.theaimsgroup.com/?l=git and other archival sites.