Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Jeff King 82ef89b318 fsck: don't require object structs for display functions
Our printable_type() and describe_object() functions take whole object
structs, but they really only care about the oid and type. Let's take
those individually in order to give our callers more flexibility.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-10-28 14:05:18 +09:00
.github
block-sha1
builtin fsck: don't require object structs for display functions 2019-10-28 14:05:18 +09:00
ci Merge branch 'dl/honor-cflags-in-hdr-check' 2019-10-07 11:33:02 +09:00
compat Merge branch 'dl/compat-cleanup' 2019-10-18 11:40:47 +09:00
contrib Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
Documentation Git 2.24-rc0 2019-10-18 11:40:50 +09:00
ewah
git-gui Merge branch 'master' of https://github.com/prati0100/git-gui 2019-09-18 11:22:11 -07:00
gitk-git Merge gitk to pick up emergency build fix 2019-09-17 14:59:18 -07:00
gitweb
mergetools
negotiator
perl git-svn: trim leading and trailing whitespaces in author name 2019-09-28 13:51:42 +09:00
po gitk: rename zh_CN.po to zh_cn.po 2019-09-17 14:58:12 -07:00
ppc
refs Merge branch 'sc/pack-refs-deletion-racefix' 2019-08-22 12:34:10 -07:00
sha1collisiondetection@855827c583
sha1dc
sha256
t fsck: unify object-name code 2019-10-28 14:05:17 +09:00
templates git-merge: honor pre-merge-commit hook 2019-08-07 12:37:33 -07:00
trace2 trace2: write discard message to sentinel files 2019-10-05 17:53:51 +09:00
vcs-svn
xdiff xdiffi: fix typos and touch up comments 2019-10-09 10:58:34 +09:00
.clang-format
.editorconfig
.gitattributes
.gitignore Merge branch 'dl/honor-cflags-in-hdr-check' 2019-10-07 11:33:02 +09:00
.gitmodules
.mailmap .mailmap: update email address of Andrey Mazo 2019-09-20 22:21:28 -07:00
.travis.yml
.tsan-suppressions
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alias.h
alloc.c
alloc.h
apply.c Merge branch 'tg/range-diff-output-update' 2019-10-15 13:48:02 +09:00
apply.h apply.h: include missing header 2019-09-28 14:04:16 +09:00
archive-tar.c Merge branch 'rs/pax-extended-header-length-fix' 2019-09-09 12:26:37 -07:00
archive-zip.c
archive.c
archive.h
argv-array.c Merge branch 'ma/unpack-trees-free-msgs' 2018-05-30 21:51:29 +09:00
argv-array.h
attr.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
attr.h
azure-pipelines.yml Merge branch 'js/azure-pipelines-msvc' 2019-10-15 13:48:00 +09:00
banned.h banned.h: fix vsprintf()'s ban message 2019-08-26 10:32:45 -07:00
base85.c
bisect.c bisect: switch to using the_hash_algo 2019-08-19 15:04:58 -07:00
bisect.h
blame.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
blame.h
blob.c
blob.h
branch.c
branch.h
builtin.h
bulk-checkin.c bulk-checkin: zero-initialize hashfile_checkpoint 2019-09-06 11:03:39 -07:00
bulk-checkin.h
bundle.c bundle: switch to use the_hash_algo 2019-08-19 15:04:58 -07:00
bundle.h
cache-tree.c Merge branch 'en/merge-recursive-cleanup' 2019-10-15 13:47:59 +09:00
cache-tree.h cache-tree: share code between functions writing an index as a tree 2019-08-19 10:08:03 -07:00
cache.h Merge branch 'js/azure-pipelines-msvc' 2019-10-15 13:48:00 +09:00
chdir-notify.c
chdir-notify.h
check_bindir
check-builtins.sh
checkout.c
checkout.h
CODE_OF_CONDUCT.md CODE_OF_CONDUCT: mention individual project-leader emails 2019-10-10 10:41:46 +09:00
color.c
color.h
column.c column: use utf8_strnwidth() to strip out ANSI color escapes 2019-10-15 10:54:15 +09:00
column.h
combine-diff.c combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo 2019-08-19 15:04:58 -07:00
command-list.txt
commit-graph.c commit, tag: don't set parsed bit for parse failures 2019-10-28 14:04:49 +09:00
commit-graph.h upload-pack: disable commit graph more gently for shallow traversal 2019-09-12 12:30:08 -07:00
commit-reach.c
commit-reach.h
commit-slab-decl.h
commit-slab-impl.h
commit-slab.h
commit.c commit, tag: don't set parsed bit for parse failures 2019-10-28 14:04:49 +09:00
commit.h
common-main.c common-main: delay trace2 initialization 2019-08-06 13:09:01 -07:00
config.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
config.h
config.mak.dev
config.mak.in
config.mak.uname vcxproj: include more generated files 2019-10-06 09:07:44 +09:00
configure.ac
connect.c mingw: support UNC in git clone file://server/share/repo 2019-08-26 10:00:33 -07:00
connect.h
connected.c Merge branch 'bc/object-id-part17' 2019-10-11 14:24:46 +09:00
connected.h
convert.c Merge branch 'rs/convert-fix-utf-without-dash' 2019-10-09 14:01:00 +09:00
convert.h am: reload .gitattributes after patching it 2019-09-03 15:16:18 -07:00
copy.c
COPYING
credential-cache--daemon.c
credential-cache.c
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c Quit passing 'now' to date code 2019-09-12 11:03:51 -07:00
decorate.c
decorate.h
delta-islands.c
delta-islands.h
delta.h
detect-compiler Makefile: detect compiler and enable more warnings in DEVELOPER=1 2018-04-16 13:54:53 +09:00
diff-delta.c diff-delta: set size out-parameter to 0 for NULL delta 2019-09-06 11:03:39 -07:00
diff-lib.c
diff-no-index.c
diff.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
diff.h patch-id: convert to use the_hash_algo 2019-08-19 15:04:57 -07:00
diffcore-break.c diffcore-break: use a goto instead of a redundant if statement 2019-10-02 15:04:21 +09:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
diffcore.h
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'en/clean-nested-with-ignored' 2019-10-11 14:24:46 +09:00
dir.h Merge branch 'en/clean-nested-with-ignored' 2019-10-11 14:24:46 +09:00
editor.c
entry.c
environment.c Move core_partial_clone_filter_default to promisor-remote.c 2019-06-25 14:05:38 -07:00
exec-cmd.c
exec-cmd.h
fast-import.c Merge branch 'en/fast-imexport-nested-tags' 2019-10-15 13:48:00 +09:00
fetch-negotiator.c repo-settings: create feature.experimental setting 2019-08-13 13:33:55 -07:00
fetch-negotiator.h repo-settings: create feature.experimental setting 2019-08-13 13:33:55 -07:00
fetch-pack.c Merge branch 'js/trace2-fetch-push' 2019-10-15 13:48:03 +09:00
fetch-pack.h
fmt-merge-msg.h
fsck.c fsck: use oids rather than objects for object_name API 2019-10-28 14:05:18 +09:00
fsck.h fsck: use oids rather than objects for object_name API 2019-10-28 14:05:18 +09:00
fsmonitor.c Merge branch 'cb/fsmonitor-intfix' into maint 2019-07-29 12:38:15 -07:00
fsmonitor.h
fuzz-commit-graph.c
fuzz-pack-headers.c
fuzz-pack-idx.c
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl add -i: show progress counter in the prompt 2019-10-04 07:12:19 +09:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'bb/compat-util-comment-fix' 2019-10-18 11:40:48 +09:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh Recommend git-filter-repo instead of git-filter-branch 2019-09-05 13:01:48 -07:00
git-instaweb.sh
git-legacy-stash.sh stash: avoid recursive hard reset on submodules 2019-10-15 10:34:44 +09:00
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-p4.py git-p4: auto-delete named temporary file 2019-10-06 20:43:37 +09:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--preserve-merges.sh rebase: fold git-rebase--common into the -p backend 2019-07-31 12:24:06 -07:00
git-request-pull.sh
git-send-email.perl
git-sh-i18n.sh
git-sh-setup.sh
git-submodule.sh
git-svn.perl
GIT-VERSION-GEN Git 2.24-rc0 2019-10-18 11:40:50 +09:00
git-web--browse.sh
git.c git: use COPY_ARRAY and MOVE_ARRAY in handle_alias() 2019-09-20 11:11:26 -07:00
git.rc
gpg-interface.c
gpg-interface.h
graph.c
graph.h
grep.c Merge branch 'cb/pcre1-cleanup' 2019-10-11 14:24:47 +09:00
grep.h Merge branch 'cb/pcre1-cleanup' 2019-10-11 14:24:47 +09:00
hash.h
hashmap.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
hashmap.h hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
help.c Merge branch 'rs/help-unknown-ref-does-not-return' 2019-09-30 13:19:27 +09:00
help.h help: make help_unknown_ref() NORETURN 2019-08-30 10:22:42 -07:00
hex.c
http-backend.c
http-fetch.c
http-push.c http-push: simplify deleting a list item 2019-10-15 10:53:50 +09:00
http-walker.c
http.c Merge branch 'mh/http-urlmatch-cleanup' 2019-09-30 13:19:24 +09:00
http.h http: use xmalloc with cURL 2019-08-15 12:37:10 -07:00
ident.c
imap-send.c
INSTALL
interdiff.c
interdiff.h
iterator.h
json-writer.c
json-writer.h
khash.h
kwset.c Merge branch 'rs/copy-array' into maint 2019-07-29 12:38:15 -07:00
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c Merge branch 'sg/line-log-tree-diff-optim' 2019-09-18 11:50:09 -07:00
line-log.h
line-range.c
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c Merge branch 'jk/partial-clone-sparse-blob' 2019-10-07 11:32:54 +09:00
list-objects-filter-options.h Merge branch 'jk/partial-clone-sparse-blob' 2019-10-07 11:32:54 +09:00
list-objects-filter.c Merge branch 'jk/partial-clone-sparse-blob' 2019-10-07 11:32:54 +09:00
list-objects-filter.h
list-objects.c Merge branch 'jk/list-objects-optim-wo-trees' 2019-10-07 11:32:56 +09:00
list-objects.h list-objects: consume sparse tree walk 2019-01-17 13:44:39 -08:00
list.h
ll-merge.c am: reload .gitattributes after patching it 2019-09-03 15:16:18 -07:00
ll-merge.h am: reload .gitattributes after patching it 2019-09-03 15:16:18 -07:00
lockfile.c
lockfile.h
log-tree.c Merge branch 'rs/simplify-by-deco-with-deco-refs-exclude' 2019-10-07 11:32:54 +09:00
log-tree.h
ls-refs.c
ls-refs.h
mailinfo.c mailinfo: support format=flowed 2018-08-29 13:05:35 -07:00
mailinfo.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
mailmap.c
mailmap.h
Makefile Merge branch 'dl/allow-running-cocci-verbosely' 2019-10-18 11:40:48 +09:00
match-trees.c
mem-pool.c
mem-pool.h
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
merge-recursive.h hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
merge.c
mergesort.c
mergesort.h
midx.c midx: switch to using the_hash_algo 2019-08-19 15:05:00 -07:00
midx.h
name-hash.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c
notes-utils.h
notes.c Merge branch 'mh/notes-duplicate-entries' 2019-09-30 13:19:25 +09:00
notes.h
object-store.h Merge branch 'ds/object-info-for-prefetch-fix' into maint 2019-07-25 14:27:08 -07:00
object.c treewide: remove duplicate #include directives 2019-10-04 08:16:00 +09:00
object.h
oidmap.c hashmap: introduce hashmap_free_entries 2019-10-07 10:20:11 +09:00
oidmap.h hashmap: use *_entry APIs for iteration 2019-10-07 10:20:11 +09:00
oidset.c
oidset.h
pack-bitmap-write.c pack-objects: drop packlist index_pos optimization 2019-09-06 11:03:42 -07:00
pack-bitmap.c Merge branch 'jk/misc-uninitialized-fixes' 2019-09-30 13:19:30 +09:00
pack-bitmap.h pack-bitmap.h: remove magic number 2019-09-28 14:04:20 +09:00
pack-check.c
pack-objects.c pack-objects: drop packlist index_pos optimization 2019-09-06 11:03:42 -07:00
pack-objects.h pack-objects: drop packlist index_pos optimization 2019-09-06 11:03:42 -07:00
pack-revindex.c
pack-revindex.h
pack-write.c pack-write: use hash_to_hex when writing checksums 2019-08-19 15:04:58 -07:00
pack.h
packfile.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
packfile.h Merge branch 'ds/midx-expire-repack' 2019-09-09 12:26:38 -07:00
pager.c
parse-options-cb.c
parse-options.c parse-options: allow --end-of-options as a synonym for "--" 2019-08-06 13:05:39 -07:00
parse-options.h Merge branch 'nd/diff-parseopt' 2019-09-09 12:26:38 -07:00
patch-delta.c
patch-ids.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
patch-ids.h
path.c path: add a function to check for path suffix 2019-08-26 10:36:13 -07:00
path.h path: add a function to check for path suffix 2019-08-26 10:36:13 -07:00
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
pretty.c log-tree: call load_ref_decorations() in get_name_decoration() 2019-09-09 11:16:40 -07:00
pretty.h
prio-queue.c
prio-queue.h
progress.c Test the progress display 2019-09-17 09:39:16 -07:00
progress.h
promisor-remote.c promisor-remote: skip move_to_tail when no-op 2019-10-02 14:56:54 +09:00
promisor-remote.h Merge branch 'dl/honor-cflags-in-hdr-check' 2019-10-07 11:33:02 +09:00
prompt.c
prompt.h
protocol.c
protocol.h
quote.c Merge branch 'gs/sq-quote-buf-pretty' 2019-10-15 13:48:02 +09:00
quote.h quote: add sq_append_quote_argv_pretty() 2019-08-09 10:48:02 -07:00
range-diff.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
range-diff.h
reachable.c
reachable.h
read-cache.c Merge branch 'js/azure-pipelines-msvc' 2019-10-15 13:48:00 +09:00
README.md
rebase-interactive.c
rebase-interactive.h
ref-filter.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
ref-filter.h
reflog-walk.c
reflog-walk.h
refs.c hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
refs.h
refspec.c
refspec.h
RelNotes First batch after Git 2.23 2019-08-22 12:41:04 -07:00
remote-curl.c remote-curl: use argv_array in parse_push() 2019-10-15 10:55:11 +09:00
remote-testsvn.c
remote.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
remote.h hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
replace-object.c
replace-object.h
repo-settings.c fetch: add fetch.writeCommitGraph config setting 2019-09-03 12:06:14 -07:00
repository.c
repository.h Merge branch 'jk/disable-commit-graph-during-upload-pack' 2019-10-07 11:32:55 +09:00
rerere.c rerere: replace sha1_to_hex 2019-08-19 15:04:59 -07:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
revision.h
run-command.c
run-command.h
send-pack.c send-pack: never fetch when checking exclusions 2019-10-09 10:46:41 +09:00
send-pack.h
sequencer.c Merge branch 'ew/hashmap' 2019-10-15 13:48:02 +09:00
sequencer.h Merge branch 'js/rebase-r-strategy' 2019-09-18 11:50:07 -07:00
serve.c
serve.h
server-info.c
setup.c Merge branch 'js/gitdir-at-unc-root' 2019-09-30 13:19:26 +09:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-file.c Merge branch 'bc/object-id-part17' 2019-10-11 14:24:46 +09:00
sha1-lookup.c Merge branch 'js/azure-pipelines-msvc' 2019-10-15 13:48:00 +09:00
sha1-lookup.h
sha1-name.c Merge branch 'rs/nth-switch-code-simplification' 2019-10-07 11:33:00 +09:00
sha1dc_git.c
sha1dc_git.h
shallow.c Merge branch 'rs/dedup-includes' 2019-10-11 14:24:48 +09:00
shell.c
shortlog.h
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c
split-index.h
stable-qsort.c Move git_sort(), a stable sort, into into libgit.a 2019-10-02 14:44:51 +09:00
strbuf.c Merge branch 'md/list-objects-filter-combo' 2019-09-18 11:50:09 -07:00
strbuf.h Merge branch 'md/list-objects-filter-combo' 2019-09-18 11:50:09 -07:00
streaming.c
streaming.h
string-list.c
string-list.h
sub-process.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
sub-process.h hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
submodule-config.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
submodule-config.h
submodule.c
submodule.h
symlinks.c
tag.c commit, tag: don't set parsed bit for parse failures 2019-10-28 14:04:49 +09:00
tag.h tag: factor out get_tagged_oid() 2019-09-05 14:10:18 -07:00
tar.h
tempfile.c
tempfile.h
thread-utils.c
thread-utils.h
tmp-objdir.c Replace all die("BUG: ...") calls by BUG() ones 2018-05-06 19:06:13 +09:00
tmp-objdir.h
trace2.c
trace2.h
trace.c packfile: drop release_pack_memory() 2019-08-13 12:21:33 -07:00
trace.h
trailer.c
trailer.h
transport-helper.c Merge branch 'jt/avoid-ls-refs-with-http' 2019-09-18 11:50:10 -07:00
transport-internal.h transport: teach all vtables to allow fetch first 2019-08-22 14:20:39 -07:00
transport.c transport: push codepath can take arbitrary repository 2019-10-08 13:20:01 +09:00
transport.h
tree-diff.c
tree-walk.c Merge branch 'jk/tree-walk-overflow' 2019-08-22 12:34:10 -07:00
tree-walk.h Merge branch 'jk/tree-walk-overflow' 2019-08-22 12:34:10 -07:00
tree.c tree: simplify parse_tree_indirect() 2019-09-03 15:10:53 -07:00
tree.h
unicode-width.h Merge branch 'bb/unicode-12.1-reiwa' into maint 2019-07-25 14:27:11 -07:00
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c treewide: remove duplicate #include directives 2019-10-04 08:16:00 +09:00
unpack-trees.h treewide: rename 'struct exclude_list' to 'struct pattern_list' 2019-09-05 14:05:11 -07:00
upload-pack.c Merge branch 'jk/disable-commit-graph-during-upload-pack' 2019-10-07 11:32:55 +09:00
upload-pack.h
url.c
url.h
urlmatch.c
urlmatch.h
usage.c
userdiff.c userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
userdiff.h
utf8.c utf8: use ARRAY_SIZE() in git_wcwidth() 2019-10-12 10:57:39 +09:00
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c Merge branch 'nd/corrupt-worktrees' into maint 2019-07-25 14:27:07 -07:00
worktree.h
wrap-for-bin.sh
wrapper.c Merge branch 'ah/cleanups' 2019-10-09 14:01:00 +09:00
write-or-die.c
ws.c
wt-status.c Merge branch 'bc/object-id-part17' 2019-10-11 14:24:46 +09:00
wt-status.h wt-status: convert struct wt_status to object_id 2019-08-19 15:04:59 -07:00
xdiff-interface.c
xdiff-interface.h
zlib.c

Build Status

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-<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).

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.

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

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