Go to file
Ronnie Sahlberg 4ff17f10c4 send-pack.c: add --atomic command line argument
This adds support to send-pack to negotiate and use atomic pushes
iff the server supports it. Atomic pushes are activated by a new command
line flag --atomic.

In order to do this we also need to change the semantics for send_pack()
slightly. The existing send_pack() function actually doesn't send all the
refs back to the server when multiple refs are involved, for example
when using --all. Several of the failure modes for pushes can already be
detected locally in the send_pack client based on the information from the
initial server side list of all the refs as generated by receive-pack.
Any such refs that we thus know would fail to push are thus pruned from
the list of refs we send to the server to update.

For atomic pushes, we have to deal thus with both failures that are detected
locally as well as failures that are reported back from the server. In order
to do so we treat all local failures as push failures too.

We introduce a new status code REF_STATUS_ATOMIC_PUSH_FAILED so we can
flag all refs that we would normally have tried to push to the server
but we did not due to local failures. This is to improve the error message
back to the end user to flag that "these refs failed to update since the
atomic push operation failed."

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-01-07 19:56:44 -08:00
Documentation send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
block-sha1
builtin send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
compat Merge branch 'dm/port2zos' 2014-10-29 10:08:07 -07:00
contrib Merge branch 'js/diff-highlight-avoid-sigpipe' 2014-11-10 11:26:09 -08:00
ewah
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2014-10-30 10:07:33 -07:00
gitweb gitweb: use start_form, not startform that was removed in CGI.pm 4.04 2014-10-16 13:12:34 -07:00
mergetools Merge branch 'oc/mergetools-beyondcompare' 2014-10-29 10:08:04 -07:00
perl git-svn: use SVN::Ra::get_dir2 when possible 2014-10-31 10:34:54 +00:00
po l10n: remove a superfluous translation for push.c 2014-11-20 16:23:43 +08:00
ppc
t Merge branch 'tb/no-relative-file-url' 2014-11-19 13:47:53 -08:00
templates
vcs-svn
xdiff
.gitattributes
.gitignore Merge branch 'cc/interpret-trailers' 2014-10-20 12:25:32 -07:00
.mailmap .mailmap: add Stefan Bellers corporate mail address 2014-10-21 11:01:27 -07:00
COPYING
GIT-VERSION-GEN Git 2.2 2014-11-26 13:18:34 -08:00
INSTALL
LGPL-2.1
Makefile Merge branch 'dm/port2zos' 2014-10-29 10:08:07 -07:00
README doc: add 'everyday' to 'git help' 2014-10-10 16:02:26 -07:00
RelNotes Git 2.1.3 2014-10-29 10:48:45 -07:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c Revert "archive: honor tar.umask even for pax headers" 2014-10-20 12:04:46 -07:00
archive-zip.c
archive.c Merge branch 'nd/archive-pathspec' 2014-10-08 13:05:26 -07:00
archive.h
argv-array.c
argv-array.h
attr.c
attr.h
base85.c
bisect.c
bisect.h
blob.c
blob.h
branch.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
branch.h
builtin.h trailer: add interpret-trailers command 2014-10-13 13:55:27 -07:00
bulk-checkin.c
bulk-checkin.h
bundle.c bundle: split out ref writing from bundle_create 2014-10-30 14:52:45 -07:00
bundle.h
cache-tree.c Merge branch 'jk/cache-tree-protect-from-broken-libgit2' 2014-11-06 10:51:35 -08:00
cache-tree.h
cache.h Merge branch 'jk/prune-mtime' 2014-10-29 10:07:56 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c color_parse: do not mention variable name in error message 2014-10-14 11:01:21 -07:00
color.h color_parse: do not mention variable name in error message 2014-10-14 11:01:21 -07:00
column.c use child_process_init() to initialize struct child_process variables 2014-10-28 14:56:17 -07:00
column.h
combine-diff.c
command-list.txt Documentation: add documentation for 'git interpret-trailers' 2014-10-13 13:59:49 -07:00
commit-slab.h
commit.c Merge branch 'jc/push-cert' 2014-10-08 13:05:25 -07:00
commit.h
config.c Merge branch 'mh/lockfile' 2014-10-14 10:49:45 -07:00
config.mak.in
config.mak.uname
configure.ac
connect.c
connect.h
connected.c
connected.h
convert.c Merge branch 'sp/stream-clean-filter' 2014-10-08 13:05:32 -07:00
convert.h
copy.c
credential-cache--daemon.c
credential-cache.c
credential-store.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c Merge branch 'rs/daemon-fixes' into maint 2014-10-29 10:35:09 -07:00
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c
diff.c Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
diff.h
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c Merge branch 'nd/dir-prep-exclude-cleanup' 2014-10-24 15:00:05 -07:00
dir.h
editor.c
entry.c
environment.c
exec_cmd.c
exec_cmd.h
fast-import.c refs.c: pass the ref log message to _create/delete/update instead of _commit 2014-10-15 10:47:22 -07:00
fetch-pack.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
fetch-pack.h
fmt-merge-msg.h
fsck.c
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'dm/port2zos' 2014-10-29 10:08:07 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh difftool: add support for --trust-exit-code 2014-10-28 10:36:57 -07:00
git-difftool.perl Merge branch 'da/difftool' 2014-10-29 10:09:35 -07:00
git-filter-branch.sh
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'da/difftool' 2014-11-18 10:16:55 -08:00
git-mergetool.sh Merge branch 'da/mergetool-temporary-directory' 2014-10-21 13:28:42 -07:00
git-p4.py
git-parse-remote.sh
git-pull.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh
git-rebase--merge.sh
git-rebase.sh
git-relink.perl
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'da/mergetool-tool-help' 2014-10-21 13:28:37 -07:00
git-stash.sh Merge branch 'da/rev-parse-verify-quiet' 2014-09-29 12:36:10 -07:00
git-submodule.sh
git-svn.perl
git-web--browse.sh
git.c Merge branch 'cc/interpret-trailers' 2014-10-20 12:25:32 -07:00
git.rc
git.spec.in
gpg-interface.c Merge branch 'jc/push-cert' 2014-10-08 13:05:25 -07:00
gpg-interface.h
graph.c Merge branch 'rs/graph-simplify' 2014-09-29 12:36:11 -07:00
graph.h
grep.c Merge branch 'rs/grep-color-words' 2014-10-31 11:49:47 -07:00
grep.h grep: add color.grep.matchcontext and color.grep.matchselected 2014-10-28 10:33:50 -07:00
hashmap.c
hashmap.h
help.c
help.h
hex.c
http-backend.c Merge branch 'rs/run-command-env-array' 2014-10-24 14:57:54 -07:00
http-fetch.c
http-push.c
http-walker.c
http.c Merge branch 'da/include-compat-util-first-in-c' 2014-10-14 10:49:01 -07:00
http.h
ident.c
imap-send.c
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c Merge branch 'tm/line-log-first-parent' 2014-11-06 10:52:37 -08:00
line-log.h
line-range.c
line-range.h
list-objects.c traverse_commit_list: support pending blobs/trees with paths 2014-10-19 15:06:31 -07:00
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c lockfile: remove unable_to_lock_error 2014-10-15 10:47:27 -07:00
lockfile.h lockfile: remove unable_to_lock_error 2014-10-15 10:47:27 -07:00
log-tree.c Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
log-tree.h Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
mailmap.c
mailmap.h
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'mh/lockfile' 2014-10-14 10:49:45 -07:00
merge-recursive.h
merge.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
mergesort.c
mergesort.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
notes-merge.h
notes-utils.c
notes-utils.h
notes.c
notes.h
object.c drop add_object_array_with_mode 2014-10-19 15:28:30 -07:00
object.h drop add_object_array_with_mode 2014-10-19 15:28:30 -07:00
pack-bitmap-write.c
pack-bitmap.c
pack-bitmap.h
pack-check.c
pack-objects.c
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c use env_array member of struct child_process 2014-10-19 15:26:34 -07:00
parse-options-cb.c
parse-options.c
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
pretty.c Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
prio-queue.c
prio-queue.h
progress.c
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c reachable: use revision machinery's --indexed-objects code 2014-10-19 15:07:07 -07:00
reachable.h pack-objects: match prune logic for discarding objects 2014-10-16 10:10:43 -07:00
read-cache.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
reflog-walk.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
reflog-walk.h
refs.c refs.c: let fprintf handle the formatting 2014-12-22 10:13:16 -08:00
refs.h refs.c: don't expose the internal struct ref_lock in the header file 2014-12-22 10:13:15 -08:00
remote-curl.c Merge branch 'jc/push-cert' 2014-10-08 13:05:25 -07:00
remote-testsvn.c
remote.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
remote.h send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
replace_object.c
rerere.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c revision: remove definition of unused 'add_object' function 2014-10-19 15:27:24 -07:00
revision.h revision: remove definition of unused 'add_object' function 2014-10-19 15:27:24 -07:00
run-command.c run-command: use void to declare that functions take no parameters 2014-11-10 14:43:19 -08:00
run-command.h run-command: add env_array, an optional argv_array for env 2014-10-19 15:26:31 -07:00
send-pack.c send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
send-pack.h send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
sequencer.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
sequencer.h
server-info.c
setup.c
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c sha1-lookup: handle duplicates in sha1_pos() 2014-10-01 13:32:19 -07:00
sha1-lookup.h
sha1_file.c Merge branch 'jk/prune-mtime' 2014-10-29 10:07:56 -07:00
sha1_name.c
shallow.c Merge branch 'eb/no-pthreads' 2014-10-24 14:59:10 -07:00
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c
split-index.h
strbuf.c
strbuf.h
streaming.c
streaming.h
string-list.c
string-list.h
submodule.c
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-config.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-dump-split-index.c
test-genrandom.c
test-hashmap.c
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-prio-queue.c
test-read-cache.c
test-regex.c
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
test-sha1-array.c sha1-array: add test-sha1-array and basic tests 2014-10-01 13:32:10 -07:00
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.c
test-subprocess.c
test-svn-fe.c
test-urlmatch-normalization.c
test-wildmatch.c
thread-utils.c
thread-utils.h pack-objects: set number of threads before checking and warning 2014-10-13 12:53:46 -07:00
trace.c Merge branch 'bw/trace-no-inline-getnanotime' 2014-10-16 14:16:45 -07:00
trace.h
trailer.c Merge branch 'cc/interpret-trailers' 2014-11-19 13:47:52 -08:00
trailer.h trailer: put all the processing together and print 2014-10-13 13:55:27 -07:00
transport-helper.c use child_process_init() to initialize struct child_process variables 2014-10-28 14:56:17 -07:00
transport.c send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
transport.h
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unicode_width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c
unpack-trees.h
update_unicode.sh
upload-pack.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
url.c
url.h
urlmatch.c isxdigit: cast input to unsigned char 2014-10-16 10:10:36 -07:00
urlmatch.h
usage.c
userdiff.c
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c refs.c: pass the ref log message to _create/delete/update instead of _commit 2014-10-15 10:47:22 -07:00
walker.h
wildmatch.c
wildmatch.h
wrap-for-bin.sh
wrapper.c wrapper.c: add a new function unlink_or_msg 2014-10-15 10:47:21 -07:00
write_or_die.c
ws.c
wt-status.c Merge branch 'rs/run-command-env-array' 2014-10-24 14:57:54 -07:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

README

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

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

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

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://news.gmane.org/gmane.comp.version-control.git/,
http://marc.info/?l=git and other archival sites.

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