Go to file
Jeff King f0eaf63819 sha1-file: use an object_directory for the main object dir
Our handling of alternate object directories is needlessly different
from the main object directory. As a result, many places in the code
basically look like this:

  do_something(r->objects->objdir);

  for (odb = r->objects->alt_odb_list; odb; odb = odb->next)
        do_something(odb->path);

That gets annoying when do_something() is non-trivial, and we've
resorted to gross hacks like creating fake alternates (see
find_short_object_filename()).

Instead, let's give each raw_object_store a unified list of
object_directory structs. The first will be the main store, and
everything after is an alternate. Very few callers even care about the
distinction, and can just loop over the whole list (and those who care
can just treat the first element differently).

A few observations:

  - we don't need r->objects->objectdir anymore, and can just
    mechanically convert that to r->objects->odb->path

  - object_directory's path field needs to become a real pointer rather
    than a FLEX_ARRAY, in order to fill it with expand_base_dir()

  - we'll call prepare_alt_odb() earlier in many functions (i.e.,
    outside of the loop). This may result in us calling it even when our
    function would be satisfied looking only at the main odb.

    But this doesn't matter in practice. It's not a very expensive
    operation in the first place, and in the majority of cases it will
    be a noop. We call it already (and cache its results) in
    prepare_packed_git(), and we'll generally check packs before loose
    objects. So essentially every program is going to call it
    immediately once per program.

    Arguably we should just prepare_alt_odb() immediately upon setting
    up the repository's object directory, which would save us sprinkling
    calls throughout the code base (and forgetting to do so has been a
    source of subtle bugs in the past). But I've stopped short of that
    here, since there are already a lot of other moving parts in this
    patch.

  - Most call sites just get shorter. The check_and_freshen() functions
    are an exception, because they have entry points to handle local and
    nonlocal directories separately.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-11-13 14:22:03 +09:00
