Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Zoltan Klinger f538a91e3c git-clean: Display more accurate delete messages
(1) Only print out the names of the files and directories that got
    actually deleted. Also do not mention that we are not removing
    directories when the user did not ask us to do so with '-d'.
(2) Show ignore message for skipped untracked git repositories.

Consider the following repo layout:

  test.git/
    |-- tracked_dir/
    |     |-- some_tracked_file
    |     |-- some_untracked_file
    |-- tracked_file
    |-- untracked_file
    |-- untracked_foo/
    |     |-- bar/
    |     |     |-- bar.txt
    |     |-- emptydir/
    |     |-- frotz.git/
    |           |-- frotz.tx
    |-- untracked_some.git/
          |-- some.txt

Suppose the user issues 'git clean -fd' from the test.git directory.

When -d option is used and untracked directory 'foo' contains a
subdirectory 'frotz.git' that is managed by a different git repository
therefore it will not be removed.

  $ git clean -fd
  Removing tracked_dir/some_untracked_file
  Removing untracked_file
  Removing untracked_foo/
  Removing untracked_some.git/

The message displayed to the user is slightly misleading. The foo/
directory has not been removed because of foo/frotz.git still exists.
On the other hand the subdirectories 'bar' and 'emptydir' have been
deleted but they're not mentioned anywhere. Also, untracked_some.git
has not been removed either.

This behaviour is the result of the way the deletion of untracked
directories are reported. In the current implementation they are
deleted recursively but only the name of the top most directory is
printed out. The calling function does not know about any
subdirectories that could not be removed during the recursion.

Improve the way the deleted directories are reported back to
the user:
  (1) Create a recursive delete function 'remove_dirs' in builtin/clean.c
      to run in both dry_run and delete modes with the delete logic as
      follows:
        (a) Check if the current directory to be deleted is an untracked
            git repository. If it is and --force --force option is not set
            do not touch this directory, print ignore message, set dir_gone
            flag to false for the caller and return.
        (b) Otherwise for each item in current directory:
              (i)   If current directory cannot be accessed, print warning,
                    set dir_gone flag to false and return.
              (ii)  If the item is a subdirectory recurse into it,
                    check for the returned value of the dir_gone flag.
                    If the subdirectory is gone, add the name of the deleted
                    directory to a list of successfully removed items 'dels'.
                    Else set the dir_gone flag as the current directory
                    cannot be removed because we have at least one subdirectory
                    hanging around.
              (iii) If it is a file try to remove it. If success add the
                    file name to the 'dels' list, else print error and set
                    dir_gone flag to false.
        (c) After we finished deleting all items in the current directory and
            the dir_gone flag is still true, remove the directory itself.
            If failed set the dir_gone flag to false.

        (d) If the current directory cannot be deleted because the dir_gone flag
            has been set to false, print out all the successfully deleted items
            for this directory from the 'dels' list.
        (e) We're done with the current directory, return.

  (2) Modify the cmd_clean() function to:
        (a) call the recursive delete function 'remove_dirs()' for each
            topmost directory it wants to remove
        (b) check for the returned value of dir_gone flag. If it's true
            print the name of the directory as being removed.

Consider the output of the improved version:

  $ git clean -fd
  Removing tracked_dir/some_untracked_file
  Removing untracked_file
  Skipping repository untracked_foo/frotz.git
  Removing untracked_foo/bar
  Removing untracked_foo/emptydir
  Skipping repository untracked_some.git/

Now it displays only the file and directory names that got actually
deleted and shows the name of the untracked git repositories it ignored.

Reported-by: Soren Brinkmann <soren.brinkmann@xilinx.com>

Signed-off-by: Zoltan Klinger <zoltan.klinger@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-14 08:55:36 -08:00
block-sha1 Merge branch 'jn/block-sha1' into maint 2012-08-06 15:40:00 -07:00
builtin git-clean: Display more accurate delete messages 2013-01-14 08:55:36 -08:00
compat Merge branch 'nd/maint-compat-fnmatch-fix' into maint 2012-11-27 13:29:00 -08:00
contrib git-prompt: Document GIT_PS1_DESCRIBE_STYLE 2012-12-11 15:36:13 -08:00
Documentation git.txt: add missing info about --git-dir command-line option 2012-12-13 10:54:01 -08:00
git_remote_helpers
git-gui git-gui 0.17.0 2012-10-17 15:55:46 -07:00
gitk-git Merge branch 'da/gitk-reload-tag-contents' into maint-1.7.11 2012-09-14 20:45:55 -07:00
gitweb Merge branch 'rh/maint-gitweb-highlight-ext' into maint 2012-11-28 12:05:30 -08:00
mergetools Merge branch 'da/mergetools-p4' into maint 2012-11-18 19:31:40 -08:00
perl git svn: work around SVN 1.7 mishandling of svn:special changes 2012-10-10 20:02:33 +00:00
po Merge branch 'master' of https://github.com/nafmo/git-l10n-sv 2012-10-17 09:38:30 +08:00
ppc
t Merge branch 'lt/diff-stat-show-0-lines' into maint 2012-12-07 14:10:17 -08:00
templates
vcs-svn Merge branch 'jn/vcs-svn' 2012-07-13 15:37:04 -07:00
xdiff Merge branch 'rs/xdiff-fast-hash-fix' 2012-05-25 12:05:02 -07:00
.gitattributes
.gitignore Merge branch 'mh/string-list' 2012-09-17 15:53:31 -07:00
.mailmap Update mailmap for a handful of folks 2012-09-03 16:24:23 -07:00
abspath.c real_path(): properly handle nonexistent top-level paths 2012-09-06 16:19:58 -07:00
aclocal.m4
advice.c Merge branch 'jk/maint-advise-vaddf' into maint 2012-07-30 13:05:25 -07:00
advice.h
alias.c
alloc.c
archive-tar.c archive: ustar header checksum is computed unsigned 2012-06-13 10:47:21 -07:00
archive-zip.c archive-zip: write extended timestamp 2012-09-24 10:22:03 -07:00
archive.c Reduce translations by using same terminologies 2012-08-22 12:02:28 -07:00
archive.h archive: delegate blob reading to backend 2012-05-03 10:22:56 -07:00
argv-array.c argv-array: fix bogus cast when freeing array 2012-09-02 21:10:24 -07:00
argv-array.h argv-array: add pop function 2012-09-02 21:10:01 -07:00
attr.c Merge branch 'jc/ll-merge-binary-ours' into maint 2012-10-17 10:26:51 -07:00
attr.h
base85.c
bisect.c Call git_pathdup() rather than xstrdup(git_path("...")) 2012-09-04 13:34:46 -07:00
bisect.h
blob.c
blob.h
branch.c Remove i18n legos in notifying new branch tracking setup 2012-06-07 11:46:02 -07:00
branch.h
builtin.h builtin/notes.c: mark file-scope private symbols as static 2012-09-15 22:58:20 -07:00
bulk-checkin.c
bulk-checkin.h
bundle.c tweak "bundle verify" of a complete history 2012-06-04 16:24:49 -07:00
bundle.h
cache-tree.c
cache-tree.h
cache.h ident.c: mark private file-scope symbols as static 2012-09-15 22:58:21 -07:00
check_bindir
check-builtins.sh
check-racy.c
color.c
color.h
column.c column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
column.h column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c Merge branch 'jk/maint-null-in-trees' into maint-1.7.11 2012-09-10 15:24:54 -07:00
command-list.txt command-list: mention git-credential-* helpers 2012-08-08 12:11:54 -07:00
commit.c Merge branch 'jc/merge-bases-paint-fix' 2012-10-08 11:42:15 -07:00
commit.h commit.c: mark a file-scope private symbol as static 2012-09-15 22:58:20 -07:00
config.c Remove the hard coded length limit on variable names in config files 2012-10-01 12:27:45 -07:00
config.mak.in build: don't duplicate substitution of make variables 2012-09-11 10:24:39 -07:00
configure.ac configure.ac: Add missing comma to CC_LD_DYNPATH 2012-10-09 14:19:37 -07:00
connect.c Merge branch 'jc/capabilities' into maint 2012-09-11 11:06:45 -07:00
connected.c
connected.h
convert.c
convert.h
copy.c
COPYING
credential-cache--daemon.c
credential-cache.c
credential-store.c
credential.c credential: convert "url" attribute into its parsed subparts 2012-07-18 13:26:58 -07:00
credential.h git credential fill: output the whole 'struct credential' 2012-06-25 11:56:24 -07:00
csum-file.c
csum-file.h
ctype.c
daemon.c daemon: --access-hook option 2012-08-15 11:01:55 -07:00
date.c Merge branch 'jc/maint-filter-branch-epoch-date' into maint 2012-07-30 13:04:18 -07:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c diff: do not use null sha1 as a sentinel value 2012-07-29 15:04:32 -07:00
diff-no-index.c Merge branch 'tr/void-diff-setup-done' into maint-1.7.11 2012-09-11 10:53:40 -07:00
diff.c diff --shortstat: do not count "unmerged" entries 2012-11-27 14:19:36 -08:00
diff.h diff.c: mark a private file-scope symbol as static 2012-09-15 22:58:20 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c diff_grep: use textconv buffers for add/deleted files 2012-10-28 07:59:44 -04:00
diffcore-rename.c Merge branch 'jk/maint-null-in-trees' into maint-1.7.11 2012-09-10 15:24:54 -07:00
diffcore.h Merge branch 'jk/maint-null-in-trees' into maint-1.7.11 2012-09-10 15:24:54 -07:00
dir.c warn_on_inaccessible(): a helper to warn on inaccessible paths 2012-08-21 14:52:07 -07:00
dir.h Merge branch 'jc/ls-files-i-dir' into maint 2012-07-11 12:44:35 -07:00
editor.c
entry.c
environment.c git on Mac OS and precomposed unicode 2012-07-08 22:03:46 -07:00
exec_cmd.c
exec_cmd.h
fast-import.c Merge branch 'jc/merge-bases' 2012-09-11 11:36:05 -07:00
fetch-pack.h filter_refs(): delete matched refs from sought list 2012-09-12 11:46:31 -07:00
fixup-builtins
fmt-merge-msg.h
fsck.c Merge branch 'jk/maint-null-in-trees' into maint-1.7.11 2012-09-10 15:24:54 -07:00
fsck.h
generate-cmdlist.sh
gettext.c fetch: align per-ref summary report in UTF-8 locales 2012-09-14 12:45:50 -07:00
gettext.h Merge branch 'nd/fetch-status-alignment' 2012-09-18 14:35:55 -07:00
git-add--interactive.perl git-add--interactive.perl: Remove two unused variables 2012-06-25 10:06:09 -07:00
git-am.sh Merge branch 'nd/am-i18n-fix' 2012-09-07 11:09:04 -07:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'js/format-2047' into maint 2012-11-20 09:57:44 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl cvsimport: strip all inappropriate tag strings 2012-09-06 10:40:09 -07:00
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl difftool: silence warning 2012-08-21 15:27:15 -07:00
git-filter-branch.sh Merge branch 'jc/maint-filter-branch-epoch-date' into maint 2012-07-30 13:04:18 -07:00
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'da/mergetool-custom' 2012-10-01 12:58:57 -07:00
git-mergetool.sh mergetool: style fixes 2012-08-23 21:30:51 -07:00
git-p4.py Merge branch 'pw/maint-p4-rcs-expansion-newline' into maint 2012-11-28 12:04:50 -08:00
git-parse-remote.sh push/pull: adjust missing upstream help text to changed interface 2012-11-08 11:32:38 -05:00
git-pull.sh git-pull: Avoid merge-base on detached head 2012-10-25 05:32:11 -04:00
git-quiltimport.sh
git-rebase--am.sh rebase: don't source git-sh-setup twice 2012-06-26 13:17:50 -07:00
git-rebase--interactive.sh Merge branch 'aw/rebase-i-edit-todo' 2012-09-29 22:28:12 -07:00
git-rebase--merge.sh rebase: don't source git-sh-setup twice 2012-06-26 13:17:50 -07:00
git-rebase.sh rebase -i: Teach "--edit-todo" action 2012-09-17 20:59:14 -07:00
git-relink.perl Consistently use perl from /usr/bin/ for scripts 2012-05-01 13:32:17 -07:00
git-remote-testgit.py
git-repack.sh
git-request-pull.sh request-pull: really favor a matching tag 2012-06-01 12:38:19 -07:00
git-send-email.perl Merge branch 'sb/send-email-reconfirm-fix' into maint 2012-09-14 21:32:07 -07:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'jc/maint-protect-sh-from-ifs' into maint-1.7.11 2012-09-10 15:25:45 -07:00
git-stash.sh Merge branch 'ph/stash-rerere' into maint-1.7.11 2012-09-11 11:10:12 -07:00
git-submodule.sh git-submodule: wrap branch option with "<>" in usage strings. 2012-10-25 04:46:13 -04:00
git-svn.perl git-svn: use path accessor for Git::SVN objects 2012-10-05 22:48:12 +00:00
GIT-VERSION-GEN Git 1.8.0.2 2012-12-10 13:05:47 -08:00
git-web--browse.sh
git.c add 'git credential' plumbing command 2012-06-25 11:55:51 -07:00
git.spec.in
gpg-interface.c ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT 2012-05-24 17:16:41 -07:00
gpg-interface.h
graph.c graph.c: mark private file-scope symbols as static 2012-09-15 22:58:20 -07:00
graph.h graph.c: mark private file-scope symbols as static 2012-09-15 22:58:20 -07:00
grep.c Merge branch 'nd/grep-true-path' into maint 2012-11-18 19:32:30 -08:00
grep.h Merge branch 'nd/grep-true-path' into maint 2012-11-18 19:32:30 -08:00
hash.c
hash.h
help.c help.c::exclude_cmds(): plug a leak 2012-07-25 11:08:59 -07:00
help.h Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
hex.c
http-backend.c
http-fetch.c
http-push.c Merge branch 'jc/merge-bases' 2012-09-11 11:36:05 -07:00
http-walker.c Rename static function fetch_pack() to http_fetch_pack() 2012-09-12 11:46:31 -07:00
http.c Fix potential hang in https handshake 2012-10-19 14:15:17 -07:00
http.h http: fix segfault in handle_curl_result 2012-10-12 09:42:31 -07:00
ident.c ident.c: mark private file-scope symbols as static 2012-09-15 22:58:21 -07:00
imap-send.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
INSTALL INSTALL: update asciidoc recommendation 2012-05-30 09:07:04 -07:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
list-objects.c
list-objects.h
ll-merge.c Merge branch 'jc/ll-merge-binary-ours' into maint 2012-10-17 10:26:51 -07:00
ll-merge.h
lockfile.c
log-tree.c format-patch: refactor get_patch_filename 2012-05-22 09:08:50 -07:00
log-tree.h format-patch: refactor get_patch_filename 2012-05-22 09:08:50 -07:00
mailmap.c mailmap: avoid out-of-bounds memory access 2012-10-28 07:50:18 -04:00
mailmap.h
Makefile Makefile: hide stderr of curl-config test 2012-11-26 10:31:11 -08:00
match-trees.c
merge-file.c sparse: Fix an "symbol 'merge_file' not decared" warning 2011-04-11 10:35:25 -07:00
merge-file.h
merge-recursive.c Merge branch 'rj/path-cleanup' 2012-09-14 11:53:53 -07:00
merge-recursive.h
mergesort.c
mergesort.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c Sync with 1.7.11.6 2012-09-11 11:23:54 -07:00
notes-merge.h
notes.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
notes.h notes.c: mark a private file-scope symbol as static 2012-09-15 22:58:20 -07:00
object.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c Stop starting pager recursively 2012-04-27 09:26:38 -07:00
parse-options-cb.c
parse-options.c git on Mac OS and precomposed unicode 2012-07-08 22:03:46 -07:00
parse-options.h i18n: mark "style" in OPT_COLUMN() for translation 2012-08-20 12:23:14 -07:00
patch-delta.c
patch-ids.c diff_setup_done(): return void 2012-08-03 12:11:07 -07:00
patch-ids.h
path.c path.c: Use vsnpath() in the implementation of git_path() 2012-09-04 13:34:46 -07:00
pkt-line.c remove the impression of unexpectedness when access is denied 2012-06-19 13:37:02 -07:00
pkt-line.h remove the impression of unexpectedness when access is denied 2012-06-19 13:37:02 -07:00
preload-index.c
pretty.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
progress.c
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c read-cache.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
README
reflog-walk.c Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint 2012-05-14 11:46:16 -07:00
reflog-walk.h Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint 2012-05-14 11:46:16 -07:00
refs.c Merge branch 'jh/update-ref-d-through-symref' into maint 2012-11-27 13:28:45 -08:00
refs.h
RelNotes Start preparing for 1.8.0.2 2012-11-28 13:40:02 -08:00
remote-curl.c Merge branch 'jk/maint-http-half-auth-push' into maint 2012-10-17 10:29:24 -07:00
remote.c Merge branch 'jk/push-delete-ref-error-message' into maint 2012-07-22 13:04:25 -07:00
remote.h add sorting infrastructure for list refs 2012-05-22 13:31:03 -07:00
replace_object.c
rerere.c rerere.c: mark private file-scope symbols as static 2012-09-15 22:58:20 -07:00
rerere.h rerere.c: mark private file-scope symbols as static 2012-09-15 22:58:20 -07:00
resolve-undo.c
resolve-undo.h
revision.c log --grep: use the same helper to set -E/-F options as "git grep" 2012-10-09 23:21:29 -07:00
revision.h Merge branch 'mz/cherry-pick-cmdline-order' into maint 2012-09-14 21:24:18 -07:00
run-command.c Merge branch 'dg/run-command-child-cleanup' into maint 2012-09-20 15:55:12 -07:00
run-command.h
send-pack.h
sequencer.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
sequencer.h Merge branch 'jc/make-static' 2012-09-18 14:37:46 -07:00
server-info.c
setup.c Merge branch 'maint-1.7.11' into maint 2012-09-10 15:31:06 -07:00
sh-i18n--envsubst.c
sha1_file.c sha1_file.c: introduce get_max_fd_limit() helper 2012-08-24 09:46:01 -07:00
sha1_name.c Merge branch 'jc/sha1-name-more' 2012-07-22 12:55:07 -07:00
sha1-array.c sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-array.h sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-lookup.c
sha1-lookup.h
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c strbuf.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
strbuf.h strbuf.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
streaming.c pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .." 2012-05-18 14:21:19 -07:00
streaming.h streaming: void pointer instead of char pointer 2012-05-03 10:22:56 -07:00
string-list.c string_list: add a function string_list_longest_prefix() 2012-09-12 11:43:25 -07:00
string-list.h string_list: add a function string_list_longest_prefix() 2012-09-12 11:43:25 -07:00
submodule.c Merge branch 'dj/fetch-all-tags' into maint 2012-09-24 12:39:21 -07:00
submodule.h submodule: use argv_array instead of hand-building arrays 2012-09-02 21:13:50 -07:00
symlinks.c symlinks.c: mark private file-scope symbols as static 2012-09-15 22:58:21 -07:00
tag.c
tag.h
tar.h
test-chmtime.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-line-buffer.c vcs-svn: drop no-op reset methods 2012-07-05 23:26:51 -05:00
test-match-trees.c
test-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-regex.c test-regex: Add a test to check for a bug in the regex routines 2012-09-02 18:57:21 -07:00
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.c test-string-list.c: Fix some sparse warnings 2012-09-15 23:33:58 -07:00
test-subprocess.c
test-svn-fe.c vcs-svn: drop no-op reset methods 2012-07-05 23:26:51 -05:00
thread-utils.c
thread-utils.h
trace.c trace.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
transport-helper.c Add explanatory comment for transport-helpers refs mapping. 2012-07-30 12:22:35 -07:00
transport.c filter_refs(): delete matched refs from sought list 2012-09-12 11:46:31 -07:00
transport.h fetch: align per-ref summary report in UTF-8 locales 2012-09-14 12:45:50 -07:00
tree-diff.c Merge branch 'tr/void-diff-setup-done' into maint-1.7.11 2012-09-11 10:53:40 -07:00
tree-walk.c
tree-walk.h
tree.c Strip namelen out of ce_flags into a ce_namelen field 2012-07-11 09:42:45 -07:00
tree.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'tg/ce-namelen-field' 2012-07-23 20:55:21 -07:00
unpack-trees.h unpack-trees.c: use path_excluded() in check_ok_to_remove() 2012-06-05 22:21:42 -07:00
upload-pack.c include agent identifier in capability string 2012-08-03 13:03:34 -07:00
url.c
url.h
usage.c
userdiff.c Add userdiff patterns for Ada 2012-09-16 21:54:47 -07:00
userdiff.h
utf8.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
utf8.h reencode_string(): introduce and use same_encoding() 2012-11-04 08:10:33 -05:00
varint.c
varint.h
version.c include agent identifier in capability string 2012-08-03 13:03:34 -07:00
version.h include agent identifier in capability string 2012-08-03 13:03:34 -07:00
walker.c
walker.h
wrap-for-bin.sh
wrapper.c warn_on_inaccessible(): a helper to warn on inaccessible paths 2012-08-21 14:52:07 -07:00
write_or_die.c
ws.c
wt-status.c wt-status.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
wt-status.h wt-status.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
xdiff-interface.c xdiff: remove emit_func() and xdi_diff_hunks() 2012-05-09 14:08:42 -07:00
xdiff-interface.h xdiff: remove emit_func() and xdi_diff_hunks() 2012-05-09 14:08:42 -07:00
zlib.c

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

	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/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.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).

Many Git online resources are accessible from http://git-scm.com/
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 (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 http://marc.theaimsgroup.com/?l=git and other archival
sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.