.github
Documentation Ninth batch for 2.20 2018-11-06 15:51:23 +09:00
block-sha1
builtin sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
ci ci: add optional test variables 2018-10-19 09:21:28 +09:00
compat Merge branch 'js/mingw-ns-filetime' 2018-11-06 15:50:21 +09:00
contrib Merge branch 'nd/completion-negation' 2018-11-06 15:50:20 +09:00
ewah ewok_rlw.h: add missing 'inline' to function definition 2018-10-29 10:14:19 +09:00
git-gui
gitk-git
gitweb
mergetools
negotiator
perl
po l10n: zh_CN: for git v2.19.0 l10n round 1 to 2 2018-09-09 22:38:39 +08:00
ppc
refs Merge branch 'bc/hash-transition-part-15' 2018-10-30 15:43:42 +09:00
sha1collisiondetection@232357eb2e
sha1dc
t Merge branch 'sg/test-verbose-log' 2018-11-06 15:50:23 +09:00
templates
vcs-svn headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
xdiff Merge branch 'sb/indent-heuristic-optim' 2018-08-17 13:09:57 -07:00
.clang-format editorconfig: indicate settings should be kept in sync 2018-10-09 18:34:15 +09:00
.editorconfig editorconfig: indicate settings should be kept in sync 2018-10-09 18:34:15 +09:00
.gitattributes .gitattributes: add conflict-marker-size for relevant files 2018-08-29 11:27:31 -07:00
.gitignore Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
.gitmodules
.mailmap Merge branch 'jn/mailmap-update' 2018-10-16 16:16:01 +09:00
.travis.yml travis-ci: no longer use containers 2018-10-26 13:32:43 +09:00
.tsan-suppressions
COPYING
GIT-VERSION-GEN Git 2.19.1 2018-09-27 11:52:33 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
README.md
RelNotes Declare that the next one will be named 2.20 2018-10-10 09:20:03 +09:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alias.h headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
alloc.c alloc: make allocate_alloc_state and clear_alloc_state more consistent 2018-08-15 11:52:09 -07:00
alloc.h alloc: make allocate_alloc_state and clear_alloc_state more consistent 2018-08-15 11:52:09 -07:00
apply.c Merge branch 'bc/hash-transition-part-15' 2018-10-30 15:43:42 +09:00
apply.h Merge branch 'en/incl-forward-decl' 2018-08-20 12:41:32 -07:00
archive-tar.c Merge branch 'nd/no-the-index' 2018-08-20 11:33:53 -07:00
archive-zip.c userdiff.c: remove implicit dependency on the_index 2018-09-21 09:50:58 -07:00
archive.c archive: initialize archivers earlier 2018-10-26 10:17:59 +09:00
archive.h archive: initialize archivers earlier 2018-10-26 10:17:59 +09:00
argv-array.c
argv-array.h
attr.c Make git_check_attr() a void function 2018-09-12 15:15:34 -07:00
attr.h Make git_check_attr() a void function 2018-09-12 15:15:34 -07:00
banned.h
base85.c
bisect.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
bisect.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
blame.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
blame.h blame.c: remove implicit dependency on the_index 2018-08-13 14:14:44 -07:00
blob.c
blob.h
branch.c Merge branch 'ab/unconditional-free-and-null' 2018-08-27 14:33:42 -07:00
branch.h Move definition of enum branch_track from cache.h to branch.h 2018-08-15 11:52:09 -07:00
builtin.h Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
bulk-checkin.c convert "oidcmp() == 0" to oideq() 2018-08-29 11:32:49 -07:00
bulk-checkin.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
bundle.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
bundle.h
cache-tree.c Merge branch 'jt/cache-tree-allow-missing-object-in-partial-clone' 2018-10-19 13:34:08 +09:00
cache-tree.h Merge branch 'nd/unpack-trees-with-cache-tree' 2018-09-17 13:53:53 -07:00
cache.h Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
chdir-notify.c
chdir-notify.h
check-builtins.sh
check-racy.c
check_bindir
checkout.c
checkout.h
color.c
color.h range-diff: use dim/bold cues to improve dual color mode 2018-08-13 10:44:52 -07:00
column.c
column.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
combine-diff.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
command-list.txt Merge branch 'du/cherry-is-plumbing' 2018-10-26 14:22:14 +09:00
commit-graph.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
commit-graph.h Merge branch 'ds/commit-graph-with-grafts' 2018-10-16 16:15:59 +09:00
commit-reach.c Merge branch 'ds/reachable' 2018-10-30 15:43:47 +09:00
commit-reach.h Merge branch 'rj/header-cleanup' 2018-11-06 15:50:23 +09:00
commit-slab-decl.h
commit-slab-impl.h commit-slabs: move MAYBE_UNUSED out 2018-10-24 14:52:50 +09:00
commit-slab.h
commit.c Merge branch 'pk/rebase-in-c-4-opts' 2018-11-02 11:04:55 +09:00
commit.h Merge branch 'js/shallow-and-fetch-prune' 2018-11-06 15:50:18 +09:00
common-main.c
config.c Merge branch 'bp/read-cache-parallel' 2018-10-19 13:34:03 +09:00
config.h config: add new index.threads config setting 2018-10-11 15:32:48 +09:00
config.mak.dev Merge branch 'jk/unused-function' 2018-10-30 15:43:46 +09:00
config.mak.in
config.mak.uname mingw: implement nanosecond-precision file times 2018-10-24 13:18:14 +09:00
configure.ac
connect.c convert "oidcmp() == 0" to oideq() 2018-08-29 11:32:49 -07:00
connect.h
connected.c
connected.h connected: document connectivity in partial clones 2018-09-21 13:20:47 -07:00
convert.c Make git_check_attr() a void function 2018-09-12 15:15:34 -07:00
convert.h Merge branch 'en/incl-forward-decl' 2018-08-20 12:41:32 -07:00
copy.c
credential-cache--daemon.c
credential-cache.c
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
ctype.c
daemon.c
date.c
decorate.c
decorate.h
delta-islands.c pack-objects: move 'layer' into 'struct packing_data' 2018-08-16 10:56:44 -07:00
delta-islands.h delta-islands.h: add missing forward declarations (hdr-check) 2018-09-20 11:50:43 -07:00
delta.h
detect-compiler
diff-delta.c
diff-lib.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diff-no-index.c diff.c: remove implicit dependency on the_index 2018-09-21 09:48:10 -07:00
diff.c Merge branch 'js/diff-notice-has-drive-prefix' 2018-10-30 15:43:45 +09:00
diff.h Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diffcore-break.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diffcore-delta.c diff.c: reduce implicit dependency on the_index 2018-09-21 09:48:10 -07:00
diffcore-order.c
diffcore-pickaxe.c userdiff.c: remove implicit dependency on the_index 2018-09-21 09:50:58 -07:00
diffcore-rename.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diffcore.h diff.c: reduce implicit dependency on the_index 2018-09-21 09:48:10 -07:00
dir-iterator.c
dir-iterator.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
dir.c Merge branch 'jk/cocci' 2018-09-17 13:53:57 -07:00
dir.h dir.c: remove an implicit dependency on the_index in pathspec code 2018-08-13 14:14:42 -07:00
editor.c
entry.c Merge branch 'nd/clone-case-smashing-warning' 2018-09-17 13:53:47 -07:00
environment.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
exec-cmd.c
exec-cmd.h
fast-import.c Merge branch 'jk/cocci' 2018-09-17 13:53:57 -07:00
fetch-negotiator.c
fetch-negotiator.h headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
fetch-object.c fetch-object: set exact_oid when fetching 2018-09-13 13:57:31 -07:00
fetch-object.h fetch-object.h: add missing declaration (hdr-check) 2018-10-29 10:14:17 +09:00
fetch-pack.c Merge branch 'tb/filter-alternate-refs' 2018-10-19 13:34:08 +09:00
fetch-pack.h fetch-pack: exclude blobs when lazy-fetching trees 2018-10-04 06:03:49 -07:00
fmt-merge-msg.h
fsck.c Merge branch 'jc/cocci-preincr' 2018-10-30 15:43:48 +09:00
fsck.h fsck: use oidset instead of oid_array for skipList 2018-09-12 15:17:46 -07:00
fsmonitor.c
fsmonitor.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
fuzz-pack-headers.c fuzz: add basic fuzz testing target. 2018-10-15 14:28:59 +09:00
fuzz-pack-idx.c fuzz: add fuzz testing for packfile indices. 2018-10-15 14:29:03 +09:00
generate-cmdlist.sh generate-cmdlist.sh: collect config from all config.txt files 2018-08-21 11:28:11 -07:00
gettext.c
gettext.h
git-add--interactive.perl
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'cb/khash-maybe-unused-function' 2018-10-30 15:43:48 +09:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh
git-instaweb.sh
git-legacy-rebase.sh Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool: accept -g/--[no-]gui as arguments 2018-10-25 14:01:10 +09:00
git-mergetool.sh mergetool: accept -g/--[no-]gui as arguments 2018-10-25 14:01:10 +09:00
git-p4.py git-p4: fully support unshelving changelists 2018-10-16 13:28:49 +09:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--common.sh
git-rebase--merge.sh
git-rebase--preserve-merges.sh Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl Merge branch 'jw/send-email-no-auth' 2018-11-06 15:50:20 +09:00
git-sh-i18n.sh
git-sh-setup.sh
git-stash.sh
git-submodule.sh submodule: make zero-oid comparison hash function agnostic 2018-10-15 12:53:16 +09:00
git-svn.perl
git-web--browse.sh
git.c Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
git.rc
gpg-interface.c Merge branch 'mg/gpg-fingerprint' 2018-11-03 00:53:58 +09:00
gpg-interface.h gpg-interface.c: obtain primary key fingerprint as well 2018-10-23 08:00:43 +09:00
graph.c Merge branch 'np/log-graph-octopus-fix' 2018-10-26 14:22:11 +09:00
graph.h
grep.c userdiff.c: remove implicit dependency on the_index 2018-09-21 09:50:58 -07:00
grep.h userdiff.c: remove implicit dependency on the_index 2018-09-21 09:50:58 -07:00
hash.h
hashmap.c
hashmap.h
help.c help -a: improve and make --verbose default 2018-10-03 21:23:51 -07:00
help.h
hex.c
http-backend.c Merge branch 'ds/multi-pack-index' 2018-09-17 13:53:50 -07:00
http-fetch.c
http-push.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
http-walker.c sha1_file_name(): overwrite buffer instead of appending 2018-11-13 14:22:02 +09:00
http.c sha1_file_name(): overwrite buffer instead of appending 2018-11-13 14:22:02 +09:00
http.h
ident.c mingw: use domain information for default email 2018-10-16 12:59:57 +09:00
imap-send.c
interdiff.c
interdiff.h
iterator.h
json-writer.c
json-writer.h json-writer.h: add missing include (hdr-check) 2018-09-20 11:50:00 -07:00
khash.h khash: silence -Wunused-function for delta-islands 2018-10-24 14:52:50 +09:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c line-range.c: remove implicit dependency on the_index 2018-09-21 09:51:18 -07:00
line-log.h
line-range.c line-range.c: remove implicit dependency on the_index 2018-09-21 09:51:18 -07:00
line-range.h line-range.c: remove implicit dependency on the_index 2018-09-21 09:51:18 -07:00
linear-assignment.c linear-assignment: fix potential out of bounds memory access 2018-09-14 09:10:26 -07:00
linear-assignment.h linear-assignment: a function to solve least-cost assignment problems 2018-08-13 10:44:50 -07:00
list-objects-filter-options.c list-objects-filter: implement filter tree:0 2018-10-07 08:55:00 +09:00
list-objects-filter-options.h list-objects-filter: implement filter tree:0 2018-10-07 08:55:00 +09:00
list-objects-filter.c list-objects: support for skipping tree traversal 2018-10-18 12:49:18 +09:00
list-objects-filter.h Merge branch 'md/filter-trees' 2018-10-30 15:43:39 +09:00
list-objects.c Merge branch 'md/filter-trees' 2018-10-30 15:43:39 +09:00
list-objects.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
list.h
ll-merge.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
ll-merge.h ll-merge.c: remove implicit dependency on the_index 2018-09-21 09:48:10 -07:00
lockfile.c
lockfile.h reopen_tempfile(): truncate opened file 2018-09-05 09:46:16 -07:00
log-tree.c Merge branch 'jk/cocci' 2018-09-17 13:53:57 -07: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 Merge branch 'rs/mailinfo-format-flowed' 2018-09-17 13:53:57 -07:00
mailmap.c
mailmap.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
match-trees.c convert "oidcmp() != 0" to "!oideq()" 2018-08-29 11:32:49 -07:00
mem-pool.c
mem-pool.h
merge-blobs.c merge-blobs.c: remove implicit dependency on the_index 2018-09-21 09:48:10 -07:00
merge-blobs.h merge-blobs.c: remove implicit dependency on the_index 2018-09-21 09:48:10 -07:00
merge-recursive.c Merge branch 'en/merge-cleanup-more' 2018-11-03 00:53:57 +09:00
merge-recursive.h Merge branch 'en/directory-renames-nothanks' 2018-09-04 14:31:38 -07:00
merge.c merge.c: remove implicit dependency on the_index 2018-09-21 09:48:10 -07:00
mergesort.c
mergesort.h
midx.c multi-pack-index: avoid dead store for struct progress 2018-10-19 11:16:53 +09:00
midx.h headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
name-hash.c trace.h: support nested performance tracing 2018-08-18 09:47:46 -07:00
notes-cache.c
notes-cache.h
notes-merge.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
notes-merge.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
notes-utils.c
notes-utils.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
notes.c convert "oidcmp() != 0" to "!oideq()" 2018-08-29 11:32:49 -07:00
notes.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
object-store.h sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
object.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
object.h Merge branch 'ds/reachable' 2018-09-17 13:53:52 -07:00
oidmap.c convert hashmap comparison functions to oideq() 2018-08-29 11:32:49 -07:00
oidmap.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
oidset.c oidset: uninline oidset_init() 2018-10-04 11:12:14 -07:00
oidset.h oidset: uninline oidset_init() 2018-10-04 11:12:14 -07:00
pack-bitmap-write.c Merge branch 'bc/hash-transition-part-15' 2018-10-30 15:43:42 +09:00
pack-bitmap.c Merge branch 'jk/pack-objects-with-bitmap-fix' 2018-09-17 13:53:58 -07:00
pack-bitmap.h bitmap_has_sha1_in_uninteresting(): drop BUG check 2018-09-04 08:30:48 -07:00
pack-check.c convert "hashcmp() != 0" to "!hasheq()" 2018-08-29 11:32:49 -07:00
pack-objects.c Merge branch 'js/pack-objects-mutex-init-fix' 2018-10-30 15:43:43 +09:00
pack-objects.h Merge branch 'js/pack-objects-mutex-init-fix' 2018-10-30 15:43:43 +09:00
pack-revindex.c pack-revindex: express constants in terms of the_hash_algo 2018-10-15 12:53:15 +09:00
pack-revindex.h
pack-write.c convert "hashcmp() != 0" to "!hasheq()" 2018-08-29 11:32:49 -07:00
pack.h
packfile.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
packfile.h fuzz: add fuzz testing for packfile indices. 2018-10-15 14:29:03 +09:00
pager.c
parse-options-cb.c
parse-options.c Merge branch 'rs/parse-opt-lithelp' 2018-08-17 13:09:56 -07:00
parse-options.h
patch-delta.c patch-delta: handle truncated copy parameters 2018-08-30 10:30:23 -07:00
patch-ids.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
patch-ids.h patch-ids.c: remove implicit dependency on the_index 2018-09-21 09:48:11 -07:00
path.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
path.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
pathspec.c pathspec.c: use the right index instead of the_index 2018-08-13 14:14:43 -07:00
pathspec.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
pkt-line.c
pkt-line.h
preload-index.c Merge branch 'nd/status-refresh-progress' 2018-10-19 13:34:03 +09:00
pretty.c Merge branch 'mg/gpg-fingerprint' 2018-11-03 00:53:58 +09:00
pretty.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
prio-queue.c
prio-queue.h
progress.c
progress.h
prompt.c
prompt.h
protocol.c
protocol.h
quote.c
quote.h
range-diff.c range-diff: allow to diff files regardless of submodule config 2018-10-25 14:47:53 +09:00
range-diff.h range-diff: relieve callers of low-level configuration burden 2018-08-14 14:27:04 -07:00
reachable.c
reachable.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
read-cache.c Merge branch 'nd/unpack-trees-with-cache-tree' 2018-11-06 15:50:20 +09:00
rebase-interactive.c rebase -i: introduce the 'break' command 2018-10-12 23:03:04 +09:00
rebase-interactive.h rebase -i: remove unused modes and functions 2018-08-29 13:38:18 -07:00
ref-filter.c Merge branch 'ot/ref-filter-plug-leaks' 2018-10-30 15:43:45 +09:00
ref-filter.h
reflog-walk.c Merge branch 'nd/i18n' 2018-08-15 15:08:23 -07:00
reflog-walk.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
refs.c Merge branch 'ds/commit-graph-with-grafts' 2018-10-16 16:15:59 +09:00
refs.h Merge branch 'ds/commit-graph-with-grafts' 2018-10-16 16:15:59 +09:00
refspec.c
refspec.h
remote-curl.c Merge branch 'en/double-semicolon-fix' 2018-09-24 10:30:47 -07:00
remote-testsvn.c
remote.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
remote.h Merge branch 'ds/reachable' 2018-09-17 13:53:52 -07:00
replace-object.c Merge branch 'ds/commit-graph-with-grafts' 2018-10-16 16:15:59 +09:00
replace-object.h commit-graph: not compatible with replace objects 2018-08-21 10:22:51 -07:00
repository.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
repository.h Merge branch 'en/incl-forward-decl' 2018-08-20 12:41:32 -07:00
rerere.c Merge branch 'bc/hash-transition-part-15' 2018-10-30 15:43:42 +09:00
rerere.h rerere.c: remove implicit dependency on the_index 2018-09-21 09:48:11 -07:00
resolve-undo.c resolve-undo.c: use the right index instead of the_index 2018-08-13 14:14:44 -07:00
resolve-undo.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
revision.c Merge branch 'md/exclude-promisor-objects-fix' 2018-11-06 15:50:21 +09:00
revision.h Merge branch 'md/exclude-promisor-objects-fix' 2018-11-06 15:50:21 +09:00
run-command.c t0061: adjust to test-tool transition 2018-10-25 11:41:09 +09:00
run-command.h
send-pack.c
send-pack.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
sequencer.c Merge branch 'js/rebase-i-shortopt' 2018-11-02 11:04:59 +09:00
sequencer.h Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
serve.c
serve.h
server-info.c treewide: use get_all_packs 2018-08-20 15:31:40 -07:00
setup.c
sh-i18n--envsubst.c
sha1-array.c convert "oidcmp() == 0" to oideq() 2018-08-29 11:32:49 -07:00
sha1-array.h
sha1-file.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
sha1-lookup.c
sha1-lookup.h
sha1-name.c sha1-file: use an object_directory for the main object dir 2018-11-13 14:22:03 +09:00
sha1dc_git.c
sha1dc_git.h
shallow.c Merge branch 'js/shallow-and-fetch-prune' 2018-11-06 15:50:18 +09:00
shell.c
shortlog.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
sideband.c sideband: do not read beyond the end of input 2018-08-18 09:16:48 -07:00
sideband.h
sigchain.c
sigchain.h
split-index.c split-index: BUG() when cache entry refers to non-existing shared entry 2018-10-12 07:23:29 +09:00
split-index.h
strbuf.c Merge branch 'pk/rebase-in-c-3-acts' 2018-11-02 11:04:54 +09:00
strbuf.h Merge branch 'pk/rebase-in-c-3-acts' 2018-11-02 11:04:54 +09:00
streaming.c
streaming.h
string-list.c Merge branch 'sb/string-list-remove-unused' 2018-09-24 10:30:50 -07:00
string-list.h string-list: remove unused function print_string_list 2018-09-11 12:27:58 -07:00
sub-process.c
sub-process.h
submodule-config.c Sync with 2.19.1 2018-09-27 11:53:39 -07:00
submodule-config.h
submodule.c submodule.c: remove some of the_repository references 2018-10-22 11:55:33 +09:00
submodule.h submodule.c: remove some of the_repository references 2018-10-22 11:55:33 +09:00
symlinks.c
tag.c tag: express constant in terms of the_hash_algo 2018-10-15 12:53:16 +09:00
tag.h
tar.h
tempfile.c reopen_tempfile(): truncate opened file 2018-09-05 09:46:16 -07:00
tempfile.h Merge branch 'jk/reopen-tempfile-truncate' 2018-09-24 10:30:46 -07:00
thread-utils.c
thread-utils.h
tmp-objdir.c
tmp-objdir.h
trace.c trace.h: support nested performance tracing 2018-08-18 09:47:46 -07:00
trace.h trace.h: support nested performance tracing 2018-08-18 09:47:46 -07:00
trailer.c interpret-trailers: allow suppressing "---" divider 2018-08-23 10:08:51 -07:00
trailer.h Merge branch 'jk/trailer-fixes' 2018-09-17 13:53:54 -07:00
transport-helper.c transport: list refs before fetch if necessary 2018-10-07 09:53:19 +09:00
transport-internal.h transport: list refs before fetch if necessary 2018-10-07 09:53:19 +09:00
transport.c rename "alternate_object_database" to "object_directory" 2018-11-13 14:22:02 +09:00
transport.h transport: drop refnames from for_each_alternate_ref 2018-10-09 14:30:02 +09:00
tree-diff.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
tree-walk.c
tree-walk.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
tree.c
tree.h
unicode-width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c unpack-trees: avoid dead store for struct progress 2018-10-19 11:16:52 +09:00
unpack-trees.h Merge branch 'nd/clone-case-smashing-warning' 2018-09-17 13:53:47 -07:00
upload-pack.c Merge branch 'jt/upload-pack-v2-fix-shallow' 2018-11-06 15:50:19 +09:00
upload-pack.h
url.c
url.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
urlmatch.c
urlmatch.h urlmatch.h: fix include guard 2018-08-15 11:52:09 -07:00
usage.c
userdiff.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
userdiff.h userdiff.c: remove implicit dependency on the_index 2018-09-21 09:50:58 -07:00
utf8.c Merge branch 'jk/size-t' 2018-08-15 15:08:25 -07:00
utf8.h Merge branch 'en/incl-forward-decl' 2018-08-20 12:41:32 -07:00
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c worktree: don't die() in library function find_worktree() 2018-08-30 09:28:02 -07:00
worktree.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
wrap-for-bin.sh
wrapper.c
write-or-die.c
ws.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
wt-status.c Merge branch 'ss/wt-status-committable' 2018-10-19 13:34:02 +09:00
wt-status.h roll wt_status_state into wt_status and populate in the collect phase 2018-10-03 23:38:20 -07:00
xdiff-interface.c convert "oidcmp() == 0" to oideq() 2018-08-29 11:32:49 -07:00
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.

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