mirror of
https://github.com/git/git.git
synced 2025-03-25 05:11:09 +00:00
Merge commit 'b319ef7' into jc/maint-fix-test-perm
* commit 'b319ef7': (8132 commits) Add a small patch-mode testing library git-apply--interactive: Refactor patch mode code t8005: Nobody writes Russian in shift_jis Fix severe breakage in "git-apply --whitespace=fix" Update release notes for 1.6.4 After renaming a section, print any trailing variable definitions Make section_name_match start on '[', and return the length on success send-email: detect cycles in alias expansion Show the presence of untracked files in the bash prompt. SunOS grep does not understand -C<n> nor -e Fix export_marks() error handling. git repack: keep commits hidden by a graft Add a test showing that 'git repack' throws away grafted-away parents git branch: clean up detached branch handling git branch: avoid unnecessary object lookups git branch: fix performance problem git svn: fix shallow clone when upstream revision is too new do_one_ref(): null_sha1 check is not about broken ref configure.ac: properly unset NEEDS_SSL_WITH_CRYPTO when sha1 func is missing janitor: useless checks before free ...
This commit is contained in:
commit
00d3278c85
.gitattributes.gitignore.mailmap
Documentation
.gitattributes.gitignoreCodingGuidelinesMakefileRelNotes-1.5.0.4.txtRelNotes-1.5.0.5.txtRelNotes-1.5.0.6.txtRelNotes-1.5.1.1.txtRelNotes-1.5.1.2.txtRelNotes-1.5.1.3.txtRelNotes-1.5.1.4.txtRelNotes-1.5.1.5.txtRelNotes-1.5.1.6.txtRelNotes-1.5.2.1.txtRelNotes-1.5.2.2.txtRelNotes-1.5.2.3.txtRelNotes-1.5.2.4.txtRelNotes-1.5.2.5.txtRelNotes-1.5.2.txtRelNotes-1.5.3.1.txtRelNotes-1.5.3.2.txtRelNotes-1.5.3.3.txtRelNotes-1.5.3.4.txtRelNotes-1.5.3.5.txtRelNotes-1.5.3.6.txtRelNotes-1.5.3.7.txtRelNotes-1.5.3.8.txtRelNotes-1.5.3.txtRelNotes-1.5.4.1.txtRelNotes-1.5.4.2.txtRelNotes-1.5.4.3.txtRelNotes-1.5.4.4.txtRelNotes-1.5.4.5.txtRelNotes-1.5.4.6.txtRelNotes-1.5.4.7.txtRelNotes-1.5.4.txtRelNotes-1.5.5.1.txtRelNotes-1.5.5.2.txtRelNotes-1.5.5.3.txtRelNotes-1.5.5.4.txtRelNotes-1.5.5.5.txtRelNotes-1.5.5.6.txtRelNotes-1.5.5.txtRelNotes-1.5.6.1.txtRelNotes-1.5.6.2.txtRelNotes-1.5.6.3.txtRelNotes-1.5.6.4.txtRelNotes-1.5.6.5.txtRelNotes-1.5.6.6.txtRelNotes-1.5.6.txtRelNotes-1.6.0.1.txtRelNotes-1.6.0.2.txtRelNotes-1.6.0.3.txtRelNotes-1.6.0.4.txtRelNotes-1.6.0.5.txtRelNotes-1.6.0.6.txtRelNotes-1.6.0.txtRelNotes-1.6.1.1.txtRelNotes-1.6.1.2.txtRelNotes-1.6.1.3.txtRelNotes-1.6.1.4.txtRelNotes-1.6.1.txtRelNotes-1.6.2.1.txtRelNotes-1.6.2.2.txtRelNotes-1.6.2.3.txtRelNotes-1.6.2.4.txtRelNotes-1.6.2.5.txtRelNotes-1.6.2.txtRelNotes-1.6.3.1.txtRelNotes-1.6.3.2.txtRelNotes-1.6.3.3.txtRelNotes-1.6.3.txtRelNotes-1.6.4.txtSubmittingPatchesasciidoc.confblame-options.txtcallouts.xslcat-texi.perlcmd-list.perlconfig.txtcore-intro.txtdiff-format.txtdiff-generate-patch.txtdiff-options.txtdocbook-xsl.cssdocbook.xsleveryday.txtfetch-options.txtfix-texi.perlgit-add.txtgit-am.txtgit-annotate.txtgit-apply.txtgit-applymbox.txtgit-applypatch.txtgit-archimport.txtgit-archive.txt
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
* whitespace=!indent,trail,space
|
||||
*.[ch] whitespace=indent,trail,space
|
39
.gitignore
vendored
39
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
GIT-BUILD-OPTIONS
|
||||
GIT-CFLAGS
|
||||
GIT-GUI-VARS
|
||||
GIT-VERSION-FILE
|
||||
@ -7,15 +8,15 @@ git-add--interactive
|
||||
git-am
|
||||
git-annotate
|
||||
git-apply
|
||||
git-applymbox
|
||||
git-applypatch
|
||||
git-archimport
|
||||
git-archive
|
||||
git-bisect
|
||||
git-bisect--helper
|
||||
git-blame
|
||||
git-branch
|
||||
git-bundle
|
||||
git-cat-file
|
||||
git-check-attr
|
||||
git-check-ref-format
|
||||
git-checkout
|
||||
git-checkout-index
|
||||
@ -26,7 +27,6 @@ git-clone
|
||||
git-commit
|
||||
git-commit-tree
|
||||
git-config
|
||||
git-convert-objects
|
||||
git-count-objects
|
||||
git-cvsexportcommit
|
||||
git-cvsimport
|
||||
@ -36,12 +36,15 @@ git-diff
|
||||
git-diff-files
|
||||
git-diff-index
|
||||
git-diff-tree
|
||||
git-difftool
|
||||
git-difftool--helper
|
||||
git-describe
|
||||
git-fast-export
|
||||
git-fast-import
|
||||
git-fetch
|
||||
git-fetch--tool
|
||||
git-fetch-pack
|
||||
git-findtags
|
||||
git-filter-branch
|
||||
git-fmt-merge-msg
|
||||
git-for-each-ref
|
||||
git-format-patch
|
||||
@ -51,6 +54,7 @@ git-gc
|
||||
git-get-tar-commit-id
|
||||
git-grep
|
||||
git-hash-object
|
||||
git-help
|
||||
git-http-fetch
|
||||
git-http-push
|
||||
git-imap-send
|
||||
@ -58,7 +62,6 @@ git-index-pack
|
||||
git-init
|
||||
git-init-db
|
||||
git-instaweb
|
||||
git-local-fetch
|
||||
git-log
|
||||
git-lost-found
|
||||
git-ls-files
|
||||
@ -76,9 +79,9 @@ git-merge-one-file
|
||||
git-merge-ours
|
||||
git-merge-recursive
|
||||
git-merge-resolve
|
||||
git-merge-stupid
|
||||
git-merge-subtree
|
||||
git-mergetool
|
||||
git-mergetool--lib
|
||||
git-mktag
|
||||
git-mktree
|
||||
git-name-rev
|
||||
@ -96,6 +99,7 @@ git-push
|
||||
git-quiltimport
|
||||
git-read-tree
|
||||
git-rebase
|
||||
git-rebase--interactive
|
||||
git-receive-pack
|
||||
git-reflog
|
||||
git-relink
|
||||
@ -109,7 +113,6 @@ git-rev-list
|
||||
git-rev-parse
|
||||
git-revert
|
||||
git-rm
|
||||
git-runstatus
|
||||
git-send-email
|
||||
git-send-pack
|
||||
git-sh-setup
|
||||
@ -119,14 +122,12 @@ git-show
|
||||
git-show-branch
|
||||
git-show-index
|
||||
git-show-ref
|
||||
git-ssh-fetch
|
||||
git-ssh-pull
|
||||
git-ssh-push
|
||||
git-ssh-upload
|
||||
git-stage
|
||||
git-stash
|
||||
git-status
|
||||
git-stripspace
|
||||
git-submodule
|
||||
git-svn
|
||||
git-svnimport
|
||||
git-symbolic-ref
|
||||
git-tag
|
||||
git-tar-tree
|
||||
@ -140,23 +141,30 @@ git-upload-pack
|
||||
git-var
|
||||
git-verify-pack
|
||||
git-verify-tag
|
||||
git-web--browse
|
||||
git-whatchanged
|
||||
git-write-tree
|
||||
git-core-*/?*
|
||||
gitk-wish
|
||||
gitweb/gitweb.cgi
|
||||
test-chmtime
|
||||
test-ctype
|
||||
test-date
|
||||
test-delta
|
||||
test-dump-cache-tree
|
||||
test-genrandom
|
||||
test-match-trees
|
||||
test-parse-options
|
||||
test-path-utils
|
||||
test-sha1
|
||||
test-sigchain
|
||||
common-cmds.h
|
||||
*.tar.gz
|
||||
*.dsc
|
||||
*.deb
|
||||
git-core.spec
|
||||
git.spec
|
||||
*.exe
|
||||
*.[ao]
|
||||
*.[aos]
|
||||
*.py[co]
|
||||
config.mak
|
||||
autom4te.cache
|
||||
@ -166,3 +174,6 @@ config.status
|
||||
config.mak.autogen
|
||||
config.mak.append
|
||||
configure
|
||||
tags
|
||||
TAGS
|
||||
cscope*
|
||||
|
26
.mailmap
26
.mailmap
@ -5,25 +5,43 @@
|
||||
# same person appearing not to be so.
|
||||
#
|
||||
|
||||
Alexander Gavrilov <angavrilov@gmail.com>
|
||||
Aneesh Kumar K.V <aneesh.kumar@gmail.com>
|
||||
Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
|
||||
Chris Shoemaker <c.shoemaker@cox.net>
|
||||
Dana L. How <danahow@gmail.com>
|
||||
Dana L. How <how@deathvalley.cswitch.com>
|
||||
Daniel Barkalow <barkalow@iabervon.org>
|
||||
David D. Kilzer <ddkilzer@kilzer.net>
|
||||
David Kågedal <davidk@lysator.liu.se>
|
||||
David S. Miller <davem@davemloft.net>
|
||||
Dirk Süsserott <newsletter@dirk.my1.cc>
|
||||
Fredrik Kuivinen <freku045@student.liu.se>
|
||||
H. Peter Anvin <hpa@bonde.sc.orionmulti.com>
|
||||
H. Peter Anvin <hpa@tazenda.sc.orionmulti.com>
|
||||
H. Peter Anvin <hpa@trantor.hos.anvin.org>
|
||||
Horst H. von Brand <vonbrand@inf.utfsm.cl>
|
||||
İsmail Dönmez <ismail@pardus.org.tr>
|
||||
Jay Soffian <jaysoffian+git@gmail.com>
|
||||
Joachim Berdal Haga <cjhaga@fys.uio.no>
|
||||
Jon Loeliger <jdl@freescale.com>
|
||||
Jon Seymour <jon@blackcubes.dyndns.org>
|
||||
Jonathan Nieder <jrnieder@uchicago.edu>
|
||||
Junio C Hamano <junio@twinsun.com>
|
||||
Karl Hasselström <kha@treskal.com>
|
||||
Kent Engstrom <kent@lysator.liu.se>
|
||||
Lars Doelle <lars.doelle@on-line.de>
|
||||
Lars Doelle <lars.doelle@on-line ! de>
|
||||
Lars Doelle <lars.doelle@on-line.de>
|
||||
Li Hong <leehong@pku.edu.cn>
|
||||
Lukas Sandström <lukass@etek.chalmers.se>
|
||||
Martin Langhoff <martin@catalyst.net.nz>
|
||||
Michael Coleman <tutufan@gmail.com>
|
||||
Michael W. Olson <mwolson@gnu.org>
|
||||
Michele Ballabio <barra_cuda@katamail.com>
|
||||
Nanako Shiraishi <nanako3@bluebottle.com>
|
||||
Nanako Shiraishi <nanako3@lavabit.com>
|
||||
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
|
||||
Philippe Bruhat <book@cpan.org>
|
||||
Ramsay Allan Jones <ramsay@ramsay1.demon.co.uk>
|
||||
René Scharfe <rene.scharfe@lsrfire.ath.cx>
|
||||
Robert Fitzsimons <robfitz@273k.net>
|
||||
@ -31,10 +49,16 @@ Sam Vilain <sam@vilain.net>
|
||||
Santi Béjar <sbejar@gmail.com>
|
||||
Sean Estabrooks <seanlkml@sympatico.ca>
|
||||
Shawn O. Pearce <spearce@spearce.org>
|
||||
Steven Grimm <koreth@midwinter.com>
|
||||
Theodore Ts'o <tytso@mit.edu>
|
||||
Tony Luck <tony.luck@intel.com>
|
||||
Uwe Kleine-König <Uwe_Zeisberger@digi.com>
|
||||
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
||||
Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
||||
Uwe Kleine-König <uzeisberger@io.fsforth.de>
|
||||
Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de>
|
||||
Ville Skyttä <scop@xemacs.org>
|
||||
William Pursell <bill.pursell@gmail.com>
|
||||
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
|
||||
anonymous <linux@horizon.com>
|
||||
anonymous <linux@horizon.net>
|
||||
|
1
Documentation/.gitattributes
vendored
Normal file
1
Documentation/.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.txt whitespace
|
6
Documentation/.gitignore
vendored
6
Documentation/.gitignore
vendored
@ -1,8 +1,10 @@
|
||||
*.xml
|
||||
*.html
|
||||
*.1
|
||||
*.7
|
||||
*.[1-8]
|
||||
*.made
|
||||
*.texi
|
||||
git.info
|
||||
gitman.info
|
||||
howto-index.txt
|
||||
doc.dep
|
||||
cmds-*.txt
|
||||
|
134
Documentation/CodingGuidelines
Normal file
134
Documentation/CodingGuidelines
Normal file
@ -0,0 +1,134 @@
|
||||
Like other projects, we also have some guidelines to keep to the
|
||||
code. For git in general, three rough rules are:
|
||||
|
||||
- Most importantly, we never say "It's in POSIX; we'll happily
|
||||
ignore your needs should your system not conform to it."
|
||||
We live in the real world.
|
||||
|
||||
- However, we often say "Let's stay away from that construct,
|
||||
it's not even in POSIX".
|
||||
|
||||
- In spite of the above two rules, we sometimes say "Although
|
||||
this is not in POSIX, it (is so convenient | makes the code
|
||||
much more readable | has other good characteristics) and
|
||||
practically all the platforms we care about support it, so
|
||||
let's use it".
|
||||
|
||||
Again, we live in the real world, and it is sometimes a
|
||||
judgement call, the decision based more on real world
|
||||
constraints people face than what the paper standard says.
|
||||
|
||||
|
||||
As for more concrete guidelines, just imitate the existing code
|
||||
(this is a good guideline, no matter which project you are
|
||||
contributing to). It is always preferable to match the _local_
|
||||
convention. New code added to git suite is expected to match
|
||||
the overall style of existing code. Modifications to existing
|
||||
code is expected to match the style the surrounding code already
|
||||
uses (even if it doesn't match the overall style of existing code).
|
||||
|
||||
But if you must have a list of rules, here they are.
|
||||
|
||||
For shell scripts specifically (not exhaustive):
|
||||
|
||||
- We prefer $( ... ) for command substitution; unlike ``, it
|
||||
properly nests. It should have been the way Bourne spelled
|
||||
it from day one, but unfortunately isn't.
|
||||
|
||||
- We use ${parameter-word} and its [-=?+] siblings, and their
|
||||
colon'ed "unset or null" form.
|
||||
|
||||
- We use ${parameter#word} and its [#%] siblings, and their
|
||||
doubled "longest matching" form.
|
||||
|
||||
- We use Arithmetic Expansion $(( ... )).
|
||||
|
||||
- No "Substring Expansion" ${parameter:offset:length}.
|
||||
|
||||
- No shell arrays.
|
||||
|
||||
- No strlen ${#parameter}.
|
||||
|
||||
- No regexp ${parameter/pattern/string}.
|
||||
|
||||
- We do not use Process Substitution <(list) or >(list).
|
||||
|
||||
- We prefer "test" over "[ ... ]".
|
||||
|
||||
- We do not write the noiseword "function" in front of shell
|
||||
functions.
|
||||
|
||||
- As to use of grep, stick to a subset of BRE (namely, no \{m,n\},
|
||||
[::], [==], nor [..]) for portability.
|
||||
|
||||
- We do not use \{m,n\};
|
||||
|
||||
- We do not use -E;
|
||||
|
||||
- We do not use ? nor + (which are \{0,1\} and \{1,\}
|
||||
respectively in BRE) but that goes without saying as these
|
||||
are ERE elements not BRE (note that \? and \+ are not even part
|
||||
of BRE -- making them accessible from BRE is a GNU extension).
|
||||
|
||||
For C programs:
|
||||
|
||||
- We use tabs to indent, and interpret tabs as taking up to
|
||||
8 spaces.
|
||||
|
||||
- We try to keep to at most 80 characters per line.
|
||||
|
||||
- When declaring pointers, the star sides with the variable
|
||||
name, i.e. "char *string", not "char* string" or
|
||||
"char * string". This makes it easier to understand code
|
||||
like "char *string, c;".
|
||||
|
||||
- We avoid using braces unnecessarily. I.e.
|
||||
|
||||
if (bla) {
|
||||
x = 1;
|
||||
}
|
||||
|
||||
is frowned upon. A gray area is when the statement extends
|
||||
over a few lines, and/or you have a lengthy comment atop of
|
||||
it. Also, like in the Linux kernel, if there is a long list
|
||||
of "else if" statements, it can make sense to add braces to
|
||||
single line blocks.
|
||||
|
||||
- We try to avoid assignments inside if().
|
||||
|
||||
- Try to make your code understandable. You may put comments
|
||||
in, but comments invariably tend to stale out when the code
|
||||
they were describing changes. Often splitting a function
|
||||
into two makes the intention of the code much clearer.
|
||||
|
||||
- Double negation is often harder to understand than no negation
|
||||
at all.
|
||||
|
||||
- Some clever tricks, like using the !! operator with arithmetic
|
||||
constructs, can be extremely confusing to others. Avoid them,
|
||||
unless there is a compelling reason to use them.
|
||||
|
||||
- Use the API. No, really. We have a strbuf (variable length
|
||||
string), several arrays with the ALLOC_GROW() macro, a
|
||||
string_list for sorted string lists, a hash map (mapping struct
|
||||
objects) named "struct decorate", amongst other things.
|
||||
|
||||
- When you come up with an API, document it.
|
||||
|
||||
- The first #include in C files, except in platform specific
|
||||
compat/ implementations, should be git-compat-util.h or another
|
||||
header file that includes it, such as cache.h or builtin.h.
|
||||
|
||||
- If you are planning a new command, consider writing it in shell
|
||||
or perl first, so that changes in semantics can be easily
|
||||
changed and discussed. Many git commands started out like
|
||||
that, and a few are still scripts.
|
||||
|
||||
- Avoid introducing a new dependency into git. This means you
|
||||
usually should stay away from scripting languages not already
|
||||
used in the git core command set (unless your command is clearly
|
||||
separate from it, such as an importer to convert random-scm-X
|
||||
repositories to git).
|
||||
|
||||
- When we pass <string, length> pair to functions, we should try to
|
||||
pass them in that order.
|
@ -1,45 +1,112 @@
|
||||
MAN1_TXT= \
|
||||
$(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
|
||||
$(wildcard git-*.txt)) \
|
||||
gitk.txt
|
||||
MAN7_TXT=git.txt
|
||||
gitk.txt git.txt
|
||||
MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \
|
||||
gitrepository-layout.txt
|
||||
MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \
|
||||
gitcvs-migration.txt gitcore-tutorial.txt gitglossary.txt \
|
||||
gitdiffcore.txt gitworkflows.txt
|
||||
|
||||
DOC_HTML=$(patsubst %.txt,%.html,$(MAN1_TXT) $(MAN7_TXT))
|
||||
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
|
||||
MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT))
|
||||
MAN_HTML=$(patsubst %.txt,%.html,$(MAN_TXT))
|
||||
|
||||
ARTICLES = tutorial
|
||||
ARTICLES += tutorial-2
|
||||
ARTICLES += core-tutorial
|
||||
ARTICLES += cvs-migration
|
||||
ARTICLES += diffcore
|
||||
ARTICLES += howto-index
|
||||
ARTICLES += repository-layout
|
||||
ARTICLES += hooks
|
||||
DOC_HTML=$(MAN_HTML)
|
||||
|
||||
ARTICLES = howto-index
|
||||
ARTICLES += everyday
|
||||
ARTICLES += git-tools
|
||||
ARTICLES += glossary
|
||||
# with their own formatting rules.
|
||||
SP_ARTICLES = howto/revert-branch-rebase user-manual
|
||||
SP_ARTICLES = howto/revert-branch-rebase howto/using-merge-subtree user-manual
|
||||
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
||||
SP_ARTICLES += $(API_DOCS)
|
||||
SP_ARTICLES += technical/api-index
|
||||
|
||||
DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
|
||||
|
||||
DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT))
|
||||
DOC_MAN5=$(patsubst %.txt,%.5,$(MAN5_TXT))
|
||||
DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT))
|
||||
|
||||
prefix?=$(HOME)
|
||||
bindir?=$(prefix)/bin
|
||||
mandir?=$(prefix)/man
|
||||
htmldir?=$(prefix)/share/doc/git-doc
|
||||
pdfdir?=$(prefix)/share/doc/git-doc
|
||||
mandir?=$(prefix)/share/man
|
||||
man1dir=$(mandir)/man1
|
||||
man5dir=$(mandir)/man5
|
||||
man7dir=$(mandir)/man7
|
||||
# DESTDIR=
|
||||
|
||||
ASCIIDOC=asciidoc
|
||||
ASCIIDOC_EXTRA =
|
||||
MANPAGE_XSL = manpage-normal.xsl
|
||||
XMLTO_EXTRA =
|
||||
INSTALL?=install
|
||||
RM ?= rm -f
|
||||
DOC_REF = origin/man
|
||||
HTML_REF = origin/html
|
||||
|
||||
infodir?=$(prefix)/share/info
|
||||
MAKEINFO=makeinfo
|
||||
INSTALL_INFO=install-info
|
||||
DOCBOOK2X_TEXI=docbook2x-texi
|
||||
DBLATEX=dblatex
|
||||
ifndef PERL_PATH
|
||||
PERL_PATH = /usr/bin/perl
|
||||
endif
|
||||
|
||||
-include ../config.mak.autogen
|
||||
-include ../config.mak
|
||||
|
||||
#
|
||||
# For asciidoc ...
|
||||
# -7.1.2, no extra settings are needed.
|
||||
# 8.0-, set ASCIIDOC8.
|
||||
#
|
||||
|
||||
#
|
||||
# For docbook-xsl ...
|
||||
# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0)
|
||||
# 1.69.0, no extra settings are needed?
|
||||
# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP?
|
||||
# 1.71.1, no extra settings are needed?
|
||||
# 1.72.0, set DOCBOOK_XSL_172.
|
||||
# 1.73.0-, set ASCIIDOC_NO_ROFF
|
||||
#
|
||||
|
||||
#
|
||||
# If you had been using DOCBOOK_XSL_172 in an attempt to get rid
|
||||
# of 'the ".ft C" problem' in your generated manpages, and you
|
||||
# instead ended up with weird characters around callouts, try
|
||||
# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8).
|
||||
#
|
||||
|
||||
ifdef ASCIIDOC8
|
||||
ASCIIDOC_EXTRA += -a asciidoc7compatible
|
||||
endif
|
||||
ifdef DOCBOOK_XSL_172
|
||||
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||
MANPAGE_XSL = manpage-1.72.xsl
|
||||
else
|
||||
ifdef ASCIIDOC_NO_ROFF
|
||||
# docbook-xsl after 1.72 needs the regular XSL, but will not
|
||||
# pass-thru raw roff codes from asciidoc.conf, so turn them off.
|
||||
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
|
||||
endif
|
||||
endif
|
||||
ifdef MAN_BOLD_LITERAL
|
||||
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
||||
endif
|
||||
ifdef DOCBOOK_SUPPRESS_SP
|
||||
XMLTO_EXTRA += -m manpage-suppress-sp.xsl
|
||||
endif
|
||||
|
||||
SHELL_PATH ?= $(SHELL)
|
||||
# Shell quote;
|
||||
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
||||
|
||||
#
|
||||
# Please note that there is a minor bug in asciidoc.
|
||||
# The version after 6.0.3 _will_ include the patch found here:
|
||||
@ -49,24 +116,76 @@ DOC_REF = origin/man
|
||||
# yourself - yes, all 6 characters of it!
|
||||
#
|
||||
|
||||
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
||||
QUIET_SUBDIR1 =
|
||||
|
||||
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
||||
PRINT_DIR = --no-print-directory
|
||||
else # "make -w"
|
||||
NO_SUBDIR = :
|
||||
endif
|
||||
|
||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||
ifndef V
|
||||
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
||||
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
||||
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
||||
QUIET_MAKEINFO = @echo ' ' MAKEINFO $@;
|
||||
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
||||
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
||||
QUIET_GEN = @echo ' ' GEN $@;
|
||||
QUIET_STDERR = 2> /dev/null
|
||||
QUIET_SUBDIR0 = +@subdir=
|
||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||
$(MAKE) $(PRINT_DIR) -C $$subdir
|
||||
export V
|
||||
endif
|
||||
endif
|
||||
|
||||
all: html man
|
||||
|
||||
html: $(DOC_HTML)
|
||||
|
||||
$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN7): asciidoc.conf
|
||||
$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf
|
||||
|
||||
man: man1 man7
|
||||
man: man1 man5 man7
|
||||
man1: $(DOC_MAN1)
|
||||
man5: $(DOC_MAN5)
|
||||
man7: $(DOC_MAN7)
|
||||
|
||||
install: man
|
||||
$(INSTALL) -d -m755 $(DESTDIR)$(man1dir) $(DESTDIR)$(man7dir)
|
||||
$(INSTALL) -m644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
|
||||
$(INSTALL) -m644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
|
||||
info: git.info gitman.info
|
||||
|
||||
pdf: user-manual.pdf
|
||||
|
||||
install: install-man
|
||||
|
||||
install-man: man
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
|
||||
$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
|
||||
$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
|
||||
$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
|
||||
|
||||
install-info: info
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
|
||||
$(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir)
|
||||
if test -r $(DESTDIR)$(infodir)/dir; then \
|
||||
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\
|
||||
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\
|
||||
else \
|
||||
echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
|
||||
fi
|
||||
|
||||
install-pdf: pdf
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(pdfdir)
|
||||
$(INSTALL) -m 644 user-manual.pdf $(DESTDIR)$(pdfdir)
|
||||
|
||||
install-html: html
|
||||
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)
|
||||
|
||||
../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
||||
$(MAKE) -C ../ GIT-VERSION-FILE
|
||||
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
||||
|
||||
-include ../GIT-VERSION-FILE
|
||||
|
||||
@ -74,8 +193,8 @@ install: man
|
||||
# Determine "include::" file references in asciidoc files.
|
||||
#
|
||||
doc.dep : $(wildcard *.txt) build-docdep.perl
|
||||
rm -f $@+ $@
|
||||
perl ./build-docdep.perl >$@+
|
||||
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
|
||||
mv $@+ $@
|
||||
|
||||
-include doc.dep
|
||||
@ -92,61 +211,106 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
|
||||
|
||||
$(cmds_txt): cmd-list.made
|
||||
|
||||
cmd-list.made: cmd-list.perl $(MAN1_TXT)
|
||||
perl ./cmd-list.perl
|
||||
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
||||
$(QUIET_GEN)$(RM) $@ && \
|
||||
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \
|
||||
date >$@
|
||||
|
||||
git.7 git.html: git.txt core-intro.txt
|
||||
|
||||
clean:
|
||||
rm -f *.xml *.xml+ *.html *.html+ *.1 *.7 howto-index.txt howto/*.html doc.dep
|
||||
rm -f $(cmds_txt) *.made
|
||||
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
||||
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
||||
$(RM) howto-index.txt howto/*.html doc.dep
|
||||
$(RM) technical/api-*.html technical/api-index.txt
|
||||
$(RM) $(cmds_txt) *.made
|
||||
|
||||
%.html : %.txt
|
||||
rm -f $@+ $@
|
||||
$(MAN_HTML): %.html : %.txt
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
|
||||
$(ASCIIDOC_EXTRA) -o - $< | \
|
||||
sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
|
||||
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
%.1 %.7 : %.xml
|
||||
xmlto -m callouts.xsl man $<
|
||||
%.1 %.5 %.7 : %.xml
|
||||
$(QUIET_XMLTO)$(RM) $@ && \
|
||||
xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||
|
||||
%.xml : %.txt
|
||||
rm -f $@+ $@
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
$(ASCIIDOC) -b docbook -d manpage -f asciidoc.conf \
|
||||
$(ASCIIDOC_EXTRA) -o - $< | \
|
||||
sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' >$@+
|
||||
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.xml: user-manual.txt user-manual.conf
|
||||
$(ASCIIDOC) -b docbook -d book $<
|
||||
$(QUIET_ASCIIDOC)$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book $<
|
||||
|
||||
XSLT = http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl
|
||||
technical/api-index.txt: technical/api-index-skel.txt \
|
||||
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
||||
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
|
||||
|
||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index): %.html : %.txt
|
||||
$(QUIET_ASCIIDOC)$(ASCIIDOC) -b xhtml11 -f asciidoc.conf \
|
||||
$(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) $*.txt
|
||||
|
||||
XSLT = docbook.xsl
|
||||
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
|
||||
|
||||
user-manual.html: user-manual.xml
|
||||
xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
|
||||
$(QUIET_XSLTPROC)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
|
||||
|
||||
git.info: user-manual.texi
|
||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
||||
|
||||
user-manual.texi: user-manual.xml
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \
|
||||
$(PERL_PATH) fix-texi.perl <$@++ >$@+ && \
|
||||
rm $@++ && \
|
||||
mv $@+ $@
|
||||
|
||||
user-manual.pdf: user-manual.xml
|
||||
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
|
||||
$(DBLATEX) -o $@+ -p /etc/asciidoc/dblatex/asciidoc-dblatex.xsl -s /etc/asciidoc/dblatex/asciidoc-dblatex.sty $< && \
|
||||
mv $@+ $@
|
||||
|
||||
gitman.texi: $(MAN_XML) cat-texi.perl
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
|
||||
--to-stdout $(xml) &&) true) > $@++ && \
|
||||
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
||||
rm $@++ && \
|
||||
mv $@+ $@
|
||||
|
||||
gitman.info: gitman.texi
|
||||
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
||||
|
||||
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
||||
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
||||
$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
|
||||
rm -f $@+ $@
|
||||
sh ./howto-index.sh $(wildcard howto/*.txt) >$@+
|
||||
$(QUIET_GEN)$(RM) $@+ $@ && \
|
||||
'$(SHELL_PATH_SQ)' ./howto-index.sh $(wildcard howto/*.txt) >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
||||
$(ASCIIDOC) -b xhtml11 $*.txt
|
||||
$(QUIET_ASCIIDOC)$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b xhtml11 $*.txt
|
||||
|
||||
WEBDOC_DEST = /pub/software/scm/git/docs
|
||||
|
||||
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
|
||||
rm -f $@+ $@
|
||||
sed -e '1,/^$$/d' $< | $(ASCIIDOC) -b xhtml11 - >$@+
|
||||
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
||||
sed -e '1,/^$$/d' $< | $(ASCIIDOC) $(ASCIIDOC_EXTRA) -b xhtml11 - >$@+ && \
|
||||
mv $@+ $@
|
||||
|
||||
install-webdoc : html
|
||||
sh ./install-webdoc.sh $(WEBDOC_DEST)
|
||||
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
||||
|
||||
quick-install:
|
||||
sh ./install-doc-quick.sh $(DOC_REF) $(mandir)
|
||||
quick-install: quick-install-man
|
||||
|
||||
quick-install-man:
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir)
|
||||
|
||||
quick-install-html:
|
||||
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)
|
||||
|
||||
.PHONY: .FORCE-GIT-VERSION-FILE
|
||||
|
@ -20,5 +20,3 @@ Fixes since v1.5.0.3
|
||||
* Documentation updates
|
||||
|
||||
* User manual updates
|
||||
|
||||
|
||||
|
@ -24,5 +24,3 @@ Fixes since v1.5.0.3
|
||||
* Documentation updates
|
||||
|
||||
* User manual updates
|
||||
|
||||
|
||||
|
@ -19,4 +19,3 @@ Fixes since v1.5.0.5
|
||||
- user-manual has better cross references.
|
||||
|
||||
- gitweb installation/deployment procedure is now documented.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
GIT v1.5.1.1 Release Notes (draft)
|
||||
GIT v1.5.1.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1
|
||||
@ -10,8 +10,23 @@ Fixes since v1.5.1
|
||||
|
||||
- The documentation for cvsimport has been majorly improved.
|
||||
|
||||
- "git-show-ref --exclude-existing" was documented.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- The implementation of -p option in "git cvsexportcommit" had
|
||||
the meaning of -C (context reduction) option wrong, and
|
||||
loosened the context requirements when it was told to be
|
||||
strict.
|
||||
|
||||
- "git cvsserver" did not behave like the real cvsserver when
|
||||
client side removed a file from the working tree without
|
||||
doing anything else on the path. In such a case, it should
|
||||
restore it from the checked out revision.
|
||||
|
||||
- "git fsck" issued an alarming error message on detached
|
||||
HEAD. It is not an error since at least 1.5.0.
|
||||
|
||||
- "git send-email" produced of References header of unbounded length;
|
||||
fixed this with line-folding.
|
||||
|
||||
@ -37,10 +52,14 @@ Fixes since v1.5.1
|
||||
- gitweb did not show type-changing patch correctly in the
|
||||
blobdiff view.
|
||||
|
||||
* Performance Tweaks
|
||||
- git-svn did not error out with incorrect command line options.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.5.1-26-ge94a4f6
|
||||
echo O=`git describe refs/heads/maint`
|
||||
git shortlog --no-merges $O..refs/heads/maint
|
||||
- git-svn fell into an infinite loop when insanely long commit
|
||||
message was found.
|
||||
|
||||
- git-svn dcommit and rebase was confused by patches that were
|
||||
merged from another branch that is managed by git-svn.
|
||||
|
||||
- git-svn used to get confused when globbing remote branch/tag
|
||||
spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
|
||||
is used and there was a plain file that matched the glob.
|
||||
|
50
Documentation/RelNotes-1.5.1.2.txt
Normal file
50
Documentation/RelNotes-1.5.1.2.txt
Normal file
@ -0,0 +1,50 @@
|
||||
GIT v1.5.1.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.1
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git clone" over http from a repository that has lost the
|
||||
loose refs by running "git pack-refs" were broken (a code to
|
||||
deal with this was added to "git fetch" in v1.5.0, but it
|
||||
was missing from "git clone").
|
||||
|
||||
- "git diff a/ b/" incorrectly fell in "diff between two
|
||||
filesystem objects" codepath, when the user most likely
|
||||
wanted to limit the extent of output to two tracked
|
||||
directories.
|
||||
|
||||
- git-quiltimport had the same bug as we fixed for
|
||||
git-applymbox in v1.5.1.1 -- it gave an alarming "did not
|
||||
have any patch" message (but did not actually fail and was
|
||||
harmless).
|
||||
|
||||
- various git-svn fixes.
|
||||
|
||||
- Sample update hook incorrectly always refused requests to
|
||||
delete branches through push.
|
||||
|
||||
- git-blame on a very long working tree path had buffer
|
||||
overrun problem.
|
||||
|
||||
- git-apply did not like to be fed two patches in a row that created
|
||||
and then modified the same file.
|
||||
|
||||
- git-svn was confused when a non-project was stored directly under
|
||||
trunk/, branches/ and tags/.
|
||||
|
||||
- git-svn wants the Error.pm module that was at least as new
|
||||
as what we ship as part of git; install ours in our private
|
||||
installation location if the one on the system is older.
|
||||
|
||||
- An earlier update to command line integer parameter parser was
|
||||
botched and made 'update-index --cacheinfo' completely useless.
|
||||
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- Various documentation updates from J. Bruce Fields, Frank
|
||||
Lichtenheld, Alex Riesen and others. Andrew Ruder started a
|
||||
war on undocumented options.
|
45
Documentation/RelNotes-1.5.1.3.txt
Normal file
45
Documentation/RelNotes-1.5.1.3.txt
Normal file
@ -0,0 +1,45 @@
|
||||
GIT v1.5.1.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.2
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-add tried to optimize by finding common leading
|
||||
directories across its arguments but botched, causing very
|
||||
confused behaviour.
|
||||
|
||||
- unofficial rpm.spec file shipped with git was letting
|
||||
ETC_GITCONFIG set to /usr/etc/gitconfig. Tweak the official
|
||||
Makefile to make it harder for distro people to make the
|
||||
same mistake, by setting the variable to /etc/gitconfig if
|
||||
prefix is set to /usr.
|
||||
|
||||
- git-svn inconsistently stripped away username from the URL
|
||||
only when svnsync_props was in use.
|
||||
|
||||
- git-svn got confused when handling symlinks on Mac OS.
|
||||
|
||||
- git-send-email was not quoting recipient names that have
|
||||
period '.' in them. Also it did not allow overriding
|
||||
envelope sender, which made it impossible to send patches to
|
||||
certain subscriber-only lists.
|
||||
|
||||
- built-in write_tree() routine had a sequence that renamed a
|
||||
file that is still open, which some systems did not like.
|
||||
|
||||
- when memory is very tight, sliding mmap code to read
|
||||
packfiles incorrectly closed the fd that was still being
|
||||
used to read the pack.
|
||||
|
||||
- import-tars contributed front-end for fastimport was passing
|
||||
wrong directory modes without checking.
|
||||
|
||||
- git-fastimport trusted its input too much and allowed to
|
||||
create corrupt tree objects with entries without a name.
|
||||
|
||||
- git-fetch needlessly barfed when too long reflog action
|
||||
description was given by the caller.
|
||||
|
||||
Also contains various documentation updates.
|
30
Documentation/RelNotes-1.5.1.4.txt
Normal file
30
Documentation/RelNotes-1.5.1.4.txt
Normal file
@ -0,0 +1,30 @@
|
||||
GIT v1.5.1.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git-http-fetch" did not work around a bug in libcurl
|
||||
earlier than 7.16 (curl_multi_remove_handle() was broken).
|
||||
|
||||
- "git cvsserver" handles a file that was once removed and
|
||||
then added again correctly.
|
||||
|
||||
- import-tars script (in contrib/) handles GNU tar archives
|
||||
that contain pathnames longer than 100 bytes (long-link
|
||||
extension) correctly.
|
||||
|
||||
- xdelta test program did not build correctly.
|
||||
|
||||
- gitweb sometimes tried incorrectly to apply function to
|
||||
decode utf8 twice, resulting in corrupt output.
|
||||
|
||||
- "git blame -C" mishandled text at the end of a group of
|
||||
lines.
|
||||
|
||||
- "git log/rev-list --boundary" did not produce output
|
||||
correctly without --left-right option.
|
||||
|
||||
- Many documentation updates.
|
42
Documentation/RelNotes-1.5.1.5.txt
Normal file
42
Documentation/RelNotes-1.5.1.5.txt
Normal file
@ -0,0 +1,42 @@
|
||||
GIT v1.5.1.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-send-email did not understand aliases file for mutt, which
|
||||
allows leading whitespaces.
|
||||
|
||||
- git-format-patch emitted Content-Type and Content-Transfer-Encoding
|
||||
headers for non ASCII contents, but failed to add MIME-Version.
|
||||
|
||||
- git-name-rev had a buffer overrun with a deep history.
|
||||
|
||||
- contributed script import-tars did not get the directory in
|
||||
tar archives interpreted correctly.
|
||||
|
||||
- git-svn was reported to segfault for many people on list and
|
||||
#git; hopefully this has been fixed.
|
||||
|
||||
- "git-svn clone" does not try to minimize the URL
|
||||
(i.e. connect to higher level hierarchy) by default, as this
|
||||
can prevent clone to fail if only part of the repository
|
||||
(e.g. 'trunk') is open to public.
|
||||
|
||||
- "git checkout branch^0" did not detach the head when you are
|
||||
already on 'branch'; backported the fix from the 'master'.
|
||||
|
||||
- "git-config section.var" did not correctly work when
|
||||
existing configuration file had both [section] and [section "name"]
|
||||
next to each other.
|
||||
|
||||
- "git clone ../other-directory" was fooled if the current
|
||||
directory $PWD points at is a symbolic link.
|
||||
|
||||
- (build) tree_entry_extract() function was both static inline
|
||||
and extern, which caused trouble compiling with Forte12
|
||||
compilers on Sun.
|
||||
|
||||
- Many many documentation fixes and updates.
|
45
Documentation/RelNotes-1.5.1.6.txt
Normal file
45
Documentation/RelNotes-1.5.1.6.txt
Normal file
@ -0,0 +1,45 @@
|
||||
GIT v1.5.1.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-send-email did not understand aliases file for mutt, which
|
||||
allows leading whitespaces.
|
||||
|
||||
- git-format-patch emitted Content-Type and Content-Transfer-Encoding
|
||||
headers for non ASCII contents, but failed to add MIME-Version.
|
||||
|
||||
- git-name-rev had a buffer overrun with a deep history.
|
||||
|
||||
- contributed script import-tars did not get the directory in
|
||||
tar archives interpreted correctly.
|
||||
|
||||
- git-svn was reported to segfault for many people on list and
|
||||
#git; hopefully this has been fixed.
|
||||
|
||||
- git-svn also had a bug to crash svnserve by sending a bad
|
||||
sequence of requests.
|
||||
|
||||
- "git-svn clone" does not try to minimize the URL
|
||||
(i.e. connect to higher level hierarchy) by default, as this
|
||||
can prevent clone to fail if only part of the repository
|
||||
(e.g. 'trunk') is open to public.
|
||||
|
||||
- "git checkout branch^0" did not detach the head when you are
|
||||
already on 'branch'; backported the fix from the 'master'.
|
||||
|
||||
- "git-config section.var" did not correctly work when
|
||||
existing configuration file had both [section] and [section "name"]
|
||||
next to each other.
|
||||
|
||||
- "git clone ../other-directory" was fooled if the current
|
||||
directory $PWD points at is a symbolic link.
|
||||
|
||||
- (build) tree_entry_extract() function was both static inline
|
||||
and extern, which caused trouble compiling with Forte12
|
||||
compilers on Sun.
|
||||
|
||||
- Many many documentation fixes and updates.
|
53
Documentation/RelNotes-1.5.2.1.txt
Normal file
53
Documentation/RelNotes-1.5.2.1.txt
Normal file
@ -0,0 +1,53 @@
|
||||
GIT v1.5.2.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2
|
||||
------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- Temporary files that are used when invoking external diff
|
||||
programs did not tolerate a long TMPDIR.
|
||||
|
||||
- git-daemon did not notice when it could not write into its
|
||||
pid file.
|
||||
|
||||
- git-status did not honor core.excludesFile configuration like
|
||||
git-add did.
|
||||
|
||||
- git-annotate did not work from a subdirectory while
|
||||
git-blame did.
|
||||
|
||||
- git-cvsserver should have disabled access to a repository
|
||||
with "gitcvs.pserver.enabled = false" set even when
|
||||
"gitcvs.enabled = true" was set at the same time. It
|
||||
didn't.
|
||||
|
||||
- git-cvsimport did not work correctly in a repository with
|
||||
its branch heads were packed with pack-refs.
|
||||
|
||||
- ident unexpansion to squash "$Id: xxx $" that is in the
|
||||
repository copy removed incorrect number of bytes.
|
||||
|
||||
- git-svn misbehaved when the subversion repository did not
|
||||
provide MD5 checksums for files.
|
||||
|
||||
- git rebase (and git am) misbehaved on commits that have '\n'
|
||||
(literally backslash and en, not a linefeed) in the title.
|
||||
|
||||
- code to decode base85 used in binary patches had one error
|
||||
return codepath wrong.
|
||||
|
||||
- RFC2047 Q encoding output by git-format-patch used '_' for a
|
||||
space, which is not understood by some programs. It uses =20
|
||||
which is safer.
|
||||
|
||||
- git-fastimport --import-marks was broken; fixed.
|
||||
|
||||
- A lot of documentation updates, clarifications and fixes.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.5.2-65-g996e2d6
|
||||
echo O=`git describe refs/heads/maint`
|
||||
git shortlog --no-merges $O..refs/heads/maint
|
61
Documentation/RelNotes-1.5.2.2.txt
Normal file
61
Documentation/RelNotes-1.5.2.2.txt
Normal file
@ -0,0 +1,61 @@
|
||||
GIT v1.5.2.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.1
|
||||
--------------------
|
||||
|
||||
* Usability fix
|
||||
|
||||
- git-gui is shipped with its updated blame interface. It is
|
||||
rumored that the older one was not just unusable but was
|
||||
active health hazard, but this one is actually pretty.
|
||||
Please see for yourself.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git checkout fubar" was utterly confused when there is a
|
||||
branch fubar and a tag fubar at the same time. It correctly
|
||||
checks out the branch fubar now.
|
||||
|
||||
- "git clone /path/foo" to clone a local /path/foo.git
|
||||
repository left an incorrect configuration.
|
||||
|
||||
- "git send-email" correctly unquotes RFC 2047 quoted names in
|
||||
the patch-email before using their values.
|
||||
|
||||
- We did not accept number of seconds since epoch older than
|
||||
year 2000 as a valid timestamp. We now interpret positive
|
||||
integers more than 8 digits as such, which allows us to
|
||||
express timestamps more recent than March 1973.
|
||||
|
||||
- git-cvsimport did not work when you have GIT_DIR to point
|
||||
your repository at a nonstandard location.
|
||||
|
||||
- Some systems (notably, Solaris) lack hstrerror() to make
|
||||
h_errno human readable; prepare a replacement
|
||||
implementation.
|
||||
|
||||
- .gitignore file listed git-core.spec but what we generate is
|
||||
git.spec, and nobody noticed for a long time.
|
||||
|
||||
- "git-merge-recursive" does not try to run file level merge
|
||||
on binary files.
|
||||
|
||||
- "git-branch --track" did not create tracking configuration
|
||||
correctly when the branch name had slash in it.
|
||||
|
||||
- The email address of the user specified with user.email
|
||||
configuration was overridden by EMAIL environment variable.
|
||||
|
||||
- The tree parser did not warn about tree entries with
|
||||
nonsense file modes, and assumed they must be blobs.
|
||||
|
||||
- "git log -z" without any other request to generate diff still
|
||||
invoked the diff machinery, wasting cycles.
|
||||
|
||||
* Documentation
|
||||
|
||||
- Many updates to fix stale or missing documentation.
|
||||
|
||||
- Although our documentation was primarily meant to be formatted
|
||||
with AsciiDoc7, formatting with AsciiDoc8 is supported better.
|
27
Documentation/RelNotes-1.5.2.3.txt
Normal file
27
Documentation/RelNotes-1.5.2.3.txt
Normal file
@ -0,0 +1,27 @@
|
||||
GIT v1.5.2.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.2
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- Version 2 pack index format was introduced in version 1.5.2
|
||||
to support pack files that has offset that cannot be
|
||||
represented in 32-bit. The runtime code to validate such
|
||||
an index mishandled such an index for an empty pack.
|
||||
|
||||
- Commit walkers (most notably, fetch over http protocol)
|
||||
tried to traverse commit objects contained in trees (aka
|
||||
subproject); they shouldn't.
|
||||
|
||||
- A build option NO_R_TO_GCC_LINKER was not explained in Makefile
|
||||
comment correctly.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- git-config --regexp was not documented properly.
|
||||
|
||||
- git-repack -a was not documented properly.
|
||||
|
||||
- git-remote -n was not documented properly.
|
28
Documentation/RelNotes-1.5.2.4.txt
Normal file
28
Documentation/RelNotes-1.5.2.4.txt
Normal file
@ -0,0 +1,28 @@
|
||||
GIT v1.5.2.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git-gui" bugfixes, including a handful fixes to run it
|
||||
better on Cygwin/MSYS.
|
||||
|
||||
- "git checkout" failed to switch back and forth between
|
||||
branches, one of which has "frotz -> xyzzy" symlink and
|
||||
file "xyzzy/filfre", while the other one has a file
|
||||
"frotz/filfre".
|
||||
|
||||
- "git prune" used to segfault upon seeing a commit that is
|
||||
referred to by a tree object (aka "subproject").
|
||||
|
||||
- "git diff --name-status --no-index" mishandled an added file.
|
||||
|
||||
- "git apply --reverse --whitespace=warn" still complained
|
||||
about whitespaces that a forward application would have
|
||||
introduced.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- A handful documentation updates.
|
30
Documentation/RelNotes-1.5.2.5.txt
Normal file
30
Documentation/RelNotes-1.5.2.5.txt
Normal file
@ -0,0 +1,30 @@
|
||||
GIT v1.5.2.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git add -u" had a serious data corruption problem in one
|
||||
special case (when the changes to a subdirectory's files
|
||||
consist only deletion of files).
|
||||
|
||||
- "git add -u <path>" did not work from a subdirectory.
|
||||
|
||||
- "git apply" left an empty directory after all its files are
|
||||
renamed away.
|
||||
|
||||
- "git $anycmd foo/bar", when there is a file 'foo' in the
|
||||
working tree, complained that "git $anycmd foo/bar --" form
|
||||
should be used to disambiguate between revs and files,
|
||||
which was completely bogus.
|
||||
|
||||
- "git checkout-index" and other commands that checks out
|
||||
files to the work tree tried unlink(2) on directories,
|
||||
which is a sane thing to do on sane systems, but not on
|
||||
Solaris when you are root.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- A handful documentation fixes.
|
@ -1,16 +1,88 @@
|
||||
GIT v1.5.2 Release Notes (draft)
|
||||
GIT v1.5.2 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.1
|
||||
--------------------
|
||||
|
||||
* Plumbing level superproject support.
|
||||
|
||||
You can include a subdirectory that has an independent git
|
||||
repository in your index and tree objects of your project
|
||||
("superproject"). This plumbing (i.e. "core") level
|
||||
superproject support explicitly excludes recursive behaviour.
|
||||
|
||||
The "subproject" entries in the index and trees of a superproject
|
||||
are incompatible with older versions of git. Experimenting with
|
||||
the plumbing level support is encouraged, but be warned that
|
||||
unless everybody in your project updates to this release or
|
||||
later, using this feature would make your project
|
||||
inaccessible by people with older versions of git.
|
||||
|
||||
* Plumbing level gitattributes support.
|
||||
|
||||
The gitattributes mechanism allows you to add 'attributes' to
|
||||
paths in your project, and affect the way certain git
|
||||
operations work. Currently you can influence if a path is
|
||||
considered a binary or text (the former would be treated by
|
||||
'git diff' not to produce textual output; the latter can go
|
||||
through the line endings conversion process in repositories
|
||||
with core.autocrlf set), expand and unexpand '$Id$' keyword
|
||||
with blob object name, specify a custom 3-way merge driver,
|
||||
and specify a custom diff driver. You can also apply
|
||||
arbitrary filter to contents on check-in/check-out codepath
|
||||
but this feature is an extremely sharp-edged razor and needs
|
||||
to be handled with caution (do not use it unless you
|
||||
understand the earlier mailing list discussion on keyword
|
||||
expansion). These conversions apply when checking files in
|
||||
or out, and exporting via git-archive.
|
||||
|
||||
* The packfile format now optionally supports 64-bit index.
|
||||
|
||||
This release supports the "version 2" format of the .idx
|
||||
file. This is automatically enabled when a huge packfile
|
||||
needs more than 32-bit to express offsets of objects in the
|
||||
pack.
|
||||
|
||||
* Comes with an updated git-gui 0.7.1
|
||||
|
||||
* Updated gitweb:
|
||||
|
||||
- can show combined diff for merges;
|
||||
- uses font size of user's preference, not hardcoded in pixels;
|
||||
- can now 'grep';
|
||||
|
||||
* New commands and options.
|
||||
|
||||
- "git bisect start" can optionally take a single bad commit and
|
||||
zero or more good commits on the command line.
|
||||
|
||||
- "git shortlog" can optionally be told to wrap its output.
|
||||
|
||||
- "subtree" merge strategy allows another project to be merged in as
|
||||
your subdirectory.
|
||||
|
||||
- "git format-patch" learned a new --subject-prefix=<string>
|
||||
option, to override the built-in "[PATCH]".
|
||||
|
||||
- "git add -u" is a quick way to do the first stage of "git
|
||||
commit -a" (i.e. update the index to match the working
|
||||
tree); it obviously does not make a commit.
|
||||
|
||||
- "git clean" honors a new configuration, "clean.requireforce". When
|
||||
set to true, this makes "git clean" a no-op, preventing you
|
||||
from losing files by typing "git clean" when you meant to
|
||||
say "make clean". You can still say "git clean -f" to
|
||||
override this.
|
||||
|
||||
- "git log" family of commands learned --date={local,relative,default}
|
||||
option. --date=relative is synonym to the --relative-date.
|
||||
--date=local gives the timestamp in local timezone.
|
||||
|
||||
* Updated behavior of existing commands.
|
||||
|
||||
- When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
|
||||
but $EMAIL is set, the latter is used as a substitute.
|
||||
|
||||
- "git diff --stat" shows size of preimage and postimage blobs
|
||||
for binary contents. Earlier it only said "Bin".
|
||||
|
||||
@ -27,6 +99,35 @@ Updates since v1.5.1
|
||||
the root commit). We used to refuse to operate without a
|
||||
good and a bad commit.
|
||||
|
||||
- "git push", when pushing into more than one repository, does
|
||||
not stop at the first error.
|
||||
|
||||
- "git archive" does not insist you to give --format parameter
|
||||
anymore; it defaults to "tar".
|
||||
|
||||
- "git cvsserver" can use backends other than sqlite.
|
||||
|
||||
- "gitview" (in contrib/ section) learned to better support
|
||||
"git-annotate".
|
||||
|
||||
- "git diff $commit1:$path2 $commit2:$path2" can now report
|
||||
mode changes between the two blobs.
|
||||
|
||||
- Local "git fetch" from a repository whose object store is
|
||||
one of the alternates (e.g. fetching from the origin in a
|
||||
repository created with "git clone -l -s") avoids
|
||||
downloading objects unnecessarily.
|
||||
|
||||
- "git blame" uses .mailmap to canonicalize the author name
|
||||
just like "git shortlog" does.
|
||||
|
||||
- "git pack-objects" pays attention to pack.depth
|
||||
configuration variable.
|
||||
|
||||
- "git cherry-pick" and "git revert" does not use .msg file in
|
||||
the working tree to prepare commit message; instead it uses
|
||||
$GIT_DIR/MERGE_MSG as other commands do.
|
||||
|
||||
* Builds
|
||||
|
||||
- git-p4import has never been installed; now there is an
|
||||
@ -35,25 +136,37 @@ Updates since v1.5.1
|
||||
- gitk and git-gui can be configured out.
|
||||
|
||||
- Generated documentation pages automatically get version
|
||||
information from GIT_VERSION
|
||||
information from GIT_VERSION.
|
||||
|
||||
- Parallel build with "make -j" descending into subdirectory
|
||||
was fixed.
|
||||
|
||||
* Performance Tweaks
|
||||
|
||||
- optimized "git-rev-list --bisect" (hence "git-bisect").
|
||||
- Optimized "git-rev-list --bisect" (hence "git-bisect").
|
||||
|
||||
- optimized "git-add $path" in a large directory, most of
|
||||
- Optimized "git-add $path" in a large directory, most of
|
||||
whose contents are ignored.
|
||||
|
||||
- Optimized "git-diff-tree" for reduced memory footprint.
|
||||
|
||||
- The recursive merge strategy updated a worktree file that
|
||||
was changed identically in two branches, when one of them
|
||||
renamed it. We do not do that when there is no rename, so
|
||||
match that behaviour. This avoids excessive rebuilds.
|
||||
|
||||
- The default pack depth has been increased to 50, as the
|
||||
recent addition of delta_base_cache makes deeper delta chains
|
||||
much less expensive to access. Depending on the project, it was
|
||||
reported that this reduces the resulting pack file by 10%
|
||||
or so.
|
||||
|
||||
|
||||
Fixes since v1.5.1
|
||||
------------------
|
||||
|
||||
The following are all in v1.5.1.x series, unless otherwise noted.
|
||||
|
||||
* Documentation updates
|
||||
All of the fixes in v1.5.1 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
@ -67,10 +180,18 @@ The following are all in v1.5.1.x series, unless otherwise noted.
|
||||
been backported to 1.5.1.x series, as it is rather an
|
||||
intrusive change.
|
||||
|
||||
* Performance Tweaks
|
||||
- Merging branches that have a file in one and a directory in
|
||||
another at the same path used to get quite confused. We
|
||||
handle such a case a bit more carefully, even though that is
|
||||
still left as a conflict for the user to sort out. This
|
||||
will not be backported to 1.5.1.x series, as it is rather an
|
||||
intrusive change.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.5.1-91-g640ee0d
|
||||
echo O=`git describe refs/heads/master`
|
||||
git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint
|
||||
- git-fetch had trouble with a remote with insanely large number
|
||||
of refs.
|
||||
|
||||
- "git clean -d -X" now does not remove non-excluded directories.
|
||||
|
||||
- rebasing (without -m) a series that changes a symlink to a directory
|
||||
in the middle of a path confused git-apply greatly and refused to
|
||||
operate.
|
||||
|
10
Documentation/RelNotes-1.5.3.1.txt
Normal file
10
Documentation/RelNotes-1.5.3.1.txt
Normal file
@ -0,0 +1,10 @@
|
||||
GIT v1.5.3.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3
|
||||
------------------
|
||||
|
||||
This is solely to fix the generated RPM's dependencies. We used
|
||||
to have git-p4 package but we do not anymore. As suggested on
|
||||
the mailing list, this release makes git-core "Obsolete" git-p4,
|
||||
so that yum update would not complain.
|
58
Documentation/RelNotes-1.5.3.2.txt
Normal file
58
Documentation/RelNotes-1.5.3.2.txt
Normal file
@ -0,0 +1,58 @@
|
||||
GIT v1.5.3.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.1
|
||||
--------------------
|
||||
|
||||
* git-push sent thin packs by default, which was not good for
|
||||
the public distribution server (no point in saving transfer
|
||||
while pushing; no point in making the resulting pack less
|
||||
optimum).
|
||||
|
||||
* git-svn sometimes terminated with "Malformed network data" when
|
||||
talking over svn:// protocol.
|
||||
|
||||
* git-send-email re-issued the same message-id about 10% of the
|
||||
time if you fired off 30 messages within a single second.
|
||||
|
||||
* git-stash was not terminating the log message of commits it
|
||||
internally creates with LF.
|
||||
|
||||
* git-apply failed to check the size of the patch hunk when its
|
||||
beginning part matched the remainder of the preimage exactly,
|
||||
even though the preimage recorded in the hunk was much larger
|
||||
(therefore the patch should not have applied), leading to a
|
||||
segfault.
|
||||
|
||||
* "git rm foo && git commit foo" complained that 'foo' needs to
|
||||
be added first, instead of committing the removal, which was a
|
||||
nonsense.
|
||||
|
||||
* git grep -c said "/dev/null: 0".
|
||||
|
||||
* git-add -u failed to recognize a blob whose type changed
|
||||
between the index and the work tree.
|
||||
|
||||
* The limit to rename detection has been tightened a lot to
|
||||
reduce performance problems with a huge change.
|
||||
|
||||
* cvsimport and svnimport barfed when the input tried to move
|
||||
a tag.
|
||||
|
||||
* "git apply -pN" did not chop the right number of directories.
|
||||
|
||||
* "git svnimport" did not like SVN tags with funny characters in them.
|
||||
|
||||
* git-gui 0.8.3, with assorted fixes, including:
|
||||
|
||||
- font-chooser on X11 was unusable with large number of fonts;
|
||||
- a diff that contained a deleted symlink made it barf;
|
||||
- an untracked symbolic link to a directory made it fart;
|
||||
- a file with % in its name made it vomit;
|
||||
|
||||
|
||||
Documentation updates
|
||||
---------------------
|
||||
|
||||
User manual has been somewhat restructured. I think the new
|
||||
organization is much easier to read.
|
31
Documentation/RelNotes-1.5.3.3.txt
Normal file
31
Documentation/RelNotes-1.5.3.3.txt
Normal file
@ -0,0 +1,31 @@
|
||||
GIT v1.5.3.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.2
|
||||
--------------------
|
||||
|
||||
* git-quiltimport did not like it when a patch described in the
|
||||
series file does not exist.
|
||||
|
||||
* p4 importer missed executable bit in some cases.
|
||||
|
||||
* The default shell on some FreeBSD did not execute the
|
||||
argument parsing code correctly and made git unusable.
|
||||
|
||||
* git-svn incorrectly spawned pager even when the user
|
||||
explicitly asked not to.
|
||||
|
||||
* sample post-receive hook overquoted the envelope sender
|
||||
value.
|
||||
|
||||
* git-am got confused when the patch contained a change that is
|
||||
only about type and not contents.
|
||||
|
||||
* git-mergetool did not show our and their version of the
|
||||
conflicted file when started from a subdirectory of the
|
||||
project.
|
||||
|
||||
* git-mergetool did not pass correct options when invoking diff3.
|
||||
|
||||
* git-log sometimes invoked underlying "diff" machinery
|
||||
unnecessarily.
|
35
Documentation/RelNotes-1.5.3.4.txt
Normal file
35
Documentation/RelNotes-1.5.3.4.txt
Normal file
@ -0,0 +1,35 @@
|
||||
GIT v1.5.3.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.3
|
||||
--------------------
|
||||
|
||||
* Change to "git-ls-files" in v1.5.3.3 that was introduced to support
|
||||
partial commit of removal better had a segfaulting bug, which was
|
||||
diagnosed and fixed by Keith and Carl.
|
||||
|
||||
* Performance improvements for rename detection has been backported
|
||||
from the 'master' branch.
|
||||
|
||||
* "git-for-each-ref --format='%(numparent)'" was not working
|
||||
correctly at all, and --format='%(parent)' was not working for
|
||||
merge commits.
|
||||
|
||||
* Sample "post-receive-hook" incorrectly sent out push
|
||||
notification e-mails marked as "From: " the committer of the
|
||||
commit that happened to be at the tip of the branch that was
|
||||
pushed, not from the person who pushed.
|
||||
|
||||
* "git-remote" did not exit non-zero status upon error.
|
||||
|
||||
* "git-add -i" did not respond very well to EOF from tty nor
|
||||
bogus input.
|
||||
|
||||
* "git-rebase -i" squash subcommand incorrectly made the
|
||||
author of later commit the author of resulting commit,
|
||||
instead of taking from the first one in the squashed series.
|
||||
|
||||
* "git-stash apply --index" was not documented.
|
||||
|
||||
* autoconfiguration learned that "ar" command is found as "gas" on
|
||||
some systems.
|
94
Documentation/RelNotes-1.5.3.5.txt
Normal file
94
Documentation/RelNotes-1.5.3.5.txt
Normal file
@ -0,0 +1,94 @@
|
||||
GIT v1.5.3.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.4
|
||||
--------------------
|
||||
|
||||
* Comes with git-gui 0.8.4.
|
||||
|
||||
* "git-config" silently ignored options after --list; now it will
|
||||
error out with a usage message.
|
||||
|
||||
* "git-config --file" failed if the argument used a relative path
|
||||
as it changed directories before opening the file.
|
||||
|
||||
* "git-config --file" now displays a proper error message if it
|
||||
cannot read the file specified on the command line.
|
||||
|
||||
* "git-config", "git-diff", "git-apply" failed if run from a
|
||||
subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
|
||||
|
||||
* "git-blame" crashed if run during a merge conflict.
|
||||
|
||||
* "git-add -i" did not handle single line hunks correctly.
|
||||
|
||||
* "git-rebase -i" and "git-stash apply" failed if external diff
|
||||
drivers were used for one or more files in a commit. They now
|
||||
avoid calling the external diff drivers.
|
||||
|
||||
* "git-log --follow" did not work unless diff generation (e.g. -p)
|
||||
was also requested.
|
||||
|
||||
* "git-log --follow -B" did not work at all. Fixed.
|
||||
|
||||
* "git-log -M -B" did not correctly handle cases of very large files
|
||||
being renamed and replaced by very small files in the same commit.
|
||||
|
||||
* "git-log" printed extra newlines between commits when a diff
|
||||
was generated internally (e.g. -S or --follow) but not displayed.
|
||||
|
||||
* "git-push" error message is more helpful when pushing to a
|
||||
repository with no matching refs and none specified.
|
||||
|
||||
* "git-push" now respects + (force push) on wildcard refspecs,
|
||||
matching the behavior of git-fetch.
|
||||
|
||||
* "git-filter-branch" now updates the working directory when it
|
||||
has finished filtering the current branch.
|
||||
|
||||
* "git-instaweb" no longer fails on Mac OS X.
|
||||
|
||||
* "git-cvsexportcommit" didn't always create new parent directories
|
||||
before trying to create new child directories. Fixed.
|
||||
|
||||
* "git-fetch" printed a scary (but bogus) error message while
|
||||
fetching a tag that pointed to a tree or blob. The error did
|
||||
not impact correctness, only user perception. The bogus error
|
||||
is no longer printed.
|
||||
|
||||
* "git-ls-files --ignored" did not properly descend into non-ignored
|
||||
directories that themselves contained ignored files if d_type
|
||||
was not supported by the filesystem. This bug impacted systems
|
||||
such as AFS. Fixed.
|
||||
|
||||
* Git segfaulted when reading an invalid .gitattributes file. Fixed.
|
||||
|
||||
* post-receive-email example hook was fixed for non-fast-forward
|
||||
updates.
|
||||
|
||||
* Documentation updates for supported (but previously undocumented)
|
||||
options of "git-archive" and "git-reflog".
|
||||
|
||||
* "make clean" no longer deletes the configure script that ships
|
||||
with the git tarball, making multiple architecture builds easier.
|
||||
|
||||
* "git-remote show origin" spewed a warning message from Perl
|
||||
when no remote is defined for the current branch via
|
||||
branch.<name>.remote configuration settings.
|
||||
|
||||
* Building with NO_PERL_MAKEMAKER excessively rebuilt contents
|
||||
of perl/ subdirectory by rewriting perl.mak.
|
||||
|
||||
* http.sslVerify configuration settings were not used in scripted
|
||||
Porcelains.
|
||||
|
||||
* "git-add" leaked a bit of memory while scanning for files to add.
|
||||
|
||||
* A few workarounds to squelch false warnings from recent gcc have
|
||||
been added.
|
||||
|
||||
* "git-send-pack $remote frotz" segfaulted when there is nothing
|
||||
named 'frotz' on the local end.
|
||||
|
||||
* "git-rebase --interactive" did not handle its "--strategy" option
|
||||
properly.
|
48
Documentation/RelNotes-1.5.3.6.txt
Normal file
48
Documentation/RelNotes-1.5.3.6.txt
Normal file
@ -0,0 +1,48 @@
|
||||
GIT v1.5.3.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.5
|
||||
--------------------
|
||||
|
||||
* git-cvsexportcommit handles root commits better.
|
||||
|
||||
* git-svn dcommit used to clobber when sending a series of
|
||||
patches.
|
||||
|
||||
* git-svn dcommit failed after attempting to rebase when
|
||||
started with a dirty index; now it stops upfront.
|
||||
|
||||
* git-grep sometimes refused to work when your index was
|
||||
unmerged.
|
||||
|
||||
* "git-grep -A1 -B2" acted as if it was told to run "git -A1 -B21".
|
||||
|
||||
* git-hash-object did not honor configuration variables, such as
|
||||
core.compression.
|
||||
|
||||
* git-index-pack choked on a huge pack on 32-bit machines, even when
|
||||
large file offsets are supported.
|
||||
|
||||
* atom feeds from git-web said "10" for the month of November.
|
||||
|
||||
* a memory leak in commit walker was plugged.
|
||||
|
||||
* When git-send-email inserted the original author's From:
|
||||
address in body, it did not mark the message with
|
||||
Content-type: as needed.
|
||||
|
||||
* git-revert and git-cherry-pick incorrectly refused to start
|
||||
when the work tree was dirty.
|
||||
|
||||
* git-clean did not honor core.excludesfile configuration.
|
||||
|
||||
* git-add mishandled ".gitignore" files when applying them to
|
||||
subdirectories.
|
||||
|
||||
* While importing a too branchy history, git-fastimport did not
|
||||
honor delta depth limit properly.
|
||||
|
||||
* Support for zlib implementations that lack ZLIB_VERNUM and definition
|
||||
of deflateBound() has been added.
|
||||
|
||||
* Quite a lot of documentation clarifications.
|
45
Documentation/RelNotes-1.5.3.7.txt
Normal file
45
Documentation/RelNotes-1.5.3.7.txt
Normal file
@ -0,0 +1,45 @@
|
||||
GIT v1.5.3.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.6
|
||||
--------------------
|
||||
|
||||
* git-send-email added 8-bit contents to the payload without
|
||||
marking it as 8-bit in a CTE header.
|
||||
|
||||
* "git-bundle create a.bndl HEAD" dereferenced the symref and
|
||||
did not record the ref as 'HEAD'; this prevented a bundle
|
||||
from being used as a normal source of git-clone.
|
||||
|
||||
* The code to reject nonsense command line of the form
|
||||
"git-commit -a paths..." and "git-commit --interactive
|
||||
paths..." were broken.
|
||||
|
||||
* Adding a signature that is not ASCII-only to an original
|
||||
commit that is ASCII-only would make the result non-ASCII.
|
||||
"git-format-patch -s" did not mark such a message correctly
|
||||
with MIME encoding header.
|
||||
|
||||
* git-add sometimes did not mark the resulting index entry
|
||||
stat-clean. This affected only cases when adding the
|
||||
contents with the same length as the previously staged
|
||||
contents, and the previous staging made the index entry
|
||||
"racily clean".
|
||||
|
||||
* git-commit did not honor GIT_INDEX_FILE the user had in the
|
||||
environment.
|
||||
|
||||
* When checking out a revision, git-checkout did not report where the
|
||||
updated HEAD is if you happened to have a file called HEAD in the
|
||||
work tree.
|
||||
|
||||
* "git-rev-list --objects" mishandled a tree that points at a
|
||||
submodule.
|
||||
|
||||
* "git cvsimport" was not ready for packed refs that "git gc" can
|
||||
produce and gave incorrect results.
|
||||
|
||||
* Many scripted Porcelains were confused when you happened to have a
|
||||
file called "HEAD" in your work tree.
|
||||
|
||||
Also it contains updates to the user manual and documentation.
|
25
Documentation/RelNotes-1.5.3.8.txt
Normal file
25
Documentation/RelNotes-1.5.3.8.txt
Normal file
@ -0,0 +1,25 @@
|
||||
GIT v1.5.3.8 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.7
|
||||
--------------------
|
||||
|
||||
* Some documentation used "email.com" as an example domain.
|
||||
|
||||
* git-svn fix to handle funky branch and project names going over
|
||||
http/https correctly.
|
||||
|
||||
* git-svn fix to tone down a needlessly alarming warning message.
|
||||
|
||||
* git-clone did not correctly report errors while fetching over http.
|
||||
|
||||
* git-send-email added redundant Message-Id: header to the outgoing
|
||||
e-mail when the patch text already had one.
|
||||
|
||||
* a read-beyond-end-of-buffer bug in configuration file updater was fixed.
|
||||
|
||||
* git-grep used to show the same hit repeatedly for unmerged paths.
|
||||
|
||||
* After amending the patch title in "git-am -i", the command did not
|
||||
report the patch it applied with the updated title.
|
||||
|
366
Documentation/RelNotes-1.5.3.txt
Normal file
366
Documentation/RelNotes-1.5.3.txt
Normal file
@ -0,0 +1,366 @@
|
||||
GIT v1.5.3 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.2
|
||||
--------------------
|
||||
|
||||
* The commit walkers other than http are officially deprecated,
|
||||
but still supported for now.
|
||||
|
||||
* The submodule support has Porcelain layer.
|
||||
|
||||
Note that the current submodule support is minimal and this is
|
||||
deliberately so. A design decision we made is that operations
|
||||
at the supermodule level do not recurse into submodules by
|
||||
default. The expectation is that later we would add a
|
||||
mechanism to tell git which submodules the user is interested
|
||||
in, and this information might be used to determine the
|
||||
recursive behaviour of certain commands (e.g. "git checkout"
|
||||
and "git diff"), but currently we haven't agreed on what that
|
||||
mechanism should look like. Therefore, if you use submodules,
|
||||
you would probably need "git submodule update" on the
|
||||
submodules you care about after running a "git checkout" at
|
||||
the supermodule level.
|
||||
|
||||
* There are a handful pack-objects changes to help you cope better
|
||||
with repositories with pathologically large blobs in them.
|
||||
|
||||
* For people who need to import from Perforce, a front-end for
|
||||
fast-import is in contrib/fast-import/.
|
||||
|
||||
* Comes with git-gui 0.8.2.
|
||||
|
||||
* Comes with updated gitk.
|
||||
|
||||
* New commands and options.
|
||||
|
||||
- "git log --date=<format>" can use more formats: iso8601, rfc2822.
|
||||
|
||||
- The hunk header output from "git diff" family can be customized
|
||||
with the attributes mechanism. See gitattributes(5) for details.
|
||||
|
||||
- "git stash" allows you to quickly save away your work in
|
||||
progress and replay it later on an updated state.
|
||||
|
||||
- "git rebase" learned an "interactive" mode that let you
|
||||
pick and reorder which commits to rebuild.
|
||||
|
||||
- "git fsck" can save its findings in $GIT_DIR/lost-found, without a
|
||||
separate invocation of "git lost-found" command. The blobs stored by
|
||||
lost-found are stored in plain format to allow you to grep in them.
|
||||
|
||||
- $GIT_WORK_TREE environment variable can be used together with
|
||||
$GIT_DIR to work in a subdirectory of a working tree that is
|
||||
not located at "$GIT_DIR/..".
|
||||
|
||||
- Giving "--file=<file>" option to "git config" is the same as
|
||||
running the command with GIT_CONFIG=<file> environment.
|
||||
|
||||
- "git log" learned a new option "--follow", to follow
|
||||
renaming history of a single file.
|
||||
|
||||
- "git filter-branch" lets you rewrite the revision history of
|
||||
specified branches. You can specify a number of filters to
|
||||
modify the commits, files and trees.
|
||||
|
||||
- "git cvsserver" learned new options (--base-path, --export-all,
|
||||
--strict-paths) inspired by "git daemon".
|
||||
|
||||
- "git daemon --base-path-relaxed" can help migrating a repository URL
|
||||
that did not use to use --base-path to use --base-path.
|
||||
|
||||
- "git commit" can use "-t templatefile" option and commit.template
|
||||
configuration variable to prime the commit message given to you in the
|
||||
editor.
|
||||
|
||||
- "git submodule" command helps you manage the projects from
|
||||
the superproject that contain them.
|
||||
|
||||
- In addition to core.compression configuration option,
|
||||
core.loosecompression and pack.compression options can
|
||||
independently tweak zlib compression levels used for loose
|
||||
and packed objects.
|
||||
|
||||
- "git ls-tree -l" shows size of blobs pointed at by the
|
||||
tree entries, similar to "/bin/ls -l".
|
||||
|
||||
- "git rev-list" learned --regexp-ignore-case and
|
||||
--extended-regexp options to tweak its matching logic used
|
||||
for --grep filtering.
|
||||
|
||||
- "git describe --contains" is a handier way to call more
|
||||
obscure command "git name-rev --tags".
|
||||
|
||||
- "git gc --aggressive" tells the command to spend more cycles
|
||||
to optimize the repository harder.
|
||||
|
||||
- "git repack" learned a "window-memory" limit which
|
||||
dynamically reduces the window size to stay within the
|
||||
specified memory usage.
|
||||
|
||||
- "git repack" can be told to split resulting packs to avoid
|
||||
exceeding limit specified with "--max-pack-size".
|
||||
|
||||
- "git fsck" gained --verbose option. This is really really
|
||||
verbose but it might help you identify exact commit that is
|
||||
corrupt in your repository.
|
||||
|
||||
- "git format-patch" learned --numbered-files option. This
|
||||
may be useful for MH users.
|
||||
|
||||
- "git format-patch" learned format.subjectprefix configuration
|
||||
variable, which serves the same purpose as "--subject-prefix"
|
||||
option.
|
||||
|
||||
- "git tag -n -l" shows tag annotations while listing tags.
|
||||
|
||||
- "git cvsimport" can optionally use the separate-remote layout.
|
||||
|
||||
- "git blame" can be told to see through commits that change
|
||||
whitespaces and indentation levels with "-w" option.
|
||||
|
||||
- "git send-email" can be told not to thread the messages when
|
||||
sending out more than one patches.
|
||||
|
||||
- "git send-email" can also be told how to find whom to cc the
|
||||
message to for each message via --cc-cmd.
|
||||
|
||||
- "git config" learned NUL terminated output format via -z to
|
||||
help scripts.
|
||||
|
||||
- "git add" learned "--refresh <paths>..." option to selectively refresh
|
||||
the cached stat information.
|
||||
|
||||
- "git init -q" makes the command quieter.
|
||||
|
||||
- "git -p command" now has a cousin of opposite sex, "git --no-pager
|
||||
command".
|
||||
|
||||
* Updated behavior of existing commands.
|
||||
|
||||
- "gitweb" can offer multiple snapshot formats.
|
||||
|
||||
***NOTE*** Unfortunately, this changes the format of the
|
||||
$feature{snapshot}{default} entry in the per-site
|
||||
configuration file 'gitweb_config.perl'. It used to be a
|
||||
three-element tuple that describe a single format; with the
|
||||
new configuration item format, you only have to say the name
|
||||
of the format ('tgz', 'tbz2' or 'zip'). Please update the
|
||||
your configuration file accordingly.
|
||||
|
||||
- "git clone" uses -l (hardlink files under .git) by default when
|
||||
cloning locally.
|
||||
|
||||
- URL used for "git clone" and friends can specify nonstandard SSH port
|
||||
by using ssh://host:port/path/to/repo syntax.
|
||||
|
||||
- "git bundle create" can now create a bundle without negative refs,
|
||||
i.e. "everything since the beginning up to certain points".
|
||||
|
||||
- "git diff" (but not the plumbing level "git diff-tree") now
|
||||
recursively descends into trees by default.
|
||||
|
||||
- "git diff" does not show differences that come only from
|
||||
stat-dirtiness in the form of "diff --git" header anymore.
|
||||
It runs "update-index --refresh" silently as needed.
|
||||
|
||||
- "git tag -l" used to match tags by globbing its parameter as if it
|
||||
has wildcard '*' on both ends, which made "git tag -l gui" to match
|
||||
tag 'gitgui-0.7.0'; this was very annoying. You now have to add
|
||||
asterisk on the sides you want to wildcard yourself.
|
||||
|
||||
- The editor to use with many interactive commands can be
|
||||
overridden with GIT_EDITOR environment variable, or if it
|
||||
does not exist, with core.editor configuration variable. As
|
||||
before, if you have neither, environment variables VISUAL
|
||||
and EDITOR are consulted in this order, and then finally we
|
||||
fall back on "vi".
|
||||
|
||||
- "git rm --cached" does not complain when removing a newly
|
||||
added file from the index anymore.
|
||||
|
||||
- Options to "git log" to affect how --grep/--author options look for
|
||||
given strings now have shorter abbreviations. -i is for ignore case,
|
||||
and -E is for extended regexp.
|
||||
|
||||
- "git log" learned --log-size to show the number of bytes in
|
||||
the log message part of the output to help qgit.
|
||||
|
||||
- "git log --name-status" does not require you to give "-r" anymore.
|
||||
As a general rule, Porcelain commands should recurse when showing
|
||||
diff.
|
||||
|
||||
- "git format-patch --root A" can be used to format everything
|
||||
since the beginning up to A. This was supported with
|
||||
"git format-patch --root A A" for a long time, but was not
|
||||
properly documented.
|
||||
|
||||
- "git svn dcommit" retains local merge information.
|
||||
|
||||
- "git svnimport" allows an empty string to be specified as the
|
||||
trunk/ directory. This is necessary to suck data from a SVN
|
||||
repository that doe not have trunk/ branches/ and tags/ organization
|
||||
at all.
|
||||
|
||||
- "git config" to set values also honors type flags like --bool
|
||||
and --int.
|
||||
|
||||
- core.quotepath configuration can be used to make textual git
|
||||
output to emit most of the characters in the path literally.
|
||||
|
||||
- "git mergetool" chooses its backend more wisely, taking
|
||||
notice of its environment such as use of X, Gnome/KDE, etc.
|
||||
|
||||
- "gitweb" shows merge commits a lot nicer than before. The
|
||||
default view uses more compact --cc format, while the UI
|
||||
allows to choose normal diff with any parent.
|
||||
|
||||
- snapshot files "gitweb" creates from a repository at
|
||||
$path/$project/.git are more useful. We use $project part
|
||||
in the filename, which we used to discard.
|
||||
|
||||
- "git cvsimport" creates lightweight tags; there is no
|
||||
interesting information we can record in an annotated tag,
|
||||
and the handcrafted ones the old code created was not
|
||||
properly formed anyway.
|
||||
|
||||
- "git push" pretends that you immediately fetched back from
|
||||
the remote by updating corresponding remote tracking
|
||||
branches if you have any.
|
||||
|
||||
- The diffstat given after a merge (or a pull) honors the
|
||||
color.diff configuration.
|
||||
|
||||
- "git commit --amend" is now compatible with various message source
|
||||
options such as -m/-C/-c/-F.
|
||||
|
||||
- "git apply --whitespace=strip" removes blank lines added at
|
||||
the end of the file.
|
||||
|
||||
- "git fetch" over git native protocols with "-v" option shows
|
||||
connection status, and the IP address of the other end, to
|
||||
help diagnosing problems.
|
||||
|
||||
- We used to have core.legacyheaders configuration, when
|
||||
set to false, allowed git to write loose objects in a format
|
||||
that mimics the format used by objects stored in packs. It
|
||||
turns out that this was not so useful. Although we will
|
||||
continue to read objects written in that format, we do not
|
||||
honor that configuration anymore and create loose objects in
|
||||
the legacy/traditional format.
|
||||
|
||||
- "--find-copies-harder" option to diff family can now be
|
||||
spelled as "-C -C" for brevity.
|
||||
|
||||
- "git mailsplit" (hence "git am") can read from Maildir
|
||||
formatted mailboxes.
|
||||
|
||||
- "git cvsserver" does not barf upon seeing "cvs login"
|
||||
request.
|
||||
|
||||
- "pack-objects" honors "delta" attribute set in
|
||||
.gitattributes. It does not attempt to deltify blobs that
|
||||
come from paths with delta attribute set to false.
|
||||
|
||||
- "new-workdir" script (in contrib) can now be used with a
|
||||
bare repository.
|
||||
|
||||
- "git mergetool" learned to use gvimdiff.
|
||||
|
||||
- "gitview" (in contrib) has a better blame interface.
|
||||
|
||||
- "git log" and friends did not handle a commit log message
|
||||
that is larger than 16kB; they do now.
|
||||
|
||||
- "--pretty=oneline" output format for "git log" and friends
|
||||
deals with "malformed" commit log messages that have more
|
||||
than one lines in the first paragraph better. We used to
|
||||
show the first line, cutting the title at mid-sentence; we
|
||||
concatenate them into a single line and treat the result as
|
||||
"oneline".
|
||||
|
||||
- "git p4import" has been demoted to contrib status. For
|
||||
a superior option, checkout the "git p4" front end to
|
||||
"git fast-import" (also in contrib). The man page and p4
|
||||
rpm have been removed as well.
|
||||
|
||||
- "git mailinfo" (hence "am") now tries to see if the message
|
||||
is in utf-8 first, instead of assuming iso-8859-1, if
|
||||
incoming e-mail does not say what encoding it is in.
|
||||
|
||||
* Builds
|
||||
|
||||
- old-style function definitions (most notably, a function
|
||||
without parameter defined with "func()", not "func(void)")
|
||||
have been eradicated.
|
||||
|
||||
- "git tag" and "git verify-tag" have been rewritten in C.
|
||||
|
||||
* Performance Tweaks
|
||||
|
||||
- "git pack-objects" avoids re-deltification cost by caching
|
||||
small enough delta results it creates while looking for the
|
||||
best delta candidates.
|
||||
|
||||
- "git pack-objects" learned a new heuristic to prefer delta
|
||||
that is shallower in depth over the smallest delta
|
||||
possible. This improves both overall packfile access
|
||||
performance and packfile density.
|
||||
|
||||
- diff-delta code that is used for packing has been improved
|
||||
to work better on big files.
|
||||
|
||||
- when there are more than one pack files in the repository,
|
||||
the runtime used to try finding an object always from the
|
||||
newest packfile; it now tries the same packfile as we found
|
||||
the object requested the last time, which exploits the
|
||||
locality of references.
|
||||
|
||||
- verifying pack contents done by "git fsck --full" got boost
|
||||
by carefully choosing the order to verify objects in them.
|
||||
|
||||
- "git read-tree -m" to read into an already populated index
|
||||
has been optimized vastly. The effect of this can be seen
|
||||
when switching branches that have differences in only a
|
||||
handful paths.
|
||||
|
||||
- "git add paths..." and "git commit paths..." has also been
|
||||
heavily optimized.
|
||||
|
||||
Fixes since v1.5.2
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.2 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "gitweb" had trouble handling non UTF-8 text with older
|
||||
Encode.pm Perl module.
|
||||
|
||||
- "git svn" misparsed the data from the commits in the repository when
|
||||
the user had "color.diff = true" in the configuration. This has been
|
||||
fixed.
|
||||
|
||||
- There was a case where "git svn dcommit" clobbered changes made on the
|
||||
SVN side while committing multiple changes.
|
||||
|
||||
- "git-write-tree" had a bad interaction with racy-git avoidance and
|
||||
gitattributes mechanisms.
|
||||
|
||||
- "git --bare command" overrode existing GIT_DIR setting and always
|
||||
made it treat the current working directory as GIT_DIR.
|
||||
|
||||
- "git ls-files --error-unmatch" does not complain if you give the
|
||||
same path pattern twice by mistake.
|
||||
|
||||
- "git init" autodetected core.filemode but not core.symlinks, which
|
||||
made a new directory created automatically by "git clone" cumbersome
|
||||
to use on filesystems that require these configurations to be set.
|
||||
|
||||
- "git log" family of commands behaved differently when run as "git
|
||||
log" (no pathspec) and as "git log --" (again, no pathspec). This
|
||||
inconsistency was introduced somewhere in v1.3.0 series but now has
|
||||
been corrected.
|
||||
|
||||
- "git rebase -m" incorrectly displayed commits that were skipped.
|
17
Documentation/RelNotes-1.5.4.1.txt
Normal file
17
Documentation/RelNotes-1.5.4.1.txt
Normal file
@ -0,0 +1,17 @@
|
||||
GIT v1.5.4.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
* "git-commit -C $tag" used to work but rewrite in C done in
|
||||
1.5.4 broke it.
|
||||
|
||||
* An entry in the .gitattributes file that names a pattern in a
|
||||
subdirectory of the directory it is in did not match
|
||||
correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
|
||||
match "a/b/foo.c" but it didn't).
|
||||
|
||||
* Customized color specification was parsed incorrectly when
|
||||
numeric color values are used. This was fixed in 1.5.4.1.
|
||||
|
43
Documentation/RelNotes-1.5.4.2.txt
Normal file
43
Documentation/RelNotes-1.5.4.2.txt
Normal file
@ -0,0 +1,43 @@
|
||||
GIT v1.5.4.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
* The configuration parser was not prepared to see string
|
||||
valued variables misspelled as boolean and segfaulted.
|
||||
|
||||
* Temporary files left behind due to interrupted object
|
||||
transfers were not cleaned up with "git prune".
|
||||
|
||||
* "git config --unset" was confused when the unset variables
|
||||
were spelled with continuation lines in the config file.
|
||||
|
||||
* The merge message detection in "git cvsimport" did not catch
|
||||
a message that began with "Merge...".
|
||||
|
||||
* "git status" suggests "git rm --cached" for unstaging the
|
||||
earlier "git add" before the initial commit.
|
||||
|
||||
* "git status" output was incorrect during a partial commit.
|
||||
|
||||
* "git bisect" refused to start when the HEAD was detached.
|
||||
|
||||
* "git bisect" allowed a wildcard character in the commit
|
||||
message expanded while writing its log file.
|
||||
|
||||
* Manual pages were not formatted correctly with docbook xsl
|
||||
1.72; added a workaround.
|
||||
|
||||
* "git-commit -C $tag" used to work but rewrite in C done in
|
||||
1.5.4 broke it. This was fixed in 1.5.4.1.
|
||||
|
||||
* An entry in the .gitattributes file that names a pattern in a
|
||||
subdirectory of the directory it is in did not match
|
||||
correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
|
||||
match "a/b/foo.c" but it didn't). This was fixed in 1.5.4.1.
|
||||
|
||||
* Customized color specification was parsed incorrectly when
|
||||
numeric color values are used. This was fixed in 1.5.4.1.
|
||||
|
||||
* http transport misbehaved when linked with curl-gnutls.
|
27
Documentation/RelNotes-1.5.4.3.txt
Normal file
27
Documentation/RelNotes-1.5.4.3.txt
Normal file
@ -0,0 +1,27 @@
|
||||
GIT v1.5.4.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.2
|
||||
--------------------
|
||||
|
||||
* RPM spec used to pull in everything with 'git'. This has been
|
||||
changed so that 'git' package contains just the core parts,
|
||||
and we now supply 'git-all' metapackage to slurp in everything.
|
||||
This should match end user's expectation better.
|
||||
|
||||
* When some refs failed to update, git-push reported "failure"
|
||||
which was unclear if some other refs were updated or all of
|
||||
them failed atomically (the answer is the former). Reworded
|
||||
the message to clarify this.
|
||||
|
||||
* "git clone" from a repository whose HEAD was misconfigured
|
||||
did not set up the remote properly. Now it tries to do
|
||||
better.
|
||||
|
||||
* Updated git-push documentation to clarify what "matching"
|
||||
means, in order to reduce user confusion.
|
||||
|
||||
* Updated git-add documentation to clarify "add -u" operates in
|
||||
the current subdirectory you are in, just like other commands.
|
||||
|
||||
* git-gui updates to work on OSX and Windows better.
|
66
Documentation/RelNotes-1.5.4.4.txt
Normal file
66
Documentation/RelNotes-1.5.4.4.txt
Normal file
@ -0,0 +1,66 @@
|
||||
GIT v1.5.4.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.3
|
||||
--------------------
|
||||
|
||||
* Building and installing with an overtight umask such as 077 made
|
||||
installed templates unreadable by others, while the rest of the install
|
||||
are done in a way that is friendly to umask 022.
|
||||
|
||||
* "git cvsexportcommit -w $cvsdir" misbehaved when GIT_DIR is set to a
|
||||
relative directory.
|
||||
|
||||
* "git http-push" had an invalid memory access that could lead it to
|
||||
segfault.
|
||||
|
||||
* When "git rebase -i" gave control back to the user for a commit that is
|
||||
marked to be edited, it just said "modify it with commit --amend",
|
||||
without saying what to do to continue after modifying it. Give an
|
||||
explicit instruction to run "rebase --continue" to be more helpful.
|
||||
|
||||
* "git send-email" in 1.5.4.3 issued a bogus empty In-Reply-To: header.
|
||||
|
||||
* "git bisect" showed mysterious "won't bisect on seeked tree" error message.
|
||||
This was leftover from Cogito days to prevent "bisect" starting from a
|
||||
cg-seeked state. We still keep the Cogito safety, but running "git bisect
|
||||
start" when another bisect was in effect will clean up and start over.
|
||||
|
||||
* "git push" with an explicit PATH to receive-pack did not quite work if
|
||||
receive-pack was not on usual PATH. We earlier fixed the same issue
|
||||
with "git fetch" and upload-pack, but somehow forgot to do so in the
|
||||
other direction.
|
||||
|
||||
* git-gui's info dialog was not displayed correctly when the user tries
|
||||
to commit nothing (i.e. without staging anything).
|
||||
|
||||
* "git revert" did not properly fail when attempting to run with a
|
||||
dirty index.
|
||||
|
||||
* "git merge --no-commit --no-ff <other>" incorrectly made commits.
|
||||
|
||||
* "git merge --squash --no-ff <other>", which is a nonsense combination
|
||||
of options, was not rejected.
|
||||
|
||||
* "git ls-remote" and "git remote show" against an empty repository
|
||||
failed, instead of just giving an empty result (regression).
|
||||
|
||||
* "git fast-import" did not handle a renamed path whose name needs to be
|
||||
quoted, due to a bug in unquote_c_style() function.
|
||||
|
||||
* "git cvsexportcommit" was confused when multiple files with the same
|
||||
basename needed to be pushed out in the same commit.
|
||||
|
||||
* "git daemon" did not send early errors to syslog.
|
||||
|
||||
* "git log --merge" did not work well with --left-right option.
|
||||
|
||||
* "git svn" prompted for client cert password every time it accessed the
|
||||
server.
|
||||
|
||||
* The reset command in "git fast-import" data stream was documented to
|
||||
end with an optional LF, but it actually required one.
|
||||
|
||||
* "git svn dcommit/rebase" did not honor --rewrite-root option.
|
||||
|
||||
Also included are a handful documentation updates.
|
56
Documentation/RelNotes-1.5.4.5.txt
Normal file
56
Documentation/RelNotes-1.5.4.5.txt
Normal file
@ -0,0 +1,56 @@
|
||||
GIT v1.5.4.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.4
|
||||
--------------------
|
||||
|
||||
* "git fetch there" when the URL information came from the Cogito style
|
||||
branches/there file did not update refs/heads/there (regression in
|
||||
1.5.4).
|
||||
|
||||
* Bogus refspec configuration such as "remote.there.fetch = =" were not
|
||||
detected as errors (regression in 1.5.4).
|
||||
|
||||
* You couldn't specify a custom editor whose path contains a whitespace
|
||||
via GIT_EDITOR (and core.editor).
|
||||
|
||||
* The subdirectory filter to "git filter-branch" mishandled a history
|
||||
where the subdirectory becomes empty and then later becomes non-empty.
|
||||
|
||||
* "git shortlog" gave an empty line if the original commit message was
|
||||
malformed (e.g. a botched import from foreign SCM). Now it finds the
|
||||
first non-empty line and uses it for better information.
|
||||
|
||||
* When the user fails to give a revision parameter to "git svn", an error
|
||||
from the Perl interpreter was issued because the script lacked proper
|
||||
error checking.
|
||||
|
||||
* After "git rebase" stopped due to conflicts, if the user played with
|
||||
"git reset" and friends, "git rebase --abort" failed to go back to the
|
||||
correct commit.
|
||||
|
||||
* Additional work trees prepared with git-new-workdir (in contrib/) did
|
||||
not share git-svn metadata directory .git/svn with the original.
|
||||
|
||||
* "git-merge-recursive" did not mark addition of the same path with
|
||||
different filemodes correctly as a conflict.
|
||||
|
||||
* "gitweb" gave malformed URL when pathinfo stype paths are in use.
|
||||
|
||||
* "-n" stands for "--no-tags" again for "git fetch".
|
||||
|
||||
* "git format-patch" did not detect the need to add 8-bit MIME header
|
||||
when the user used format.header configuration.
|
||||
|
||||
* "rev~" revision specifier used to mean "rev", which was inconsistent
|
||||
with how "rev^" worked. Now "rev~" is the same as "rev~1" (hence it
|
||||
also is the same as "rev^1"), and "rev~0" is the same as "rev^0"
|
||||
(i.e. it has to be a commit).
|
||||
|
||||
* "git quiltimport" did not grok empty lines, lines in "file -pNNN"
|
||||
format to specify the prefix levels and lines with trailing comments.
|
||||
|
||||
* "git rebase -m" triggered pre-commit verification, which made
|
||||
"rebase --continue" impossible.
|
||||
|
||||
As usual, it also comes with many documentation fixes and clarifications.
|
43
Documentation/RelNotes-1.5.4.6.txt
Normal file
43
Documentation/RelNotes-1.5.4.6.txt
Normal file
@ -0,0 +1,43 @@
|
||||
GIT v1.5.4.6 Release Notes
|
||||
==========================
|
||||
|
||||
I personally do not think there is any reason anybody should want to
|
||||
run v1.5.4.X series these days, because 'master' version is always
|
||||
more stable than any tagged released version of git.
|
||||
|
||||
This is primarily to futureproof "git-shell" to accept requests
|
||||
without a dash between "git" and subcommand name (e.g. "git
|
||||
upload-pack") which the newer client will start to make sometime in
|
||||
the future.
|
||||
|
||||
Fixes since v1.5.4.5
|
||||
--------------------
|
||||
|
||||
* Command line option "-n" to "git-repack" was not correctly parsed.
|
||||
|
||||
* Error messages from "git-apply" when the patchfile cannot be opened
|
||||
have been improved.
|
||||
|
||||
* Error messages from "git-bisect" when given nonsense revisions have
|
||||
been improved.
|
||||
|
||||
* reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
|
||||
stop parsing at the closing "}".
|
||||
|
||||
* "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
|
||||
but it should print nothing.
|
||||
|
||||
* "git apply" did not enforce "match at the beginning" correctly.
|
||||
|
||||
* a path specification "a/b" in .gitattributes file should not match
|
||||
"sub/a/b", but it did.
|
||||
|
||||
* "git log --date-order --topo-order" did not override the earlier
|
||||
date-order with topo-order as expected.
|
||||
|
||||
* "git fast-export" did not export octopus merges correctly.
|
||||
|
||||
* "git archive --prefix=$path/" mishandled gitattributes.
|
||||
|
||||
As usual, it also comes with many documentation fixes and clarifications.
|
||||
|
10
Documentation/RelNotes-1.5.4.7.txt
Normal file
10
Documentation/RelNotes-1.5.4.7.txt
Normal file
@ -0,0 +1,10 @@
|
||||
GIT v1.5.4.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.4.7
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
377
Documentation/RelNotes-1.5.4.txt
Normal file
377
Documentation/RelNotes-1.5.4.txt
Normal file
@ -0,0 +1,377 @@
|
||||
GIT v1.5.4 Release Notes
|
||||
========================
|
||||
|
||||
Removal
|
||||
-------
|
||||
|
||||
* "git svnimport" was removed in favor of "git svn". It is still there
|
||||
in the source tree (contrib/examples) but unsupported.
|
||||
|
||||
* As git-commit and git-status have been rewritten, "git runstatus"
|
||||
helper script lost all its users and has been removed.
|
||||
|
||||
|
||||
Temporarily disabled
|
||||
--------------------
|
||||
|
||||
* "git http-push" is known not to work well with cURL library older
|
||||
than 7.16, and we had reports of repository corruption. It is
|
||||
disabled on such platforms for now. Unfortunately, 1.5.3.8 shares
|
||||
the same issue. In other words, this does not mean you will be
|
||||
fine if you stick to an older git release. For now, please do not
|
||||
use http-push from older git with cURL older than 7.16 if you
|
||||
value your data. A proper fix will hopefully materialize in
|
||||
later versions.
|
||||
|
||||
|
||||
Deprecation notices
|
||||
-------------------
|
||||
|
||||
* From v1.6.0, git will by default install dashed form of commands
|
||||
(e.g. "git-commit") outside of users' normal $PATH, and will install
|
||||
only selected commands ("git" itself, and "gitk") in $PATH. This
|
||||
implies:
|
||||
|
||||
- Using dashed forms of git commands (e.g. "git-commit") from the
|
||||
command line has been informally deprecated since early 2006, but
|
||||
now it officially is, and will be removed in the future. Use
|
||||
dash-less forms (e.g. "git commit") instead.
|
||||
|
||||
- Using dashed forms from your scripts, without first prepending the
|
||||
return value from "git --exec-path" to the scripts' PATH, has been
|
||||
informally deprecated since early 2006, but now it officially is.
|
||||
|
||||
- Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
|
||||
PATH" early in your script is not deprecated with this change.
|
||||
|
||||
Users are strongly encouraged to adjust their habits and scripts now
|
||||
to prepare for this change.
|
||||
|
||||
* The post-receive hook was introduced in March 2007 to supersede
|
||||
the post-update hook, primarily to overcome the command line length
|
||||
limitation of the latter. Use of post-update hook will be deprecated
|
||||
in future versions of git, starting from v1.6.0.
|
||||
|
||||
* "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
|
||||
option, and will be removed in the future.
|
||||
|
||||
* "git peek-remote" is deprecated, as "git ls-remote" was written in C
|
||||
and works for all transports; "git peek-remote" will be removed in
|
||||
the future.
|
||||
|
||||
* "git repo-config" which was an old name for "git config" command
|
||||
has been supported without being advertised for a long time. The
|
||||
next feature release will remove it.
|
||||
|
||||
* From v1.6.0, the repack.usedeltabaseoffset config option will default
|
||||
to true, which will give denser packfiles (i.e. more efficient storage).
|
||||
The downside is that git older than version 1.4.4 will not be able
|
||||
to directly use a repository packed using this setting.
|
||||
|
||||
* From v1.6.0, the pack.indexversion config option will default to 2,
|
||||
which is slightly more efficient, and makes repacking more immune to
|
||||
data corruptions. Git older than version 1.5.2 may revert to version 1
|
||||
of the pack index with a manual "git index-pack" to be able to directly
|
||||
access corresponding pack files.
|
||||
|
||||
|
||||
Updates since v1.5.3
|
||||
--------------------
|
||||
|
||||
* Comes with much improved gitk, with i18n.
|
||||
|
||||
* Comes with git-gui 0.9.2 with i18n.
|
||||
|
||||
* gitk is now merged as a subdirectory of git.git project, in
|
||||
preparation for its i18n.
|
||||
|
||||
* progress displays from many commands are a lot nicer to the eye.
|
||||
Transfer commands show throughput data.
|
||||
|
||||
* many commands that pay attention to per-directory .gitignore now do
|
||||
so lazily, which makes the usual case go much faster.
|
||||
|
||||
* Output processing for '--pretty=format:<user format>' has been
|
||||
optimized.
|
||||
|
||||
* Rename detection of diff family while detecting exact matches has
|
||||
been greatly optimized.
|
||||
|
||||
* Rename detection of diff family tries to make more natural looking
|
||||
pairing. Earlier, if multiple identical rename sources were
|
||||
found in the preimage, the source used was picked pretty much at random.
|
||||
|
||||
* Value "true" for color.diff and color.status configuration used to
|
||||
mean "always" (even when the output is not going to a terminal).
|
||||
This has been corrected to mean the same thing as "auto".
|
||||
|
||||
* "git diff" Porcelain now respects diff.external configuration, which
|
||||
is another way to specify GIT_EXTERNAL_DIFF.
|
||||
|
||||
* "git diff" can be told to use different prefixes other than
|
||||
"a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
|
||||
|
||||
* "git diff" sometimes did not quote paths with funny
|
||||
characters properly.
|
||||
|
||||
* "git log" (and any revision traversal commands) misbehaved
|
||||
when --diff-filter is given but was not asked to actually
|
||||
produce diff.
|
||||
|
||||
* HTTP proxy can be specified per remote repository using
|
||||
remote.*.httpproxy configuration, or global http.proxy configuration
|
||||
variable.
|
||||
|
||||
* Various Perforce importer updates.
|
||||
|
||||
* Example update and post-receive hooks have been improved.
|
||||
|
||||
* Any command that wants to take a commit object name can now use
|
||||
":/string" syntax to name a commit.
|
||||
|
||||
* "git reset" is now built-in and its output can be squelched with -q.
|
||||
|
||||
* "git reset --hard" does not make any sense in a bare
|
||||
repository, but did not error out; fixed.
|
||||
|
||||
* "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
|
||||
|
||||
* "git rebase" learned --whitespace option.
|
||||
|
||||
* In "git rebase", when you decide not to replay a particular change
|
||||
after the command stopped with a conflict, you can say "git rebase
|
||||
--skip" without first running "git reset --hard", as the command now
|
||||
runs it for you.
|
||||
|
||||
* "git rebase --interactive" mode can now work on detached HEAD.
|
||||
|
||||
* Other minor to serious bugs in "git rebase -i" have been fixed.
|
||||
|
||||
* "git rebase" now detaches head during its operation, so after a
|
||||
successful "git rebase" operation, the reflog entry branch@{1} for
|
||||
the current branch points at the commit before the rebase was
|
||||
started.
|
||||
|
||||
* "git rebase -i" also triggers rerere to help your repeated merges.
|
||||
|
||||
* "git merge" can call the "post-merge" hook.
|
||||
|
||||
* "git pack-objects" can optionally run deltification with multiple
|
||||
threads.
|
||||
|
||||
* "git archive" can optionally substitute keywords in files marked with
|
||||
export-subst attribute.
|
||||
|
||||
* "git cherry-pick" made a misguided attempt to repeat the original
|
||||
command line in the generated log message, when told to cherry-pick a
|
||||
commit by naming a tag that points at it. It does not anymore.
|
||||
|
||||
* "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
|
||||
various date fields in different formats.
|
||||
|
||||
* "git gc --auto" is a low-impact way to automatically run a variant of
|
||||
"git repack" that does not lose unreferenced objects (read: safer
|
||||
than the usual one) after the user accumulates too many loose
|
||||
objects.
|
||||
|
||||
* "git clean" has been rewritten in C.
|
||||
|
||||
* You need to explicitly set clean.requireForce to "false" to allow
|
||||
"git clean" without -f to do any damage (lack of the configuration
|
||||
variable used to mean "do not require -f option to lose untracked
|
||||
files", but we now use the safer default).
|
||||
|
||||
* The kinds of whitespace errors "git diff" and "git apply" notice (and
|
||||
fix) can be controlled via 'core.whitespace' configuration variable
|
||||
and 'whitespace' attribute in .gitattributes file.
|
||||
|
||||
* "git push" learned --dry-run option to show what would happen if a
|
||||
push is run.
|
||||
|
||||
* "git push" does not update a tracking ref on the local side when the
|
||||
remote refused to update the corresponding ref.
|
||||
|
||||
* "git push" learned --mirror option. This is to push the local refs
|
||||
one-to-one to the remote, and deletes refs from the remote that do
|
||||
not exist anymore in the repository on the pushing side.
|
||||
|
||||
* "git push" can remove a corrupt ref at the remote site with the usual
|
||||
":ref" refspec.
|
||||
|
||||
* "git remote" knows --mirror mode. This is to set up configuration to
|
||||
push into a remote repository to store local branch heads to the same
|
||||
branch on the remote side, and remove branch heads locally removed
|
||||
from local repository at the same time. Suitable for pushing into a
|
||||
back-up repository.
|
||||
|
||||
* "git remote" learned "rm" subcommand.
|
||||
|
||||
* "git cvsserver" can be run via "git shell". Also, "cvs" is
|
||||
recognized as a synonym for "git cvsserver", so that CVS users
|
||||
can be switched to git just by changing their login shell.
|
||||
|
||||
* "git cvsserver" acts more like receive-pack by running post-receive
|
||||
and post-update hooks.
|
||||
|
||||
* "git am" and "git rebase" are far less verbose.
|
||||
|
||||
* "git pull" learned to pass --[no-]ff option to underlying "git
|
||||
merge".
|
||||
|
||||
* "git pull --rebase" is a different way to integrate what you fetched
|
||||
into your current branch.
|
||||
|
||||
* "git fast-export" produces data-stream that can be fed to fast-import
|
||||
to reproduce the history recorded in a git repository.
|
||||
|
||||
* "git add -i" takes pathspecs to limit the set of files to work on.
|
||||
|
||||
* "git add -p" is a short-hand to go directly to the selective patch
|
||||
subcommand in the interactive command loop and to exit when done.
|
||||
|
||||
* "git add -i" UI has been colorized. The interactive prompt
|
||||
and menu can be colored by setting color.interactive
|
||||
configuration. The diff output (including the hunk picker)
|
||||
are colored with color.diff configuration.
|
||||
|
||||
* "git commit --allow-empty" allows you to create a single-parent
|
||||
commit that records the same tree as its parent, overriding the usual
|
||||
safety valve.
|
||||
|
||||
* "git commit --amend" can amend a merge that does not change the tree
|
||||
from its first parent.
|
||||
|
||||
* "git commit" used to unconditionally strip comment lines that
|
||||
began with '#' and removed excess blank lines. This behavior has
|
||||
been made configurable.
|
||||
|
||||
* "git commit" has been rewritten in C.
|
||||
|
||||
* "git stash random-text" does not create a new stash anymore. It was
|
||||
a UI mistake. Use "git stash save random-text", or "git stash"
|
||||
(without extra args) for that.
|
||||
|
||||
* "git stash clear extra-text" does not clear the whole stash
|
||||
anymore. It is tempting to expect "git stash clear stash@{2}"
|
||||
to drop only a single named stash entry, and it is rude to
|
||||
discard everything when that is asked (but not provided).
|
||||
|
||||
* "git prune --expire <time>" can exempt young loose objects from
|
||||
getting pruned.
|
||||
|
||||
* "git branch --contains <commit>" can list branches that are
|
||||
descendants of a given commit.
|
||||
|
||||
* "git log" learned --early-output option to help interactive GUI
|
||||
implementations.
|
||||
|
||||
* "git bisect" learned "skip" action to mark untestable commits.
|
||||
|
||||
* "git bisect visualize" learned a shorter synonym "git bisect view".
|
||||
|
||||
* "git bisect visualize" runs "git log" in a non-windowed
|
||||
environments. It also can be told what command to run (e.g. "git
|
||||
bisect visualize tig").
|
||||
|
||||
* "git format-patch" learned "format.numbered" configuration variable
|
||||
to automatically turn --numbered option on when more than one commits
|
||||
are formatted.
|
||||
|
||||
* "git ls-files" learned "--exclude-standard" to use the canned set of
|
||||
exclude files.
|
||||
|
||||
* "git tag -a -f existing" begins the editor session using the existing
|
||||
annotation message.
|
||||
|
||||
* "git tag -m one -m bar" (multiple -m options) behaves similarly to
|
||||
"git commit"; the parameters to -m options are formatted as separate
|
||||
paragraphs.
|
||||
|
||||
* The format "git show" outputs an annotated tag has been updated to
|
||||
include "Tagger: " and "Date: " lines from the tag itself. Strictly
|
||||
speaking this is a backward incompatible change, but this is a
|
||||
reasonable usability fix and people's scripts shouldn't have been
|
||||
relying on the exact output from "git show" Porcelain anyway.
|
||||
|
||||
* "git cvsimport" did not notice errors from underlying "cvsps"
|
||||
and produced a corrupt import silently.
|
||||
|
||||
* "git cvsexportcommit" learned -w option to specify and switch to the
|
||||
CVS working directory.
|
||||
|
||||
* "git checkout" from a subdirectory learned to use "../path" to allow
|
||||
checking out a path outside the current directory without cd'ing up.
|
||||
|
||||
* "git checkout" from and to detached HEAD leaves a bit more
|
||||
information in the reflog.
|
||||
|
||||
* "git send-email --dry-run" shows full headers for easier diagnosis.
|
||||
|
||||
* "git merge-ours" is now built-in.
|
||||
|
||||
* "git svn" learned "info" and "show-externals" subcommands.
|
||||
|
||||
* "git svn" run from a subdirectory failed to read settings from the
|
||||
.git/config.
|
||||
|
||||
* "git svn" learned --use-log-author option, which picks up more
|
||||
descriptive name from From: and Signed-off-by: lines in the commit
|
||||
message.
|
||||
|
||||
* "git svn" wasted way too much disk to record revision mappings
|
||||
between svn and git; a new representation that is much more compact
|
||||
for this information has been introduced to correct this.
|
||||
|
||||
* "git svn" left temporary index files it used without cleaning them
|
||||
up; this was corrected.
|
||||
|
||||
* "git status" from a subdirectory now shows relative paths, which
|
||||
makes copy-and-pasting for git-checkout/git-add/git-rm easier. The
|
||||
traditional behavior to show the full path relative to the top of
|
||||
the work tree can be had by setting status.relativepaths
|
||||
configuration variable to false.
|
||||
|
||||
* "git blame" kept text for each annotated revision in core needlessly;
|
||||
this has been corrected.
|
||||
|
||||
* "git shortlog" learned to default to HEAD when the standard input is
|
||||
a terminal and the user did not give any revision parameter.
|
||||
|
||||
* "git shortlog" learned "-e" option to show e-mail addresses as well as
|
||||
authors' names.
|
||||
|
||||
* "git help" learned "-w" option to show documentation in browsers.
|
||||
|
||||
* In addition there are quite a few internal clean-ups. Notably:
|
||||
|
||||
- many fork/exec have been replaced with run-command API,
|
||||
brought from the msysgit effort.
|
||||
|
||||
- introduction and more use of the option parser API.
|
||||
|
||||
- enhancement and more use of the strbuf API.
|
||||
|
||||
* Makefile tweaks to support HP-UX is in.
|
||||
|
||||
Fixes since v1.5.3
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.3 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
|
||||
series.
|
||||
|
||||
* The way "git diff --check" behaves is much more consistent with the way
|
||||
"git apply --whitespace=warn" works.
|
||||
|
||||
* "git svn" talking with the SVN over HTTP will correctly quote branch
|
||||
and project names.
|
||||
|
||||
* "git config" did not work correctly on platforms that define
|
||||
REG_NOMATCH to an even number.
|
||||
|
||||
* Recent versions of AsciiDoc 8 has a change to break our
|
||||
documentation; a workaround has been implemented.
|
||||
|
||||
* "git diff --color-words" colored context lines in a wrong color.
|
44
Documentation/RelNotes-1.5.5.1.txt
Normal file
44
Documentation/RelNotes-1.5.5.1.txt
Normal file
@ -0,0 +1,44 @@
|
||||
GIT v1.5.5.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5
|
||||
------------------
|
||||
|
||||
* "git archive --prefix=$path/" mishandled gitattributes.
|
||||
|
||||
* "git fetch -v" that fetches into FETCH_HEAD did not report the summary
|
||||
the same way as done for updating the tracking refs.
|
||||
|
||||
* "git svn" misbehaved when the configuration file customized the "git
|
||||
log" output format using format.pretty.
|
||||
|
||||
* "git submodule status" leaked an unnecessary error message.
|
||||
|
||||
* "git log --date-order --topo-order" did not override the earlier
|
||||
date-order with topo-order as expected.
|
||||
|
||||
* "git bisect good $this" did not check the validity of the revision
|
||||
given properly.
|
||||
|
||||
* "url.<there>.insteadOf" did not work correctly.
|
||||
|
||||
* "git clean" ran inside subdirectory behaved as if the directory was
|
||||
explicitly specified for removal by the end user from the top level.
|
||||
|
||||
* "git bisect" from a detached head leaked an unnecessary error message.
|
||||
|
||||
* "git bisect good $a $b" when $a is Ok but $b is bogus should have
|
||||
atomically failed before marking $a as good.
|
||||
|
||||
* "git fmt-merge-msg" did not clean up leading empty lines from commit
|
||||
log messages like "git log" family does.
|
||||
|
||||
* "git am" recorded a commit with empty Subject: line without
|
||||
complaining.
|
||||
|
||||
* when given a commit log message whose first paragraph consists of
|
||||
multiple lines, "git rebase" squashed it into a single line.
|
||||
|
||||
* "git remote add $bogus_name $url" did not complain properly.
|
||||
|
||||
Also comes with various documentation updates.
|
27
Documentation/RelNotes-1.5.5.2.txt
Normal file
27
Documentation/RelNotes-1.5.5.2.txt
Normal file
@ -0,0 +1,27 @@
|
||||
GIT v1.5.5.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.1
|
||||
--------------------
|
||||
|
||||
* "git repack -n" was mistakenly made no-op earlier.
|
||||
|
||||
* "git imap-send" wanted to always have imap.host even when use of
|
||||
imap.tunnel made it unnecessary.
|
||||
|
||||
* reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
|
||||
stop parsing at the closing "}".
|
||||
|
||||
* "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
|
||||
but it should print nothing.
|
||||
|
||||
* "git commit" did not detect when it failed to write tree objects.
|
||||
|
||||
* "git fetch" sometimes transferred too many objects unnecessarily.
|
||||
|
||||
* a path specification "a/b" in .gitattributes file should not match
|
||||
"sub/a/b".
|
||||
|
||||
* various gitweb fixes.
|
||||
|
||||
Also comes with various documentation updates.
|
12
Documentation/RelNotes-1.5.5.3.txt
Normal file
12
Documentation/RelNotes-1.5.5.3.txt
Normal file
@ -0,0 +1,12 @@
|
||||
GIT v1.5.5.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.2
|
||||
--------------------
|
||||
|
||||
* "git send-email --compose" did not notice that non-ascii contents
|
||||
needed some MIME magic.
|
||||
|
||||
* "git fast-export" did not export octopus merges correctly.
|
||||
|
||||
Also comes with various documentation updates.
|
7
Documentation/RelNotes-1.5.5.4.txt
Normal file
7
Documentation/RelNotes-1.5.5.4.txt
Normal file
@ -0,0 +1,7 @@
|
||||
GIT v1.5.5.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.4
|
||||
--------------------
|
||||
|
||||
* "git name-rev --all" used to segfault.
|
11
Documentation/RelNotes-1.5.5.5.txt
Normal file
11
Documentation/RelNotes-1.5.5.5.txt
Normal file
@ -0,0 +1,11 @@
|
||||
GIT v1.5.5.5 Release Notes
|
||||
==========================
|
||||
|
||||
I personally do not think there is any reason anybody should want to
|
||||
run v1.5.5.X series these days, because 'master' version is always
|
||||
more stable than any tagged released version of git.
|
||||
|
||||
This is primarily to futureproof "git-shell" to accept requests
|
||||
without a dash between "git" and subcommand name (e.g. "git
|
||||
upload-pack") which the newer client will start to make sometime in
|
||||
the future.
|
10
Documentation/RelNotes-1.5.5.6.txt
Normal file
10
Documentation/RelNotes-1.5.5.6.txt
Normal file
@ -0,0 +1,10 @@
|
||||
GIT v1.5.5.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.5.5
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
207
Documentation/RelNotes-1.5.5.txt
Normal file
207
Documentation/RelNotes-1.5.5.txt
Normal file
@ -0,0 +1,207 @@
|
||||
GIT v1.5.5 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.4
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* Comes with git-gui 0.10.1
|
||||
|
||||
(portability)
|
||||
|
||||
* We shouldn't ask for BSD group ownership semantics by setting g+s bit
|
||||
on directories on older BSD systems that refuses chmod() by non root
|
||||
users. BSD semantics is the default there anyway.
|
||||
|
||||
* Bunch of portability improvement patches coming from an effort to port
|
||||
to Solaris has been applied.
|
||||
|
||||
(performance)
|
||||
|
||||
* On platforms with suboptimal qsort(3) implementation, there
|
||||
is an option to use more reasonable substitute we ship with
|
||||
our software.
|
||||
|
||||
* New configuration variable "pack.packsizelimit" can be used
|
||||
in place of command line option --max-pack-size.
|
||||
|
||||
* "git fetch" over the native git protocol used to make a
|
||||
connection to find out the set of current remote refs and
|
||||
another to actually download the pack data. We now use only
|
||||
one connection for these tasks.
|
||||
|
||||
* "git commit" does not run lstat(2) more than necessary
|
||||
anymore.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* Bash completion script (in contrib) are aware of more commands and
|
||||
options.
|
||||
|
||||
* You can be warned when core.autocrlf conversion is applied in
|
||||
such a way that results in an irreversible conversion.
|
||||
|
||||
* A catch-all "color.ui" configuration variable can be used to
|
||||
enable coloring of all color-capable commands, instead of
|
||||
individual ones such as "color.status" and "color.branch".
|
||||
|
||||
* The commands refused to take absolute pathnames where they
|
||||
require pathnames relative to the work tree or the current
|
||||
subdirectory. They now can take absolute pathnames in such a
|
||||
case as long as the pathnames do not refer outside of the
|
||||
work tree. E.g. "git add $(pwd)/foo" now works.
|
||||
|
||||
* Error messages used to be sent to stderr, only to get hidden,
|
||||
when $PAGER was in use. They now are sent to stdout along
|
||||
with the command output to be shown in the $PAGER.
|
||||
|
||||
* A pattern "foo/" in .gitignore file now matches a directory
|
||||
"foo". Pattern "foo" also matches as before.
|
||||
|
||||
* bash completion's prompt helper function can talk about
|
||||
operation in-progress (e.g. merge, rebase, etc.).
|
||||
|
||||
* Configuration variables "url.<usethis>.insteadof = <otherurl>" can be
|
||||
used to tell "git-fetch" and "git-push" to use different URL than what
|
||||
is given from the command line.
|
||||
|
||||
* "git add -i" behaves better even before you make an initial commit.
|
||||
|
||||
* "git am" refused to run from a subdirectory without a good reason.
|
||||
|
||||
* After "git apply --whitespace=fix" fixes whitespace errors in a patch,
|
||||
a line before the fix can appear as a context or preimage line in a
|
||||
later patch, causing the patch not to apply. The command now knows to
|
||||
see through whitespace fixes done to context lines to successfully
|
||||
apply such a patch series.
|
||||
|
||||
* "git branch" (and "git checkout -b") to branch from a local branch can
|
||||
optionally set "branch.<name>.merge" to mark the new branch to build on
|
||||
the other local branch, when "branch.autosetupmerge" is set to
|
||||
"always", or when passing the command line option "--track" (this option
|
||||
was ignored when branching from local branches). By default, this does
|
||||
not happen when branching from a local branch.
|
||||
|
||||
* "git checkout" to switch to a branch that has "branch.<name>.merge" set
|
||||
(i.e. marked to build on another branch) reports how much the branch
|
||||
and the other branch diverged.
|
||||
|
||||
* When "git checkout" has to update a lot of paths, it used to be silent
|
||||
for 4 seconds before it showed any progress report. It is now a bit
|
||||
more impatient and starts showing progress report early.
|
||||
|
||||
* "git commit" learned a new hook "prepare-commit-msg" that can
|
||||
inspect what is going to be committed and prepare the commit
|
||||
log message template to be edited.
|
||||
|
||||
* "git cvsimport" can now take more than one -M options.
|
||||
|
||||
* "git describe" learned to limit the tags to be used for
|
||||
naming with --match option.
|
||||
|
||||
* "git describe --contains" now barfs when the named commit
|
||||
cannot be described.
|
||||
|
||||
* "git describe --exact-match" describes only commits that are tagged.
|
||||
|
||||
* "git describe --long" describes a tagged commit as $tag-0-$sha1,
|
||||
instead of just showing the exact tagname.
|
||||
|
||||
* "git describe" warns when using a tag whose name and path contradict
|
||||
with each other.
|
||||
|
||||
* "git diff" learned "--relative" option to limit and output paths
|
||||
relative to the current directory when working in a subdirectory.
|
||||
|
||||
* "git diff" learned "--dirstat" option to show birds-eye-summary of
|
||||
changes more concisely than "--diffstat".
|
||||
|
||||
* "git format-patch" learned --cover-letter option to generate a cover
|
||||
letter template.
|
||||
|
||||
* "git gc" learned --quiet option.
|
||||
|
||||
* "git gc" now automatically prunes unreachable objects that are two
|
||||
weeks old or older.
|
||||
|
||||
* "git gc --auto" can be disabled more easily by just setting gc.auto
|
||||
to zero. It also tolerates more packfiles by default.
|
||||
|
||||
* "git grep" now knows "--name-only" is a synonym for the "-l" option.
|
||||
|
||||
* "git help <alias>" now reports "'git <alias>' is alias to <what>",
|
||||
instead of saying "No manual entry for git-<alias>".
|
||||
|
||||
* "git help" can use different backends to show manual pages and this can
|
||||
be configured using "man.viewer" configuration.
|
||||
|
||||
* "gitk" does not restore window position from $HOME/.gitk anymore (it
|
||||
still restores the size).
|
||||
|
||||
* "git log --grep=<what>" learned "--fixed-strings" option to look for
|
||||
<what> without treating it as a regular expression.
|
||||
|
||||
* "git gui" learned an auto-spell checking.
|
||||
|
||||
* "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as
|
||||
expected; they push the current branch (and only the current branch).
|
||||
In addition, HEAD can be written as the value of "remote.<there>.push"
|
||||
configuration variable.
|
||||
|
||||
* When the configuration variable "pack.threads" is set to 0, "git
|
||||
repack" auto detects the number of CPUs and uses that many threads.
|
||||
|
||||
* "git send-email" learned to prompt for passwords
|
||||
interactively.
|
||||
|
||||
* "git send-email" learned an easier way to suppress CC
|
||||
recipients.
|
||||
|
||||
* "git stash" learned "pop" command, that applies the latest stash and
|
||||
removes it from the stash, and "drop" command to discard the named
|
||||
stash entry.
|
||||
|
||||
* "git submodule" learned a new subcommand "summary" to show the
|
||||
symmetric difference between the HEAD version and the work tree version
|
||||
of the submodule commits.
|
||||
|
||||
* Various "git cvsimport", "git cvsexportcommit", "git cvsserver",
|
||||
"git svn" and "git p4" improvements.
|
||||
|
||||
(internal)
|
||||
|
||||
* Duplicated code between git-help and git-instaweb that
|
||||
launches user's preferred browser has been refactored.
|
||||
|
||||
* It is now easier to write test scripts that records known
|
||||
breakages.
|
||||
|
||||
* "git checkout" is rewritten in C.
|
||||
|
||||
* "git remote" is rewritten in C.
|
||||
|
||||
* Two conflict hunks that are separated by a very short span of common
|
||||
lines are now coalesced into one larger hunk, to make the result easier
|
||||
to read.
|
||||
|
||||
* Run-command API's use of file descriptors is documented clearer and
|
||||
is more consistent now.
|
||||
|
||||
* diff output can be sent to FILE * that is different from stdout. This
|
||||
will help reimplementing more things in C.
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.4 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* "git-http-push" did not allow deletion of remote ref with the usual
|
||||
"push <remote> :<branch>" syntax.
|
||||
|
||||
* "git-rebase --abort" did not go back to the right location if
|
||||
"git-reset" was run during the "git-rebase" session.
|
||||
|
||||
* "git imap-send" without setting imap.host did not error out but
|
||||
segfaulted.
|
28
Documentation/RelNotes-1.5.6.1.txt
Normal file
28
Documentation/RelNotes-1.5.6.1.txt
Normal file
@ -0,0 +1,28 @@
|
||||
GIT v1.5.6.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6
|
||||
------------------
|
||||
|
||||
* Last minute change broke loose object creation on AIX.
|
||||
|
||||
* (performance fix) We used to make $GIT_DIR absolute path early in the
|
||||
programs but keeping it relative to the current directory internally
|
||||
gives 1-3 per-cent performance boost.
|
||||
|
||||
* bash completion knows the new --graph option to git-log family.
|
||||
|
||||
|
||||
* git-diff -c/--cc showed unnecessary "deletion" lines at the context
|
||||
boundary.
|
||||
|
||||
* git-for-each-ref ignored %(object) and %(type) requests for tag
|
||||
objects.
|
||||
|
||||
* git-merge usage had a typo.
|
||||
|
||||
* Rebuilding of git-svn metainfo database did not take rewriteRoot
|
||||
option into account.
|
||||
|
||||
* Running "git-rebase --continue/--skip/--abort" before starting a
|
||||
rebase gave nonsense error messages.
|
40
Documentation/RelNotes-1.5.6.2.txt
Normal file
40
Documentation/RelNotes-1.5.6.2.txt
Normal file
@ -0,0 +1,40 @@
|
||||
GIT v1.5.6.2 Release Notes
|
||||
==========================
|
||||
|
||||
Futureproof
|
||||
-----------
|
||||
|
||||
* "git-shell" accepts requests without a dash between "git" and
|
||||
subcommand name (e.g. "git upload-pack") which the newer client will
|
||||
start to make sometime in the future.
|
||||
|
||||
Fixes since v1.5.6.1
|
||||
--------------------
|
||||
|
||||
* "git clone" from a remote that is named with url.insteadOf setting in
|
||||
$HOME/.gitconfig did not work well.
|
||||
|
||||
* "git describe --long --tags" segfaulted when the described revision was
|
||||
tagged with a lightweight tag.
|
||||
|
||||
* "git diff --check" did not report the result via its exit status
|
||||
reliably.
|
||||
|
||||
* When remote side used to have branch 'foo' and git-fetch finds that now
|
||||
it has branch 'foo/bar', it refuses to lose the existing remote tracking
|
||||
branch and its reflog. The error message has been improved to suggest
|
||||
pruning the remote if the user wants to proceed and get the latest set
|
||||
of branches from the remote, including such 'foo/bar'.
|
||||
|
||||
* "git reset file" should mean the same thing as "git reset HEAD file",
|
||||
but we required disambiguating -- even when "file" is not ambiguous.
|
||||
|
||||
* "git show" segfaulted when an annotated tag that points at another
|
||||
annotated tag was given to it.
|
||||
|
||||
* Optimization for a large import via "git-svn" introduced in v1.5.6 had a
|
||||
serious memory and temporary file leak, which made it unusable for
|
||||
moderately large import.
|
||||
|
||||
* "git-svn" mangled remote nickname used in the configuration file
|
||||
unnecessarily.
|
52
Documentation/RelNotes-1.5.6.3.txt
Normal file
52
Documentation/RelNotes-1.5.6.3.txt
Normal file
@ -0,0 +1,52 @@
|
||||
GIT v1.5.6.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.2
|
||||
--------------------
|
||||
|
||||
* Setting core.sharerepository to traditional "true" value was supposed to make
|
||||
the repository group writable but should not affect permission for others.
|
||||
However, since 1.5.6, it was broken to drop permission for others when umask is
|
||||
022, making the repository unreadable by others.
|
||||
|
||||
* Setting GIT_TRACE will report spawning of external process via run_command().
|
||||
|
||||
* Using an object with very deep delta chain pinned memory needed for extracting
|
||||
intermediate base objects unnecessarily long, leading to excess memory usage.
|
||||
|
||||
* Bash completion script did not notice '--' marker on the command
|
||||
line and tried the relatively slow "ref completion" even when
|
||||
completing arguments after one.
|
||||
|
||||
* Registering a non-empty blob racily and then truncating the working
|
||||
tree file for it confused "racy-git avoidance" logic into thinking
|
||||
that the path is now unchanged.
|
||||
|
||||
* The section that describes attributes related to git-archive were placed
|
||||
in a wrong place in the gitattributes(5) manual page.
|
||||
|
||||
* "git am" was not helpful to the users when it detected that the committer
|
||||
information is not set up properly yet.
|
||||
|
||||
* "git clone" had a leftover debugging fprintf().
|
||||
|
||||
* "git clone -q" was not quiet enough as it used to and gave object count
|
||||
and progress reports.
|
||||
|
||||
* "git clone" marked downloaded packfile with .keep; this could be a
|
||||
good thing if the remote side is well packed but otherwise not,
|
||||
especially for a project that is not really big.
|
||||
|
||||
* "git daemon" used to call syslog() from a signal handler, which
|
||||
could raise signals of its own but generally is not reentrant. This
|
||||
was fixed by restructuring the code to report syslog() after the handler
|
||||
returns.
|
||||
|
||||
* When "git push" tries to remove a remote ref, and corresponding
|
||||
tracking ref is missing, we used to report error (i.e. failure to
|
||||
remove something that does not exist).
|
||||
|
||||
* "git mailinfo" (hence "git am") did not handle commit log messages in a
|
||||
MIME multipart mail correctly.
|
||||
|
||||
Contains other various documentation fixes.
|
47
Documentation/RelNotes-1.5.6.4.txt
Normal file
47
Documentation/RelNotes-1.5.6.4.txt
Normal file
@ -0,0 +1,47 @@
|
||||
GIT v1.5.6.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.3
|
||||
--------------------
|
||||
|
||||
* Various commands could overflow its internal buffer on a platform
|
||||
with small PATH_MAX value in a repository that has contents with
|
||||
long pathnames.
|
||||
|
||||
* There wasn't a way to make --pretty=format:%<> specifiers to honor
|
||||
.mailmap name rewriting for authors and committers. Now you can with
|
||||
%aN and %cN.
|
||||
|
||||
* Bash completion wasted too many cycles; this has been optimized to be
|
||||
usable again.
|
||||
|
||||
* Bash completion lost ref part when completing something like "git show
|
||||
pu:Makefile".
|
||||
|
||||
* "git-cvsserver" did not clean up its temporary working area after annotate
|
||||
request.
|
||||
|
||||
* "git-daemon" called syslog() from its signal handler, which was a
|
||||
no-no.
|
||||
|
||||
* "git-fetch" into an empty repository used to remind that the fetch will
|
||||
be huge by saying "no common commits", but this was an unnecessary
|
||||
noise; it is already known by the user anyway.
|
||||
|
||||
* "git-http-fetch" would have segfaulted when pack idx file retrieved
|
||||
from the other side was corrupt.
|
||||
|
||||
* "git-index-pack" used too much memory when dealing with a deep delta chain.
|
||||
|
||||
* "git-mailinfo" (hence "git-am") did not correctly handle in-body [PATCH]
|
||||
line to override the commit title taken from the mail Subject header.
|
||||
|
||||
* "git-rebase -i -p" lost parents that are not involved in the history
|
||||
being rewritten.
|
||||
|
||||
* "git-rm" lost track of where the index file was when GIT_DIR was
|
||||
specified as a relative path.
|
||||
|
||||
* "git-rev-list --quiet" was not quiet as advertised.
|
||||
|
||||
Contains other various documentation fixes.
|
29
Documentation/RelNotes-1.5.6.5.txt
Normal file
29
Documentation/RelNotes-1.5.6.5.txt
Normal file
@ -0,0 +1,29 @@
|
||||
GIT v1.5.6.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.4
|
||||
--------------------
|
||||
|
||||
* "git cvsimport" used to spit out "UNKNOWN LINE..." diagnostics to stdout.
|
||||
|
||||
* "git commit -F filename" and "git tag -F filename" run from subdirectories
|
||||
did not read the right file.
|
||||
|
||||
* "git init --template=" with blank "template" parameter linked files
|
||||
under root directories to .git, which was a total nonsense. Instead, it
|
||||
means "I do not want to use anything from the template directory".
|
||||
|
||||
* "git diff-tree" and other diff plumbing ignored diff.renamelimit configuration
|
||||
variable when the user explicitly asked for rename detection.
|
||||
|
||||
* "git name-rev --name-only" did not work when "--stdin" option was in effect.
|
||||
|
||||
* "git show-branch" mishandled its 8th branch.
|
||||
|
||||
* Addition of "git update-index --ignore-submodules" that happened during
|
||||
1.5.6 cycle broke "git update-index --ignore-missing".
|
||||
|
||||
* "git send-email" did not parse charset from an existing Content-type:
|
||||
header properly.
|
||||
|
||||
Contains other various documentation fixes.
|
10
Documentation/RelNotes-1.5.6.6.txt
Normal file
10
Documentation/RelNotes-1.5.6.6.txt
Normal file
@ -0,0 +1,10 @@
|
||||
GIT v1.5.6.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.6.5
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
115
Documentation/RelNotes-1.5.6.txt
Normal file
115
Documentation/RelNotes-1.5.6.txt
Normal file
@ -0,0 +1,115 @@
|
||||
GIT v1.5.6 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.5
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* Comes with updated gitk and git-gui.
|
||||
|
||||
(portability)
|
||||
|
||||
* git will build on AIX better than before now.
|
||||
|
||||
* core.ignorecase configuration variable can be used to work better on
|
||||
filesystems that are not case sensitive.
|
||||
|
||||
* "git init" now autodetects the case sensitivity of the filesystem and
|
||||
sets core.ignorecase accordingly.
|
||||
|
||||
* cpio is no longer used; neither "curl" binary (libcurl is still used).
|
||||
|
||||
(documentation)
|
||||
|
||||
* Many freestanding documentation pages have been converted and made
|
||||
available to "git help" (aka "man git<something>") as section 7 of
|
||||
the manual pages. This means bookmarks to some HTML documentation
|
||||
files may need to be updated (eg "tutorial.html" became
|
||||
"gittutorial.html").
|
||||
|
||||
(performance)
|
||||
|
||||
* "git clone" was rewritten in C. This will hopefully help cloning a
|
||||
repository with insane number of refs.
|
||||
|
||||
* "git rebase --onto $there $from $branch" used to switch to the tip of
|
||||
$branch only to immediately reset back to $from, smudging work tree
|
||||
files unnecessarily. This has been optimized.
|
||||
|
||||
* Object creation codepath in "git-svn" has been optimized by enhancing
|
||||
plumbing commands git-cat-file and git-hash-object.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* "git add -p" (and the "patch" subcommand of "git add -i") can choose to
|
||||
apply (or not apply) mode changes independently from contents changes.
|
||||
|
||||
* "git bisect help" gives longer and more helpful usage information.
|
||||
|
||||
* "git bisect" does not use a special branch "bisect" anymore; instead, it
|
||||
does its work on a detached HEAD.
|
||||
|
||||
* "git branch" (and "git checkout -b") can be told to set up
|
||||
branch.<name>.rebase automatically, so that later you can say "git pull"
|
||||
and magically cause "git pull --rebase" to happen.
|
||||
|
||||
* "git branch --merged" and "git branch --no-merged" can be used to list
|
||||
branches that have already been merged (or not yet merged) to the
|
||||
current branch.
|
||||
|
||||
* "git cherry-pick" and "git revert" can add a sign-off.
|
||||
|
||||
* "git commit" mentions the author identity when you are committing
|
||||
somebody else's changes.
|
||||
|
||||
* "git diff/log --dirstat" output is consistent between binary and textual
|
||||
changes.
|
||||
|
||||
* "git filter-branch" rewrites signed tags by demoting them to annotated.
|
||||
|
||||
* "git format-patch --no-binary" can produce a patch that lack binary
|
||||
changes (i.e. cannot be used to propagate the whole changes) meant only
|
||||
for reviewing.
|
||||
|
||||
* "git init --bare" is a synonym for "git --bare init" now.
|
||||
|
||||
* "git gc --auto" honors a new pre-auto-gc hook to temporarily disable it.
|
||||
|
||||
* "git log --pretty=tformat:<custom format>" gives a LF after each entry,
|
||||
instead of giving a LF between each pair of entries which is how
|
||||
"git log --pretty=format:<custom format>" works.
|
||||
|
||||
* "git log" and friends learned the "--graph" option to show the ancestry
|
||||
graph at the left margin of the output.
|
||||
|
||||
* "git log" and friends can be told to use date format that is different
|
||||
from the default via 'log.date' configuration variable.
|
||||
|
||||
* "git send-email" now can send out messages outside a git repository.
|
||||
|
||||
* "git send-email --compose" was made aware of rfc2047 quoting.
|
||||
|
||||
* "git status" can optionally include output from "git submodule
|
||||
summary".
|
||||
|
||||
* "git svn" learned --add-author-from option to propagate the authorship
|
||||
by munging the commit log message.
|
||||
|
||||
* new object creation and looking up in "git svn" has been optimized.
|
||||
|
||||
* "gitweb" can read from a system-wide configuration file.
|
||||
|
||||
(internal)
|
||||
|
||||
* "git unpack-objects" and "git receive-pack" is now more strict about
|
||||
detecting breakage in the objects they receive over the wire.
|
||||
|
||||
|
||||
Fixes since v1.5.5
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.5 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
And there are too numerous small fixes to otherwise note here ;-)
|
36
Documentation/RelNotes-1.6.0.1.txt
Normal file
36
Documentation/RelNotes-1.6.0.1.txt
Normal file
@ -0,0 +1,36 @@
|
||||
GIT v1.6.0.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0
|
||||
------------------
|
||||
|
||||
* "git diff --cc" did not honor content mangling specified by
|
||||
gitattributes and core.autocrlf when reading from the work tree.
|
||||
|
||||
* "git diff --check" incorrectly detected new trailing blank lines when
|
||||
whitespace check was in effect.
|
||||
|
||||
* "git for-each-ref" tried to dereference NULL when asked for '%(body)" on
|
||||
a tag with a single incomplete line as its payload.
|
||||
|
||||
* "git format-patch" peeked before the beginning of a string when
|
||||
"format.headers" variable is empty (a misconfiguration).
|
||||
|
||||
* "git help help" did not work correctly.
|
||||
|
||||
* "git mailinfo" (hence "git am") was unhappy when MIME multipart message
|
||||
contained garbage after the finishing boundary.
|
||||
|
||||
* "git mailinfo" also was unhappy when the "From: " line only had a bare
|
||||
e-mail address.
|
||||
|
||||
* "git merge" did not refresh the index correctly when a merge resulted in
|
||||
a fast-forward.
|
||||
|
||||
* "git merge" did not resolve a truly trivial merges that can be done
|
||||
without content level merges.
|
||||
|
||||
* "git svn dcommit" to a repository with URL that has embedded usernames
|
||||
did not work correctly.
|
||||
|
||||
Contains other various documentation fixes.
|
87
Documentation/RelNotes-1.6.0.2.txt
Normal file
87
Documentation/RelNotes-1.6.0.2.txt
Normal file
@ -0,0 +1,87 @@
|
||||
GIT v1.6.0.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.1
|
||||
--------------------
|
||||
|
||||
* Installation on platforms that needs .exe suffix to git-* programs were
|
||||
broken in 1.6.0.1.
|
||||
|
||||
* Installation on filesystems without symbolic links support did not
|
||||
work well.
|
||||
|
||||
* In-tree documentations and test scripts now use "git foo" form to set a
|
||||
better example, instead of the "git-foo" form (which is an acceptable
|
||||
form if you have "PATH=$(git --exec-path):$PATH" in your script)
|
||||
|
||||
* Many commands did not use the correct working tree location when used
|
||||
with GIT_WORK_TREE environment settings.
|
||||
|
||||
* Some systems needs to use compatibility fnmach and regex libraries
|
||||
independent from each other; the compat/ area has been reorganized to
|
||||
allow this.
|
||||
|
||||
|
||||
* "git apply --unidiff-zero" incorrectly applied a -U0 patch that inserts
|
||||
a new line before the second line.
|
||||
|
||||
* "git blame -c" did not exactly work like "git annotate" when range
|
||||
boundaries are involved.
|
||||
|
||||
* "git checkout file" when file is still unmerged checked out contents from
|
||||
a random high order stage, which was confusing.
|
||||
|
||||
* "git clone $there $here/" with extra trailing slashes after explicit
|
||||
local directory name $here did not work as expected.
|
||||
|
||||
* "git diff" on tracked contents with CRLF line endings did not drive "less"
|
||||
intelligently when showing added or removed lines.
|
||||
|
||||
* "git diff --dirstat -M" did not add changes in subdirectories up
|
||||
correctly for renamed paths.
|
||||
|
||||
* "git diff --cumulative" did not imply "--dirstat".
|
||||
|
||||
* "git for-each-ref refs/heads/" did not work as expected.
|
||||
|
||||
* "git gui" allowed users to feed patch without any context to be applied.
|
||||
|
||||
* "git gui" botched parsing "diff" output when a line that begins with two
|
||||
dashes and a space gets removed or a line that begins with two pluses
|
||||
and a space gets added.
|
||||
|
||||
* "git gui" translation updates and i18n fixes.
|
||||
|
||||
* "git index-pack" is more careful against disk corruption while completing
|
||||
a thin pack.
|
||||
|
||||
* "git log -i --grep=pattern" did not ignore case; neither "git log -E
|
||||
--grep=pattern" triggered extended regexp.
|
||||
|
||||
* "git log --pretty="%ad" --date=short" did not use short format when
|
||||
showing the timestamp.
|
||||
|
||||
* "git log --author=author" match incorrectly matched with the
|
||||
timestamp part of "author " line in commit objects.
|
||||
|
||||
* "git log -F --author=author" did not work at all.
|
||||
|
||||
* Build procedure for "git shell" that used stub versions of some
|
||||
functions and globals was not understood by linkers on some platforms.
|
||||
|
||||
* "git stash" was fooled by a stat-dirty but otherwise unmodified paths
|
||||
and refused to work until the user refreshed the index.
|
||||
|
||||
* "git svn" was broken on Perl before 5.8 with recent fixes to reduce
|
||||
use of temporary files.
|
||||
|
||||
* "git verify-pack -v" did not work correctly when given more than one
|
||||
packfile.
|
||||
|
||||
Also contains many documentation updates.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.6.0.1-78-g3632cfc
|
||||
echo O=$(git describe maint)
|
||||
git shortlog --no-merges $O..maint
|
117
Documentation/RelNotes-1.6.0.3.txt
Normal file
117
Documentation/RelNotes-1.6.0.3.txt
Normal file
@ -0,0 +1,117 @@
|
||||
GIT v1.6.0.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.2
|
||||
--------------------
|
||||
|
||||
* "git archive --format=zip" did not honor core.autocrlf while
|
||||
--format=tar did.
|
||||
|
||||
* Continuing "git rebase -i" was very confused when the user left modified
|
||||
files in the working tree while resolving conflicts.
|
||||
|
||||
* Continuing "git rebase -i" was also very confused when the user left
|
||||
some staged changes in the index after "edit".
|
||||
|
||||
* "git rebase -i" now honors the pre-rebase hook, just like the
|
||||
other rebase implementations "git rebase" and "git rebase -m".
|
||||
|
||||
* "git rebase -i" incorrectly aborted when there is no commit to replay.
|
||||
|
||||
* Behaviour of "git diff --quiet" was inconsistent with "diff --exit-code"
|
||||
with the output redirected to /dev/null.
|
||||
|
||||
* "git diff --no-index" on binary files no longer outputs a bogus
|
||||
"diff --git" header line.
|
||||
|
||||
* "git diff" hunk header patterns with multiple elements separated by LF
|
||||
were not used correctly.
|
||||
|
||||
* Hunk headers in "git diff" default to using extended regular
|
||||
expressions, fixing some of the internal patterns on non-GNU
|
||||
platforms.
|
||||
|
||||
* New config "diff.*.xfuncname" exposes extended regular expressions
|
||||
for user specified hunk header patterns.
|
||||
|
||||
* "git gc" when ejecting otherwise unreachable objects from packfiles into
|
||||
loose form leaked memory.
|
||||
|
||||
* "git index-pack" was recently broken and mishandled objects added by
|
||||
thin-pack completion processing under memory pressure.
|
||||
|
||||
* "git index-pack" was recently broken and misbehaved when run from inside
|
||||
.git/objects/pack/ directory.
|
||||
|
||||
* "git stash apply sash@{1}" was fixed to error out. Prior versions
|
||||
would have applied stash@{0} incorrectly.
|
||||
|
||||
* "git stash apply" now offers a better suggestion on how to continue
|
||||
if the working tree is currently dirty.
|
||||
|
||||
* "git for-each-ref --format=%(subject)" fixed for commits with no
|
||||
no newline in the message body.
|
||||
|
||||
* "git remote" fixed to protect printf from user input.
|
||||
|
||||
* "git remote show -v" now displays all URLs of a remote.
|
||||
|
||||
* "git checkout -b branch" was confused when branch already existed.
|
||||
|
||||
* "git checkout -q" once again suppresses the locally modified file list.
|
||||
|
||||
* "git clone -q", "git fetch -q" asks remote side to not send
|
||||
progress messages, actually making their output quiet.
|
||||
|
||||
* Cross-directory renames are no longer used when creating packs. This
|
||||
allows more graceful behavior on filesystems like sshfs.
|
||||
|
||||
* Stale temporary files under $GIT_DIR/objects/pack are now cleaned up
|
||||
automatically by "git prune".
|
||||
|
||||
* "git merge" once again removes directories after the last file has
|
||||
been removed from it during the merge.
|
||||
|
||||
* "git merge" did not allocate enough memory for the structure itself when
|
||||
enumerating the parents of the resulting commit.
|
||||
|
||||
* "git blame -C -C" no longer segfaults while trying to pass blame if
|
||||
it encounters a submodule reference.
|
||||
|
||||
* "git rm" incorrectly claimed that you have local modifications when a
|
||||
path was merely stat-dirty.
|
||||
|
||||
* "git svn" fixed to display an error message when 'set-tree' failed,
|
||||
instead of a Perl compile error.
|
||||
|
||||
* "git submodule" fixed to handle checking out a different commit
|
||||
than HEAD after initializing the submodule.
|
||||
|
||||
* The "git commit" error message when there are still unmerged
|
||||
files present was clarified to match "git write-tree".
|
||||
|
||||
* "git init" was confused when core.bare or core.sharedRepository are set
|
||||
in system or user global configuration file by mistake. When --bare or
|
||||
--shared is given from the command line, these now override such
|
||||
settings made outside the repositories.
|
||||
|
||||
* Some segfaults due to uncaught NULL pointers were fixed in multiple
|
||||
tools such as apply, reset, update-index.
|
||||
|
||||
* Solaris builds now default to OLD_ICONV=1 to avoid compile warnings;
|
||||
Solaris 8 does not define NEEDS_LIBICONV by default.
|
||||
|
||||
* "Git.pm" tests relied on unnecessarily more recent version of Perl.
|
||||
|
||||
* "gitweb" triggered undef warning on commits without log messages.
|
||||
|
||||
* "gitweb" triggered undef warnings on missing trees.
|
||||
|
||||
* "gitweb" now removes PATH_INFO from its URLs so users don't have
|
||||
to manually set the URL in the gitweb configuration.
|
||||
|
||||
* Bash completion removed support for legacy "git-fetch", "git-push"
|
||||
and "git-pull" as these are no longer installed. Dashless form
|
||||
("git fetch") is still however supported.
|
||||
|
||||
Many other documentation updates.
|
39
Documentation/RelNotes-1.6.0.4.txt
Normal file
39
Documentation/RelNotes-1.6.0.4.txt
Normal file
@ -0,0 +1,39 @@
|
||||
GIT v1.6.0.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.3
|
||||
--------------------
|
||||
|
||||
* 'git add -p' said "No changes" when only binary files were changed.
|
||||
|
||||
* 'git archive' did not work correctly in bare repositories.
|
||||
|
||||
* 'git checkout -t -b newbranch' when you are on detached HEAD was broken.
|
||||
|
||||
* when we refuse to detect renames because there are too many new or
|
||||
deleted files, 'git diff' did not say how many there are.
|
||||
|
||||
* 'git push --mirror' tried and failed to push the stash; there is no
|
||||
point in sending it to begin with.
|
||||
|
||||
* 'git push' did not update the remote tracking reference if the corresponding
|
||||
ref on the remote end happened to be already up to date.
|
||||
|
||||
* 'git pull $there $branch:$current_branch' did not work when you were on
|
||||
a branch yet to be born.
|
||||
|
||||
* when giving up resolving a conflicted merge, 'git reset --hard' failed
|
||||
to remove new paths from the working tree.
|
||||
|
||||
* 'git send-email' had a small fd leak while scanning directory.
|
||||
|
||||
* 'git status' incorrectly reported a submodule directory as an untracked
|
||||
directory.
|
||||
|
||||
* 'git svn' used deprecated 'git-foo' form of subcommand invocation.
|
||||
|
||||
* 'git update-ref -d' to remove a reference did not honor --no-deref option.
|
||||
|
||||
* Plugged small memleaks here and there.
|
||||
|
||||
* Also contains many documentation updates.
|
56
Documentation/RelNotes-1.6.0.5.txt
Normal file
56
Documentation/RelNotes-1.6.0.5.txt
Normal file
@ -0,0 +1,56 @@
|
||||
GIT v1.6.0.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.4
|
||||
--------------------
|
||||
|
||||
* "git checkout" used to crash when your HEAD was pointing at a deleted
|
||||
branch.
|
||||
|
||||
* "git checkout" from an un-checked-out state did not allow switching out
|
||||
of the current branch.
|
||||
|
||||
* "git diff" always allowed GIT_EXTERNAL_DIFF and --no-ext-diff was no-op for
|
||||
the command.
|
||||
|
||||
* Giving 3 or more tree-ish to "git diff" is supposed to show the combined
|
||||
diff from second and subsequent trees to the first one, but the order was
|
||||
screwed up.
|
||||
|
||||
* "git fast-export" did not export all tags.
|
||||
|
||||
* "git ls-files --with-tree=<tree>" did not work with options other
|
||||
than -c, most notably with -m.
|
||||
|
||||
* "git pack-objects" did not make its best effort to honor --max-pack-size
|
||||
option when a single first object already busted the given limit and
|
||||
placed many objects in a single pack.
|
||||
|
||||
* "git-p4" fast import frontend was too eager to trigger its keyword expansion
|
||||
logic, even on a keyword-looking string that does not have closing '$' on the
|
||||
same line.
|
||||
|
||||
* "git push $there" when the remote $there is defined in $GIT_DIR/branches/$there
|
||||
behaves more like what cg-push from Cogito used to work.
|
||||
|
||||
* when giving up resolving a conflicted merge, "git reset --hard" failed
|
||||
to remove new paths from the working tree.
|
||||
|
||||
* "git tag" did not complain when given mutually incompatible set of options.
|
||||
|
||||
* The message constructed in the internal editor was discarded when "git
|
||||
tag -s" failed to sign the message, which was often caused by the user
|
||||
not configuring GPG correctly.
|
||||
|
||||
* "make check" cannot be run without sparse; people may have meant to say
|
||||
"make test" instead, so suggest that.
|
||||
|
||||
* Internal diff machinery had a corner case performance bug that choked on
|
||||
a large file with many repeated contents.
|
||||
|
||||
* "git repack" used to grab objects out of packs marked with .keep
|
||||
into a new pack.
|
||||
|
||||
* Many unsafe call to sprintf() style varargs functions are corrected.
|
||||
|
||||
* Also contains quite a few documentation updates.
|
33
Documentation/RelNotes-1.6.0.6.txt
Normal file
33
Documentation/RelNotes-1.6.0.6.txt
Normal file
@ -0,0 +1,33 @@
|
||||
GIT v1.6.0.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.6.0.5
|
||||
-------------------
|
||||
|
||||
* "git fsck" had a deep recursion that wasted stack space.
|
||||
|
||||
* "git fast-export" and "git fast-import" choked on an old style
|
||||
annotated tag that lack the tagger information.
|
||||
|
||||
* "git mergetool -- file" did not correctly skip "--" marker that
|
||||
signals the end of options list.
|
||||
|
||||
* "git show $tag" segfaulted when an annotated $tag pointed at a
|
||||
nonexistent object.
|
||||
|
||||
* "git show 2>error" when the standard output is automatically redirected
|
||||
to the pager redirected the standard error to the pager as well; there
|
||||
was no need to.
|
||||
|
||||
* "git send-email" did not correctly handle list of addresses when
|
||||
they had quoted comma (e.g. "Lastname, Givenname" <mail@addre.ss>).
|
||||
|
||||
* Logic to discover branch ancestry in "git svn" was unreliable when
|
||||
the process to fetch history was interrupted.
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
||||
|
||||
Also contains numerous documentation typofixes.
|
258
Documentation/RelNotes-1.6.0.txt
Normal file
258
Documentation/RelNotes-1.6.0.txt
Normal file
@ -0,0 +1,258 @@
|
||||
GIT v1.6.0 Release Notes
|
||||
========================
|
||||
|
||||
User visible changes
|
||||
--------------------
|
||||
|
||||
With the default Makefile settings, most of the programs are now
|
||||
installed outside your $PATH, except for "git", "gitk" and
|
||||
some server side programs that need to be accessible for technical
|
||||
reasons. Invoking a git subcommand as "git-xyzzy" from the command
|
||||
line has been deprecated since early 2006 (and officially announced in
|
||||
1.5.4 release notes); use of them from your scripts after adding
|
||||
output from "git --exec-path" to the $PATH is still supported in this
|
||||
release, but users are again strongly encouraged to adjust their
|
||||
scripts to use "git xyzzy" form, as we will stop installing
|
||||
"git-xyzzy" hardlinks for built-in commands in later releases.
|
||||
|
||||
An earlier change to page "git status" output was overwhelmingly unpopular
|
||||
and has been reverted.
|
||||
|
||||
Source changes needed for porting to MinGW environment are now all in the
|
||||
main git.git codebase.
|
||||
|
||||
By default, packfiles created with this version uses delta-base-offset
|
||||
encoding introduced in v1.4.4. Pack idx files are using version 2 that
|
||||
allows larger packs and added robustness thanks to its CRC checking,
|
||||
introduced in v1.5.2 and v1.4.4.5. If you want to keep your repositories
|
||||
backwards compatible past these versions, set repack.useDeltaBaseOffset
|
||||
to false or pack.indexVersion to 1, respectively.
|
||||
|
||||
We used to prevent sample hook scripts shipped in templates/ from
|
||||
triggering by default by relying on the fact that we install them as
|
||||
unexecutable, but on some filesystems, this approach does not work.
|
||||
They are now shipped with ".sample" suffix. If you want to activate
|
||||
any of these samples as-is, rename them to drop the ".sample" suffix,
|
||||
instead of running "chmod +x" on them. For example, you can rename
|
||||
hooks/post-update.sample to hooks/post-update to enable the sample
|
||||
hook that runs update-server-info, in order to make repositories
|
||||
friendly to dumb protocols (i.e. HTTP).
|
||||
|
||||
GIT_CONFIG, which was only documented as affecting "git config", but
|
||||
actually affected all git commands, now only affects "git config".
|
||||
GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
|
||||
not different from GIT_CONFIG in a useful way, is removed.
|
||||
|
||||
The ".dotest" temporary area "git am" and "git rebase" use is now moved
|
||||
inside the $GIT_DIR, to avoid mistakes of adding it to the project by
|
||||
accident.
|
||||
|
||||
An ancient merge strategy "stupid" has been removed.
|
||||
|
||||
|
||||
Updates since v1.5.6
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* git-p4 in contrib learned "allowSubmit" configuration to control on
|
||||
which branch to allow "submit" subcommand.
|
||||
|
||||
* git-gui learned to stage changes per-line.
|
||||
|
||||
(portability)
|
||||
|
||||
* Changes for MinGW port have been merged, thanks to Johannes Sixt and
|
||||
gangs.
|
||||
|
||||
* Sample hook scripts shipped in templates/ are now suffixed with
|
||||
*.sample.
|
||||
|
||||
* perl's in-place edit (-i) does not work well without backup files on Windows;
|
||||
some tests are rewritten to cope with this.
|
||||
|
||||
(documentation)
|
||||
|
||||
* Updated howto/update-hook-example
|
||||
|
||||
* Got rid of usage of "git-foo" from the tutorial and made typography
|
||||
more consistent.
|
||||
|
||||
* Disambiguating "--" between revs and paths is finally documented.
|
||||
|
||||
(performance, robustness, sanity etc.)
|
||||
|
||||
* index-pack used too much memory when dealing with a deep delta chain.
|
||||
This has been optimized.
|
||||
|
||||
* reduced excessive inlining to shrink size of the "git" binary.
|
||||
|
||||
* verify-pack checks the object CRC when using version 2 idx files.
|
||||
|
||||
* When an object is corrupt in a pack, the object became unusable even
|
||||
when the same object is available in a loose form, We now try harder to
|
||||
fall back to these redundant objects when able. In particular, "git
|
||||
repack -a -f" can be used to fix such a corruption as long as necessary
|
||||
objects are available.
|
||||
|
||||
* Performance of "git-blame -C -C" operation is vastly improved.
|
||||
|
||||
* git-clone does not create refs in loose form anymore (it behaves as
|
||||
if you immediately ran git-pack-refs after cloning). This will help
|
||||
repositories with insanely large number of refs.
|
||||
|
||||
* core.fsyncobjectfiles configuration can be used to ensure that the loose
|
||||
objects created will be fsync'ed (this is only useful on filesystems
|
||||
that does not order data writes properly).
|
||||
|
||||
* "git commit-tree" plumbing can make Octopus with more than 16 parents.
|
||||
"git commit" has been capable of this for quite some time.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* even more documentation pages are now accessible via "man" and "git help".
|
||||
|
||||
* A new environment variable GIT_CEILING_DIRECTORIES can be used to stop
|
||||
the discovery process of the toplevel of working tree; this may be useful
|
||||
when you are working in a slow network disk and are outside any working tree,
|
||||
as bash-completion and "git help" may still need to run in these places.
|
||||
|
||||
* By default, stash entries never expire. Set reflogexpire in [gc
|
||||
"refs/stash"] to a reasonable value to get traditional auto-expiration
|
||||
behaviour back
|
||||
|
||||
* Longstanding latency issue with bash completion script has been
|
||||
addressed. This will need to be backmerged to 'maint' later.
|
||||
|
||||
* pager.<cmd> configuration variable can be used to enable/disable the
|
||||
default paging behaviour per command.
|
||||
|
||||
* "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk
|
||||
manually.
|
||||
|
||||
* git-am records the original tip of the branch in ORIG_HEAD before it
|
||||
starts applying patches.
|
||||
|
||||
* git-apply can handle a patch that touches the same path more than once
|
||||
much better than before.
|
||||
|
||||
* git-apply can be told not to trust the line counts recorded in the input
|
||||
patch but recount, with the new --recount option.
|
||||
|
||||
* git-apply can be told to apply a patch to a path deeper than what the
|
||||
patch records with --directory option.
|
||||
|
||||
* git-archive can be told to omit certain paths from its output using
|
||||
export-ignore attributes.
|
||||
|
||||
* git-archive uses the zlib default compression level when creating
|
||||
zip archive.
|
||||
|
||||
* git-archive's command line options --exec and --remote can take their
|
||||
parameters as separate command line arguments, similar to other commands.
|
||||
IOW, both "--exec=path" and "--exec path" are now supported.
|
||||
|
||||
* With -v option, git-branch describes the remote tracking statistics
|
||||
similar to the way git-checkout reports by how many commits your branch
|
||||
is ahead/behind.
|
||||
|
||||
* git-branch's --contains option used to always require a commit parameter
|
||||
to limit the branches with; it now defaults to list branches that
|
||||
contains HEAD if this parameter is omitted.
|
||||
|
||||
* git-branch's --merged and --no-merged option used to always limit the
|
||||
branches relative to the HEAD, but they can now take an optional commit
|
||||
argument that is used in place of HEAD.
|
||||
|
||||
* git-bundle can read the revision arguments from the standard input.
|
||||
|
||||
* git-cherry-pick can replay a root commit now.
|
||||
|
||||
* git-clone can clone from a remote whose URL would be rewritten by
|
||||
configuration stored in $HOME/.gitconfig now.
|
||||
|
||||
* "git-clone --mirror" is a handy way to set up a bare mirror repository.
|
||||
|
||||
* git-cvsserver learned to respond to "cvs co -c".
|
||||
|
||||
* git-diff --check now checks leftover merge conflict markers.
|
||||
|
||||
* "git-diff -p" learned to grab a better hunk header lines in
|
||||
BibTex, Pascal/Delphi, and Ruby files and also pays attention to
|
||||
chapter and part boundary in TeX documents.
|
||||
|
||||
* When remote side used to have branch 'foo' and git-fetch finds that now
|
||||
it has branch 'foo/bar', it refuses to lose the existing remote tracking
|
||||
branch and its reflog. The error message has been improved to suggest
|
||||
pruning the remote if the user wants to proceed and get the latest set
|
||||
of branches from the remote, including such 'foo/bar'.
|
||||
|
||||
* fast-export learned to export and import marks file; this can be used to
|
||||
interface with fast-import incrementally.
|
||||
|
||||
* fast-import and fast-export learned to export and import gitlinks.
|
||||
|
||||
* "gitk" left background process behind after being asked to dig very deep
|
||||
history and the user killed the UI; the process is killed when the UI goes
|
||||
away now.
|
||||
|
||||
* git-rebase records the original tip of branch in ORIG_HEAD before it is
|
||||
rewound.
|
||||
|
||||
* "git rerere" can be told to update the index with auto-reused resolution
|
||||
with rerere.autoupdate configuration variable.
|
||||
|
||||
* git-rev-parse learned $commit^! and $commit^@ notations used in "log"
|
||||
family. These notations are available in gitk as well, because the gitk
|
||||
command internally uses rev-parse to interpret its arguments.
|
||||
|
||||
* git-rev-list learned --children option to show child commits it
|
||||
encountered during the traversal, instead of showing parent commits.
|
||||
|
||||
* git-send-mail can talk not just over SSL but over TLS now.
|
||||
|
||||
* git-shortlog honors custom output format specified with "--pretty=format:".
|
||||
|
||||
* "git-stash save" learned --keep-index option. This lets you stash away the
|
||||
local changes and bring the changes staged in the index to your working
|
||||
tree for examination and testing.
|
||||
|
||||
* git-stash also learned branch subcommand to create a new branch out of
|
||||
stashed changes.
|
||||
|
||||
* git-status gives the remote tracking statistics similar to the way
|
||||
git-checkout reports by how many commits your branch is ahead/behind.
|
||||
|
||||
* "git-svn dcommit" is now aware of auto-props setting the subversion user
|
||||
has.
|
||||
|
||||
* You can tell "git status -u" to even more aggressively omit checking
|
||||
untracked files with --untracked-files=no.
|
||||
|
||||
* Original SHA-1 value for "update-ref -d" is optional now.
|
||||
|
||||
* Error codes from gitweb are made more descriptive where possible, rather
|
||||
than "403 forbidden" as we used to issue everywhere.
|
||||
|
||||
(internal)
|
||||
|
||||
* git-merge has been reimplemented in C.
|
||||
|
||||
|
||||
Fixes since v1.5.6
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.6 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* git-clone ignored its -u option; the fix needs to be backported to
|
||||
'maint';
|
||||
|
||||
* git-mv used to lose the distinction between changes that are staged
|
||||
and that are only in the working tree, by staging both in the index
|
||||
after moving such a path.
|
||||
|
||||
* "git-rebase -i -p" rewrote the parents to wrong ones when amending
|
||||
(either edit or squash) was involved, and did not work correctly
|
||||
when fast forwarding.
|
||||
|
59
Documentation/RelNotes-1.6.1.1.txt
Normal file
59
Documentation/RelNotes-1.6.1.1.txt
Normal file
@ -0,0 +1,59 @@
|
||||
GIT v1.6.1.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1
|
||||
------------------
|
||||
|
||||
* "git add frotz/nitfol" when "frotz" is a submodule should have errored
|
||||
out, but it didn't.
|
||||
|
||||
* "git apply" took file modes from the patch text and updated the mode
|
||||
bits of the target tree even when the patch was not about mode changes.
|
||||
|
||||
* "git bisect view" on Cygwin did not launch gitk
|
||||
|
||||
* "git checkout $tree" did not trigger an error.
|
||||
|
||||
* "git commit" tried to remove COMMIT_EDITMSG from the work tree by mistake.
|
||||
|
||||
* "git describe --all" complained when a commit is described with a tag,
|
||||
which was nonsense.
|
||||
|
||||
* "git diff --no-index --" did not trigger no-index (aka "use git-diff as
|
||||
a replacement of diff on untracked files") behaviour.
|
||||
|
||||
* "git format-patch -1 HEAD" on a root commit failed to produce patch
|
||||
text.
|
||||
|
||||
* "git fsck branch" did not work as advertised; instead it behaved the same
|
||||
way as "git fsck".
|
||||
|
||||
* "git log --pretty=format:%s" did not handle a multi-line subject the
|
||||
same way as built-in log listers (i.e. shortlog, --pretty=oneline, etc.)
|
||||
|
||||
* "git daemon", and "git merge-file" are more careful when freopen fails
|
||||
and barf, instead of going on and writing to unopened filehandle.
|
||||
|
||||
* "git http-push" did not like some RFC 4918 compliant DAV server
|
||||
responses.
|
||||
|
||||
* "git merge -s recursive" mistakenly overwritten an untracked file in the
|
||||
work tree upon delete/modify conflict.
|
||||
|
||||
* "git merge -s recursive" didn't leave the index unmerged for entries with
|
||||
rename/delete conflicts.
|
||||
|
||||
* "git merge -s recursive" clobbered untracked files in the work tree.
|
||||
|
||||
* "git mv -k" with more than one erroneous paths misbehaved.
|
||||
|
||||
* "git read-tree -m -u" hence branch switching incorrectly lost a
|
||||
subdirectory in rare cases.
|
||||
|
||||
* "git rebase -i" issued an unnecessary error message upon a user error of
|
||||
marking the first commit to be "squash"ed.
|
||||
|
||||
* "git shortlog" did not format a commit message with multi-line
|
||||
subject correctly.
|
||||
|
||||
Many documentation updates.
|
39
Documentation/RelNotes-1.6.1.2.txt
Normal file
39
Documentation/RelNotes-1.6.1.2.txt
Normal file
@ -0,0 +1,39 @@
|
||||
GIT v1.6.1.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.1
|
||||
--------------------
|
||||
|
||||
* The logic for rename detection in internal diff used by commands like
|
||||
"git diff" and "git blame" has been optimized to avoid loading the same
|
||||
blob repeatedly.
|
||||
|
||||
* We did not allow writing out a blob that is larger than 2GB for no good
|
||||
reason.
|
||||
|
||||
* "git format-patch -o $dir", when $dir is a relative directory, used it
|
||||
as relative to the root of the work tree, not relative to the current
|
||||
directory.
|
||||
|
||||
* v1.6.1 introduced an optimization for "git push" into a repository (A)
|
||||
that borrows its objects from another repository (B) to avoid sending
|
||||
objects that are available in repository B, when they are not yet used
|
||||
by repository A. However the code on the "git push" sender side was
|
||||
buggy and did not work when repository B had new objects that are not
|
||||
known by the sender. This caused pushing into a "forked" repository
|
||||
served by v1.6.1 software using "git push" from v1.6.1 sometimes did not
|
||||
work. The bug was purely on the "git push" sender side, and has been
|
||||
corrected.
|
||||
|
||||
* "git status -v" did not paint its diff output in colour even when
|
||||
color.ui configuration was set.
|
||||
|
||||
* "git ls-tree" learned --full-tree option to help Porcelain scripts that
|
||||
want to always see the full path regardless of the current working
|
||||
directory.
|
||||
|
||||
* "git grep" incorrectly searched in work tree paths even when they are
|
||||
marked as assume-unchanged. It now searches in the index entries.
|
||||
|
||||
* "git gc" with no grace period needlessly ejected packed but unreachable
|
||||
objects in their loose form, only to delete them right away.
|
32
Documentation/RelNotes-1.6.1.3.txt
Normal file
32
Documentation/RelNotes-1.6.1.3.txt
Normal file
@ -0,0 +1,32 @@
|
||||
GIT v1.6.1.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.2
|
||||
--------------------
|
||||
|
||||
* "git diff --binary | git apply" pipeline did not work well when
|
||||
a binary blob is changed to a symbolic link.
|
||||
|
||||
* Some combinations of -b/-w/--ignore-space-at-eol to "git diff" did
|
||||
not work as expected.
|
||||
|
||||
* "git grep" did not pass the -I (ignore binary) option when
|
||||
calling out an external grep program.
|
||||
|
||||
* "git log" and friends include HEAD to the set of starting points
|
||||
when --all is given. This makes a difference when you are not
|
||||
on any branch.
|
||||
|
||||
* "git mv" to move an untracked file to overwrite a tracked
|
||||
contents misbehaved.
|
||||
|
||||
* "git merge -s octopus" with many potential merge bases did not
|
||||
work correctly.
|
||||
|
||||
* RPM binary package installed the html manpages in a wrong place.
|
||||
|
||||
Also includes minor documentation fixes and updates.
|
||||
|
||||
|
||||
--
|
||||
git shortlog --no-merges v1.6.1.2-33-gc789350..
|
44
Documentation/RelNotes-1.6.1.4.txt
Normal file
44
Documentation/RelNotes-1.6.1.4.txt
Normal file
@ -0,0 +1,44 @@
|
||||
GIT v1.6.1.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.3
|
||||
--------------------
|
||||
|
||||
* .gitignore learned to handle backslash as a quoting mechanism for
|
||||
comment introduction character "#".
|
||||
This fix was first merged to 1.6.2.1.
|
||||
|
||||
* "git fast-export" produced wrong output with some parents missing from
|
||||
commits, when the history is clock-skewed.
|
||||
|
||||
* "git fast-import" sometimes failed to read back objects it just wrote
|
||||
out and aborted, because it failed to flush stale cached data.
|
||||
|
||||
* "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
|
||||
deciding to descend into a subdirectory but they did not match the
|
||||
individual paths correctly. This caused pathspecs "abc/d ab" to match
|
||||
"abc/0" ("abc/d" made them decide to descend into the directory "abc/",
|
||||
and then "ab" incorrectly matched "abc/0" when it shouldn't).
|
||||
This fix was first merged to 1.6.2.3.
|
||||
|
||||
* import-zips script (in contrib) did not compute the common directory
|
||||
prefix correctly.
|
||||
This fix was first merged to 1.6.2.2.
|
||||
|
||||
* "git init" segfaulted when given an overlong template location via
|
||||
the --template= option.
|
||||
This fix was first merged to 1.6.2.4.
|
||||
|
||||
* "git repack" did not error out when necessary object was missing in the
|
||||
repository.
|
||||
|
||||
* git-repack (invoked from git-gc) did not work as nicely as it should in
|
||||
a repository that borrows objects from neighbours via alternates
|
||||
mechanism especially when some packs are marked with the ".keep" flag
|
||||
to prevent them from being repacked.
|
||||
This fix was first merged to 1.6.2.3.
|
||||
|
||||
Also includes minor documentation fixes and updates.
|
||||
|
||||
--
|
||||
git shortlog --no-merges v1.6.1.3..
|
286
Documentation/RelNotes-1.6.1.txt
Normal file
286
Documentation/RelNotes-1.6.1.txt
Normal file
@ -0,0 +1,286 @@
|
||||
GIT v1.6.1 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.6.0
|
||||
--------------------
|
||||
|
||||
When some commands (e.g. "git log", "git diff") spawn pager internally, we
|
||||
used to make the pager the parent process of the git command that produces
|
||||
output. This meant that the exit status of the whole thing comes from the
|
||||
pager, not the underlying git command. We swapped the order of the
|
||||
processes around and you will see the exit code from the command from now
|
||||
on.
|
||||
|
||||
(subsystems)
|
||||
|
||||
* gitk can call out to git-gui to view "git blame" output; git-gui in turn
|
||||
can run gitk from its blame view.
|
||||
|
||||
* Various git-gui updates including updated translations.
|
||||
|
||||
* Various gitweb updates from repo.or.cz installation.
|
||||
|
||||
* Updates to emacs bindings.
|
||||
|
||||
(portability)
|
||||
|
||||
* A few test scripts used nonportable "grep" that did not work well on
|
||||
some platforms, e.g. Solaris.
|
||||
|
||||
* Sample pre-auto-gc script has OS X support.
|
||||
|
||||
* Makefile has support for (ancient) FreeBSD 4.9.
|
||||
|
||||
(performance)
|
||||
|
||||
* Many operations that are lstat(3) heavy can be told to pre-execute
|
||||
necessary lstat(3) in parallel before their main operations, which
|
||||
potentially gives much improved performance for cold-cache cases or in
|
||||
environments with weak metadata caching (e.g. NFS).
|
||||
|
||||
* The underlying diff machinery to produce textual output has been
|
||||
optimized, which would result in faster "git blame" processing.
|
||||
|
||||
* Most of the test scripts (but not the ones that try to run servers)
|
||||
can be run in parallel.
|
||||
|
||||
* Bash completion of refnames in a repository with massive number of
|
||||
refs has been optimized.
|
||||
|
||||
* Cygwin port uses native stat/lstat implementations when applicable,
|
||||
which leads to improved performance.
|
||||
|
||||
* "git push" pays attention to alternate repositories to avoid sending
|
||||
unnecessary objects.
|
||||
|
||||
* "git svn" can rebuild an out-of-date rev_map file.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* When you mistype a command name, git helpfully suggests what it guesses
|
||||
you might have meant to say. help.autocorrect configuration can be set
|
||||
to a non-zero value to accept the suggestion when git can uniquely
|
||||
guess.
|
||||
|
||||
* The packfile machinery hopefully is more robust when dealing with
|
||||
corrupt packs if redundant objects involved in the corruption are
|
||||
available elsewhere.
|
||||
|
||||
* "git add -N path..." adds the named paths as an empty blob, so that
|
||||
subsequent "git diff" will show a diff as if they are creation events.
|
||||
|
||||
* "git add" gained a built-in synonym for people who want to say "stage
|
||||
changes" instead of "add contents to the staging area" which amounts
|
||||
to the same thing.
|
||||
|
||||
* "git apply" learned --include=paths option, similar to the existing
|
||||
--exclude=paths option.
|
||||
|
||||
* "git bisect" is careful about a user mistake and suggests testing of
|
||||
merge base first when good is not a strict ancestor of bad.
|
||||
|
||||
* "git bisect skip" can take a range of commits.
|
||||
|
||||
* "git blame" re-encodes the commit metainfo to UTF-8 from i18n.commitEncoding
|
||||
by default.
|
||||
|
||||
* "git check-attr --stdin" can check attributes for multiple paths.
|
||||
|
||||
* "git checkout --track origin/hack" used to be a syntax error. It now
|
||||
DWIMs to create a corresponding local branch "hack", i.e. acts as if you
|
||||
said "git checkout --track -b hack origin/hack".
|
||||
|
||||
* "git checkout --ours/--theirs" can be used to check out one side of a
|
||||
conflicting merge during conflict resolution.
|
||||
|
||||
* "git checkout -m" can be used to recreate the initial conflicted state
|
||||
during conflict resolution.
|
||||
|
||||
* "git cherry-pick" can also utilize rerere for conflict resolution.
|
||||
|
||||
* "git clone" learned to be verbose with -v
|
||||
|
||||
* "git commit --author=$name" can look up author name from existing
|
||||
commits.
|
||||
|
||||
* output from "git commit" has been reworded in a more concise and yet
|
||||
more informative way.
|
||||
|
||||
* "git count-objects" reports the on-disk footprint for packfiles and
|
||||
their corresponding idx files.
|
||||
|
||||
* "git daemon" learned --max-connections=<count> option.
|
||||
|
||||
* "git daemon" exports REMOTE_ADDR to record client address, so that
|
||||
spawned programs can act differently on it.
|
||||
|
||||
* "git describe --tags" favours closer lightweight tags than farther
|
||||
annotated tags now.
|
||||
|
||||
* "git diff" learned to mimic --suppress-blank-empty from GNU diff via a
|
||||
configuration option.
|
||||
|
||||
* "git diff" learned to put more sensible hunk headers for Python,
|
||||
HTML and ObjC contents.
|
||||
|
||||
* "git diff" learned to vary the a/ vs b/ prefix depending on what are
|
||||
being compared, controlled by diff.mnemonicprefix configuration.
|
||||
|
||||
* "git diff" learned --dirstat-by-file to count changed files, not number
|
||||
of lines, when summarizing the global picture.
|
||||
|
||||
* "git diff" learned "textconv" filters --- a binary or hard-to-read
|
||||
contents can be munged into human readable form and the difference
|
||||
between the results of the conversion can be viewed (obviously this
|
||||
cannot produce a patch that can be applied, so this is disabled in
|
||||
format-patch among other things).
|
||||
|
||||
* "--cached" option to "git diff has an easier to remember synonym "--staged",
|
||||
to ask "what is the difference between the given commit and the
|
||||
contents staged in the index?"
|
||||
|
||||
* "git for-each-ref" learned "refname:short" token that gives an
|
||||
unambiguously abbreviated refname.
|
||||
|
||||
* Auto-numbering of the subject lines is the default for "git
|
||||
format-patch" now.
|
||||
|
||||
* "git grep" learned to accept -z similar to GNU grep.
|
||||
|
||||
* "git help" learned to use GIT_MAN_VIEWER environment variable before
|
||||
using "man" program.
|
||||
|
||||
* "git imap-send" can optionally talk SSL.
|
||||
|
||||
* "git index-pack" is more careful against disk corruption while
|
||||
completing a thin pack.
|
||||
|
||||
* "git log --check" and "git log --exit-code" passes their underlying diff
|
||||
status with their exit status code.
|
||||
|
||||
* "git log" learned --simplify-merges, a milder variant of --full-history;
|
||||
"gitk --simplify-merges" is easier to view than with --full-history.
|
||||
|
||||
* "git log" learned "--source" to show what ref each commit was reached
|
||||
from.
|
||||
|
||||
* "git log" also learned "--simplify-by-decoration" to show the
|
||||
birds-eye-view of the topology of the history.
|
||||
|
||||
* "git log --pretty=format:" learned "%d" format element that inserts
|
||||
names of tags that point at the commit.
|
||||
|
||||
* "git merge --squash" and "git merge --no-ff" into an unborn branch are
|
||||
noticed as user errors.
|
||||
|
||||
* "git merge -s $strategy" can use a custom built strategy if you have a
|
||||
command "git-merge-$strategy" on your $PATH.
|
||||
|
||||
* "git pull" (and "git fetch") can be told to operate "-v"erbosely or
|
||||
"-q"uietly.
|
||||
|
||||
* "git push" can be told to reject deletion of refs with receive.denyDeletes
|
||||
configuration.
|
||||
|
||||
* "git rebase" honours pre-rebase hook; use --no-verify to bypass it.
|
||||
|
||||
* "git rebase -p" uses interactive rebase machinery now to preserve the merges.
|
||||
|
||||
* "git reflog expire branch" can be used in place of "git reflog expire
|
||||
refs/heads/branch".
|
||||
|
||||
* "git remote show $remote" lists remote branches one-per-line now.
|
||||
|
||||
* "git send-email" can be given revision range instead of files and
|
||||
maildirs on the command line, and automatically runs format-patch to
|
||||
generate patches for the given revision range.
|
||||
|
||||
* "git submodule foreach" subcommand allows you to iterate over checked
|
||||
out submodules.
|
||||
|
||||
* "git submodule sync" subcommands allows you to update the origin URL
|
||||
recorded in submodule directories from the toplevel .gitmodules file.
|
||||
|
||||
* "git svn branch" can create new branches on the other end.
|
||||
|
||||
* "gitweb" can use more saner PATH_INFO based URL.
|
||||
|
||||
(internal)
|
||||
|
||||
* "git hash-object" learned to lie about the path being hashed, so that
|
||||
correct gitattributes processing can be done while hashing contents
|
||||
stored in a temporary file.
|
||||
|
||||
* various callers of git-merge-recursive avoid forking it as an external
|
||||
process.
|
||||
|
||||
* Git class defined in "Git.pm" can be subclasses a bit more easily.
|
||||
|
||||
* We used to link GNU regex library as a compatibility layer for some
|
||||
platforms, but it turns out it is not necessary on most of them.
|
||||
|
||||
* Some path handling routines used fixed number of buffers used alternately
|
||||
but depending on the call depth, this arrangement led to hard to track
|
||||
bugs. This issue is being addressed.
|
||||
|
||||
|
||||
Fixes since v1.6.0
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.0.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
* Porcelains implemented as shell scripts were utterly confused when you
|
||||
entered to a subdirectory of a work tree from sideways, following a
|
||||
symbolic link (this may need to be backported to older releases later).
|
||||
|
||||
* Tracking symbolic links would work better on filesystems whose lstat()
|
||||
returns incorrect st_size value for them.
|
||||
|
||||
* "git add" and "git update-index" incorrectly allowed adding S/F when S
|
||||
is a tracked symlink that points at a directory D that has a path F in
|
||||
it (we still need to fix a similar nonsense when S is a submodule and F
|
||||
is a path in it).
|
||||
|
||||
* "git am" after stopping at a broken patch lost --whitespace, -C, -p and
|
||||
--3way options given from the command line initially.
|
||||
|
||||
* "git diff --stdin" used to take two trees on a line and compared them,
|
||||
but we dropped support for such a use case long time ago. This has
|
||||
been resurrected.
|
||||
|
||||
* "git filter-branch" failed to rewrite a tag name with slashes in it.
|
||||
|
||||
* "git http-push" did not understand URI scheme other than opaquelocktoken
|
||||
when acquiring a lock from the server (this may need to be backported to
|
||||
older releases later).
|
||||
|
||||
* After "git rebase -p" stopped with conflicts while replaying a merge,
|
||||
"git rebase --continue" did not work (may need to be backported to older
|
||||
releases).
|
||||
|
||||
* "git revert" records relative to which parent a revert was made when
|
||||
reverting a merge. Together with new documentation that explains issues
|
||||
around reverting a merge and merging from the updated branch later, this
|
||||
hopefully will reduce user confusion (this may need to be backported to
|
||||
older releases later).
|
||||
|
||||
* "git rm --cached" used to allow an empty blob that was added earlier to
|
||||
be removed without --force, even when the file in the work tree has
|
||||
since been modified.
|
||||
|
||||
* "git push --tags --all $there" failed with generic usage message without
|
||||
telling saying these two options are incompatible.
|
||||
|
||||
* "git log --author/--committer" match used to potentially match the
|
||||
timestamp part, exposing internal implementation detail. Also these did
|
||||
not work with --fixed-strings match at all.
|
||||
|
||||
* "gitweb" did not mark non-ASCII characters imported from external HTML fragments
|
||||
correctly.
|
||||
|
||||
--
|
||||
exec >/var/tmp/1
|
||||
O=v1.6.1-rc3-74-gf66bc5f
|
||||
echo O=$(git describe master)
|
||||
git shortlog --no-merges $O..master ^maint
|
19
Documentation/RelNotes-1.6.2.1.txt
Normal file
19
Documentation/RelNotes-1.6.2.1.txt
Normal file
@ -0,0 +1,19 @@
|
||||
GIT v1.6.2.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2
|
||||
------------------
|
||||
|
||||
* .gitignore learned to handle backslash as a quoting mechanism for
|
||||
comment introduction character "#".
|
||||
|
||||
* timestamp output in --date=relative mode used to display timestamps that
|
||||
are long time ago in the default mode; it now uses "N years M months
|
||||
ago", and "N years ago".
|
||||
|
||||
* git-add -i/-p now works with non-ASCII pathnames.
|
||||
|
||||
* "git hash-object -w" did not read from the configuration file from the
|
||||
correct .git directory.
|
||||
|
||||
* git-send-email learned to correctly handle multiple Cc: addresses.
|
45
Documentation/RelNotes-1.6.2.2.txt
Normal file
45
Documentation/RelNotes-1.6.2.2.txt
Normal file
@ -0,0 +1,45 @@
|
||||
GIT v1.6.2.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.1
|
||||
--------------------
|
||||
|
||||
* A longstanding confusing description of what --pickaxe option of
|
||||
git-diff does has been clarified in the documentation.
|
||||
|
||||
* "git-blame -S" did not quite work near the commits that were given
|
||||
on the command line correctly.
|
||||
|
||||
* "git diff --pickaxe-regexp" did not count overlapping matches
|
||||
correctly.
|
||||
|
||||
* "git diff" did not feed files in work-tree representation to external
|
||||
diff and textconv.
|
||||
|
||||
* "git-fetch" in a repository that was not cloned from anywhere said
|
||||
it cannot find 'origin', which was hard to understand for new people.
|
||||
|
||||
* "git-format-patch --numbered-files --stdout" did not have to die of
|
||||
incompatible options; it now simply ignores --numbered-files as no files
|
||||
are produced anyway.
|
||||
|
||||
* "git-ls-files --deleted" did not work well with GIT_DIR&GIT_WORK_TREE.
|
||||
|
||||
* "git-read-tree A B C..." without -m option has been broken for a long
|
||||
time.
|
||||
|
||||
* git-send-email ignored --in-reply-to when --no-thread was given.
|
||||
|
||||
* 'git-submodule add' did not tolerate extra slashes and ./ in the path it
|
||||
accepted from the command line; it now is more lenient.
|
||||
|
||||
* git-svn misbehaved when the project contained a path that began with
|
||||
two dashes.
|
||||
|
||||
* import-zips script (in contrib) did not compute the common directory
|
||||
prefix correctly.
|
||||
|
||||
* miscompilation of negated enum constants by old gcc (2.9) affected the
|
||||
codepaths to spawn subprocesses.
|
||||
|
||||
Many small documentation updates are included as well.
|
22
Documentation/RelNotes-1.6.2.3.txt
Normal file
22
Documentation/RelNotes-1.6.2.3.txt
Normal file
@ -0,0 +1,22 @@
|
||||
GIT v1.6.2.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.2
|
||||
--------------------
|
||||
|
||||
* Setting an octal mode value to core.sharedrepository configuration to
|
||||
restrict access to the repository to group members did not work as
|
||||
advertised.
|
||||
|
||||
* A fairly large and trivial memory leak while rev-list shows list of
|
||||
reachable objects has been identified and plugged.
|
||||
|
||||
* "git-commit --interactive" did not abort when underlying "git-add -i"
|
||||
signaled a failure.
|
||||
|
||||
* git-repack (invoked from git-gc) did not work as nicely as it should in
|
||||
a repository that borrows objects from neighbours via alternates
|
||||
mechanism especially when some packs are marked with the ".keep" flag
|
||||
to prevent them from being repacked.
|
||||
|
||||
Many small documentation updates are included as well.
|
39
Documentation/RelNotes-1.6.2.4.txt
Normal file
39
Documentation/RelNotes-1.6.2.4.txt
Normal file
@ -0,0 +1,39 @@
|
||||
GIT v1.6.2.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.3
|
||||
--------------------
|
||||
|
||||
* The configuration parser had a buffer overflow while parsing an overlong
|
||||
value.
|
||||
|
||||
* pruning reflog entries that are unreachable from the tip of the ref
|
||||
during "git reflog prune" (hence "git gc") was very inefficient.
|
||||
|
||||
* "git-add -p" lacked a way to say "q"uit to refuse staging any hunks for
|
||||
the remaining paths. You had to say "d" and then ^C.
|
||||
|
||||
* "git-checkout <tree-ish> <submodule>" did not update the index entry at
|
||||
the named path; it now does.
|
||||
|
||||
* "git-fast-export" choked when seeing a tag that does not point at commit.
|
||||
|
||||
* "git init" segfaulted when given an overlong template location via
|
||||
the --template= option.
|
||||
|
||||
* "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
|
||||
deciding to descend into a subdirectory but they did not match the
|
||||
individual paths correctly. This caused pathspecs "abc/d ab" to match
|
||||
"abc/0" ("abc/d" made them decide to descend into the directory "abc/",
|
||||
and then "ab" incorrectly matched "abc/0" when it shouldn't).
|
||||
|
||||
* "git-merge-recursive" was broken when a submodule entry was involved in
|
||||
a criss-cross merge situation.
|
||||
|
||||
Many small documentation updates are included as well.
|
||||
|
||||
---
|
||||
exec >/var/tmp/1
|
||||
echo O=$(git describe maint)
|
||||
O=v1.6.2.3-38-g318b847
|
||||
git shortlog --no-merges $O..maint
|
21
Documentation/RelNotes-1.6.2.5.txt
Normal file
21
Documentation/RelNotes-1.6.2.5.txt
Normal file
@ -0,0 +1,21 @@
|
||||
GIT v1.6.2.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.4
|
||||
--------------------
|
||||
|
||||
* "git apply" mishandled if you fed a git generated patch that renames
|
||||
file A to B and file B to A at the same time.
|
||||
|
||||
* "git diff -c -p" (and "diff --cc") did not expect to see submodule
|
||||
differences and instead refused to work.
|
||||
|
||||
* "git grep -e '('" segfaulted, instead of diagnosing a mismatched
|
||||
parentheses error.
|
||||
|
||||
* "git fetch" generated packs with offset-delta encoding when both ends of
|
||||
the connection are capable of producing one; this cannot be read by
|
||||
ancient git and the user should be able to disable this by setting
|
||||
repack.usedeltabaseoffset configuration to false.
|
||||
|
||||
|
164
Documentation/RelNotes-1.6.2.txt
Normal file
164
Documentation/RelNotes-1.6.2.txt
Normal file
@ -0,0 +1,164 @@
|
||||
GIT v1.6.2 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
http://git.or.cz/gitwiki/GitFaq#non-bare
|
||||
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
|
||||
Updates since v1.6.1
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* git-svn updates.
|
||||
|
||||
* gitweb updates, including a new patch view and RSS/Atom feed
|
||||
improvements.
|
||||
|
||||
* (contrib/emacs) git.el now has commands for checking out a branch,
|
||||
creating a branch, cherry-picking and reverting commits; vc-git.el
|
||||
is not shipped with git anymore (it is part of official Emacs).
|
||||
|
||||
(performance)
|
||||
|
||||
* pack-objects autodetects the number of CPUs available and uses threaded
|
||||
version.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* automatic typo correction works on aliases as well
|
||||
|
||||
* @{-1} is a way to refer to the last branch you were on. This is
|
||||
accepted not only where an object name is expected, but anywhere
|
||||
a branch name is expected and acts as if you typed the branch name.
|
||||
E.g. "git branch --track mybranch @{-1}", "git merge @{-1}", and
|
||||
"git rev-parse --symbolic-full-name @{-1}" would work as expected.
|
||||
|
||||
* When refs/remotes/origin/HEAD points at a remote tracking branch that
|
||||
has been pruned away, many git operations issued warning when they
|
||||
internally enumerated the refs. We now warn only when you say "origin"
|
||||
to refer to that pruned branch.
|
||||
|
||||
* The location of .mailmap file can be configured, and its file format was
|
||||
enhanced to allow mapping an incorrect e-mail field as well.
|
||||
|
||||
* "git add -p" learned 'g'oto action to jump directly to a hunk.
|
||||
|
||||
* "git add -p" learned to find a hunk with given text with '/'.
|
||||
|
||||
* "git add -p" optionally can be told to work with just the command letter
|
||||
without Enter.
|
||||
|
||||
* when "git am" stops upon a patch that does not apply, it shows the
|
||||
title of the offending patch.
|
||||
|
||||
* "git am --directory=<dir>" and "git am --reject" passes these options
|
||||
to underlying "git apply".
|
||||
|
||||
* "git am" learned --ignore-date option.
|
||||
|
||||
* "git blame" aligns author names better when they are spelled in
|
||||
non US-ASCII encoding.
|
||||
|
||||
* "git clone" now makes its best effort when cloning from an empty
|
||||
repository to set up configuration variables to refer to the remote
|
||||
repository.
|
||||
|
||||
* "git checkout -" is a shorthand for "git checkout @{-1}".
|
||||
|
||||
* "git cherry" defaults to whatever the current branch is tracking (if
|
||||
exists) when the <upstream> argument is not given.
|
||||
|
||||
* "git cvsserver" can be told not to add extra "via git-CVS emulator" to
|
||||
the commit log message it serves via gitcvs.commitmsgannotation
|
||||
configuration.
|
||||
|
||||
* "git cvsserver" learned to handle 'noop' command some CVS clients seem
|
||||
to expect to work.
|
||||
|
||||
* "git diff" learned a new option --inter-hunk-context to coalesce close
|
||||
hunks together and show context between them.
|
||||
|
||||
* The definition of what constitutes a word for "git diff --color-words"
|
||||
can be customized via gitattributes, command line or a configuration.
|
||||
|
||||
* "git diff" learned --patience to run "patience diff" algorithm.
|
||||
|
||||
* "git filter-branch" learned --prune-empty option that discards commits
|
||||
that do not change the contents.
|
||||
|
||||
* "git fsck" now checks loose objects in alternate object stores, instead
|
||||
of misreporting them as missing.
|
||||
|
||||
* "git gc --prune" was resurrected to allow "git gc --no-prune" and
|
||||
giving non-default expiration period e.g. "git gc --prune=now".
|
||||
|
||||
* "git grep -w" and "git grep" for fixed strings have been optimized.
|
||||
|
||||
* "git mergetool" learned -y(--no-prompt) option to disable prompting.
|
||||
|
||||
* "git rebase -i" can transplant a history down to root to elsewhere
|
||||
with --root option.
|
||||
|
||||
* "git reset --merge" is a new mode that works similar to the way
|
||||
"git checkout" switches branches, taking the local changes while
|
||||
switching to another commit.
|
||||
|
||||
* "git submodule update" learned --no-fetch option.
|
||||
|
||||
* "git tag" learned --contains that works the same way as the same option
|
||||
from "git branch".
|
||||
|
||||
|
||||
Fixes since v1.6.1
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.1.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.1.X series.
|
||||
|
||||
* "git-add sub/file" when sub is a submodule incorrectly added the path to
|
||||
the superproject.
|
||||
|
||||
* "git bundle" did not exclude annotated tags even when a range given
|
||||
from the command line wanted to.
|
||||
|
||||
* "git filter-branch" unnecessarily refused to work when you had
|
||||
checked out a different commit from what is recorded in the superproject
|
||||
index in a submodule.
|
||||
|
||||
* "git filter-branch" incorrectly tried to update a nonexistent work tree
|
||||
at the end when it is run in a bare repository.
|
||||
|
||||
* "git gc" did not work if your repository was created with an ancient git
|
||||
and never had any pack files in it before.
|
||||
|
||||
* "git mergetool" used to ignore autocrlf and other attributes
|
||||
based content rewriting.
|
||||
|
||||
* branch switching and merges had a silly bug that did not validate
|
||||
the correct directory when making sure an existing subdirectory is
|
||||
clean.
|
||||
|
||||
* "git -p cmd" when cmd is not a built-in one left the display in funny state
|
||||
when killed in the middle.
|
10
Documentation/RelNotes-1.6.3.1.txt
Normal file
10
Documentation/RelNotes-1.6.3.1.txt
Normal file
@ -0,0 +1,10 @@
|
||||
GIT v1.6.3.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3
|
||||
------------------
|
||||
|
||||
* "git checkout -b new-branch" with a staged change in the index
|
||||
incorrectly primed the in-index cache-tree, resulting a wrong tree
|
||||
object to be written out of the index. This is a grave regression
|
||||
since the last 1.6.2.X maintenance release.
|
61
Documentation/RelNotes-1.6.3.2.txt
Normal file
61
Documentation/RelNotes-1.6.3.2.txt
Normal file
@ -0,0 +1,61 @@
|
||||
GIT v1.6.3.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.1
|
||||
--------------------
|
||||
|
||||
* A few codepaths picked up the first few bytes from an sha1[] by
|
||||
casting the (char *) pointer to (int *); GCC 4.4 did not like this,
|
||||
and aborted compilation.
|
||||
|
||||
* Some unlink(2) failures went undiagnosed.
|
||||
|
||||
* The "recursive" merge strategy misbehaved when faced rename/delete
|
||||
conflicts while coming up with an intermediate merge base.
|
||||
|
||||
* The low-level merge algorithm did not handle a degenerate case of
|
||||
merging a file with itself using itself as the common ancestor
|
||||
gracefully. It should produce the file itself, but instead
|
||||
produced an empty result.
|
||||
|
||||
* GIT_TRACE mechanism segfaulted when tracing a shell-quoted aliases.
|
||||
|
||||
* OpenBSD also uses st_ctimspec in "struct stat", instead of "st_ctim".
|
||||
|
||||
* With NO_CROSS_DIRECTORY_HARDLINKS, "make install" can be told not to
|
||||
create hardlinks between $(gitexecdir)/git-$builtin_commands and
|
||||
$(bindir)/git.
|
||||
|
||||
* command completion code in bash did not reliably detect that we are
|
||||
in a bare repository.
|
||||
|
||||
* "git add ." in an empty directory complained that pathspec "." did not
|
||||
match anything, which may be technically correct, but not useful. We
|
||||
silently make it a no-op now.
|
||||
|
||||
* "git add -p" (and "patch" action in "git add -i") was broken when
|
||||
the first hunk that adds a line at the top was split into two and
|
||||
both halves are marked to be used.
|
||||
|
||||
* "git blame path" misbehaved at the commit where path became file
|
||||
from a directory with some files in it.
|
||||
|
||||
* "git for-each-ref" had a segfaulting bug when dealing with a tag object
|
||||
created by an ancient git.
|
||||
|
||||
* "git format-patch -k" still added patch numbers if format.numbered
|
||||
configuration was set.
|
||||
|
||||
* "git grep --color ''" did not terminate. The command also had
|
||||
subtle bugs with its -w option.
|
||||
|
||||
* http-push had a small use-after-free bug.
|
||||
|
||||
* "git push" was converting OFS_DELTA pack representation into less
|
||||
efficient REF_DELTA representation unconditionally upon transfer,
|
||||
making the transferred data unnecessarily larger.
|
||||
|
||||
* "git remote show origin" segfaulted when origin was still empty.
|
||||
|
||||
Many other general usability updates around help text, diagnostic messages
|
||||
and documentation are included as well.
|
38
Documentation/RelNotes-1.6.3.3.txt
Normal file
38
Documentation/RelNotes-1.6.3.3.txt
Normal file
@ -0,0 +1,38 @@
|
||||
GIT v1.6.3.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.2
|
||||
--------------------
|
||||
|
||||
* "git archive" running on Cygwin can get stuck in an infinite loop.
|
||||
|
||||
* "git daemon" did not correctly parse the initial line that carries
|
||||
virtual host request information.
|
||||
|
||||
* "git diff --textconv" leaked memory badly when the textconv filter
|
||||
errored out.
|
||||
|
||||
* The built-in regular expressions to pick function names to put on
|
||||
hunk header lines for java and objc were very inefficiently written.
|
||||
|
||||
* in certain error situations git-fetch (and git-clone) on Windows didn't
|
||||
detect connection abort and ended up waiting indefinitely.
|
||||
|
||||
* import-tars script (in contrib) did not import symbolic links correctly.
|
||||
|
||||
* http.c used CURLOPT_SSLKEY even on libcURL version 7.9.2, even though
|
||||
it was only available starting 7.9.3.
|
||||
|
||||
* low-level filelevel merge driver used return value from strdup()
|
||||
without checking if we ran out of memory.
|
||||
|
||||
* "git rebase -i" left stray closing parenthesis in its reflog message.
|
||||
|
||||
* "git remote show" did not show all the URLs associated with the named
|
||||
remote, even though "git remote -v" did. Made them consistent by
|
||||
making the former show all URLs.
|
||||
|
||||
* "whitespace" attribute that is set was meant to detect all errors known
|
||||
to git, but it told git to ignore trailing carriage-returns.
|
||||
|
||||
Includes other documentation fixes.
|
182
Documentation/RelNotes-1.6.3.txt
Normal file
182
Documentation/RelNotes-1.6.3.txt
Normal file
@ -0,0 +1,182 @@
|
||||
GIT v1.6.3 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
http://git.or.cz/gitwiki/GitFaq#non-bare
|
||||
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
When the user does not tell "git push" what to push, it has always
|
||||
pushed matching refs. For some people it is unexpected, and a new
|
||||
configuration variable push.default has been introduced to allow
|
||||
changing a different default behaviour. To advertise the new feature,
|
||||
a big warning is issued if this is not configured and a git push without
|
||||
arguments is attempted.
|
||||
|
||||
|
||||
Updates since v1.6.2
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* various git-svn updates.
|
||||
|
||||
* git-gui updates, including an update to Russian translation, and a
|
||||
fix to an infinite loop when showing an empty diff.
|
||||
|
||||
* gitk updates, including an update to Russian translation and improved Windows
|
||||
support.
|
||||
|
||||
(performance)
|
||||
|
||||
* many uses of lstat(2) in the codepath for "git checkout" have been
|
||||
optimized out.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* Boolean configuration variable yes/no can be written as on/off.
|
||||
|
||||
* rsync:/path/to/repo can be used to run git over rsync for local
|
||||
repositories. It may not be useful in practice; meant primarily for
|
||||
testing.
|
||||
|
||||
* http transport learned to prompt and use password when fetching from or
|
||||
pushing to http://user@host.xz/ URL.
|
||||
|
||||
* (msysgit) progress output that is sent over the sideband protocol can
|
||||
be handled appropriately in Windows console.
|
||||
|
||||
* "--pretty=<style>" option to the log family of commands can now be
|
||||
spelled as "--format=<style>". In addition, --format=%formatstring
|
||||
is a short-hand for --pretty=tformat:%formatstring.
|
||||
|
||||
* "--oneline" is a synonym for "--pretty=oneline --abbrev-commit".
|
||||
|
||||
* "--graph" to the "git log" family can draw the commit ancestry graph
|
||||
in colors.
|
||||
|
||||
* If you realize that you botched the patch when you are editing hunks
|
||||
with the 'edit' action in git-add -i/-p, you can abort the editor to
|
||||
tell git not to apply it.
|
||||
|
||||
* @{-1} is a new way to refer to the last branch you were on introduced in
|
||||
1.6.2, but the initial implementation did not teach this to a few
|
||||
commands. Now the syntax works with "branch -m @{-1} newname".
|
||||
|
||||
* git-archive learned --output=<file> option.
|
||||
|
||||
* git-archive takes attributes from the tree being archived; strictly
|
||||
speaking, this is an incompatible behaviour change, but is a good one.
|
||||
Use --worktree-attributes option to allow it to read attributes from
|
||||
the work tree as before (deprecated git-tar tree command always reads
|
||||
attributes from the work tree).
|
||||
|
||||
* git-bisect shows not just the number of remaining commits whose goodness
|
||||
is unknown, but also shows the estimated number of remaining rounds.
|
||||
|
||||
* You can give --date=<format> option to git-blame.
|
||||
|
||||
* "git-branch -r" shows HEAD symref that points at a remote branch in
|
||||
interest of each tracked remote repository.
|
||||
|
||||
* "git-branch -v -v" is a new way to get list of names for branches and the
|
||||
"upstream" branch for them.
|
||||
|
||||
* git-config learned -e option to open an editor to edit the config file
|
||||
directly.
|
||||
|
||||
* git-clone runs post-checkout hook when run without --no-checkout.
|
||||
|
||||
* git-difftool is now part of the officially supported command, primarily
|
||||
maintained by David Aguilar.
|
||||
|
||||
* git-for-each-ref learned a new "upstream" token.
|
||||
|
||||
* git-format-patch can be told to use attachment with a new configuration,
|
||||
format.attach.
|
||||
|
||||
* git-format-patch can be told to produce deep or shallow message threads.
|
||||
|
||||
* git-format-patch can be told to always add sign-off with a configuration
|
||||
variable.
|
||||
|
||||
* git-format-patch learned format.headers configuration to add extra
|
||||
header fields to the output. This behaviour is similar to the existing
|
||||
--add-header=<header> option of the command.
|
||||
|
||||
* git-format-patch gives human readable names to the attached files, when
|
||||
told to send patches as attachments.
|
||||
|
||||
* git-grep learned to highlight the found substrings in color.
|
||||
|
||||
* git-imap-send learned to work around Thunderbird's inability to easily
|
||||
disable format=flowed with a new configuration, imap.preformattedHTML.
|
||||
|
||||
* git-rebase can be told to rebase the series even if your branch is a
|
||||
descendant of the commit you are rebasing onto with --force-rebase
|
||||
option.
|
||||
|
||||
* git-rebase can be told to report diffstat with the --stat option.
|
||||
|
||||
* Output from git-remote command has been vastly improved.
|
||||
|
||||
* "git remote update --prune $remote" updates from the named remote and
|
||||
then prunes stale tracking branches.
|
||||
|
||||
* git-send-email learned --confirm option to review the Cc: list before
|
||||
sending the messages out.
|
||||
|
||||
(developers)
|
||||
|
||||
* Test scripts can be run under valgrind.
|
||||
|
||||
* Test scripts can be run with installed git.
|
||||
|
||||
* Makefile learned 'coverage' option to run the test suites with
|
||||
coverage tracking enabled.
|
||||
|
||||
* Building the manpages with docbook-xsl between 1.69.1 and 1.71.1 now
|
||||
requires setting DOCBOOK_SUPPRESS_SP to work around a docbook-xsl bug.
|
||||
This workaround used to be enabled by default, but causes problems
|
||||
with newer versions of docbook-xsl. In addition, there are a few more
|
||||
knobs you can tweak to work around issues with various versions of the
|
||||
docbook-xsl package. See comments in Documentation/Makefile for details.
|
||||
|
||||
* Support for building and testing a subset of git on a system without a
|
||||
working perl has been improved.
|
||||
|
||||
|
||||
Fixes since v1.6.2
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.2.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.2.X series.
|
||||
|
||||
* "git-apply" rejected a patch that swaps two files (i.e. renames A to B
|
||||
and B to A at the same time). May need to be backported by cherry
|
||||
picking d8c81df and then 7fac0ee).
|
||||
|
||||
* The initial checkout did not read the attributes from the .gitattribute
|
||||
file that is being checked out.
|
||||
|
||||
* git-gc spent excessive amount of time to decide if an object appears
|
||||
in a locally existing pack (if needed, backport by merging 69e020a).
|
141
Documentation/RelNotes-1.6.4.txt
Normal file
141
Documentation/RelNotes-1.6.4.txt
Normal file
@ -0,0 +1,141 @@
|
||||
GIT v1.6.4 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
http://git.or.cz/gitwiki/GitFaq#non-bare
|
||||
http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
|
||||
Updates since v1.6.3
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* gitweb Perl style clean-up.
|
||||
|
||||
* git-svn updates, including a new --authors-prog option to map author
|
||||
names by invoking an external program, 'git svn reset' to unwind
|
||||
'git svn fetch', support for more than one branches, etc.
|
||||
|
||||
(portability)
|
||||
|
||||
* We feed iconv with "UTF-8" instead of "utf8"; the former is
|
||||
understood more widely. Similarly updated test scripts to use
|
||||
encoding names more widely understood (e.g. use "ISO8859-1" instead
|
||||
of "ISO-8859-1").
|
||||
|
||||
* Various portability fixes/workarounds for different vintages of
|
||||
SunOS, IRIX, and Windows.
|
||||
|
||||
* Git-over-ssh transport on Windows supports PuTTY plink and TortoisePlink.
|
||||
|
||||
(performance)
|
||||
|
||||
* Many repeated use of lstat() are optimized out in "checkout" codepath.
|
||||
|
||||
* git-status (and underlying git-diff-index --cached) are optimized
|
||||
to take advantage of cache-tree information in the index.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* "git add --edit" lets users edit the whole patch text to fine-tune what
|
||||
is added to the index.
|
||||
|
||||
* "git am" accepts StGIT series file as its input.
|
||||
|
||||
* "git bisect skip" skips to a more randomly chosen place in the hope
|
||||
to avoid testing a commit that is too close to a commit that is
|
||||
already known to be untestable.
|
||||
|
||||
* "git cvsexportcommit" learned -k option to stop CVS keywords expansion
|
||||
|
||||
* "git grep" learned -p option to show the location of the match using the
|
||||
same context hunk marker "git diff" uses.
|
||||
|
||||
* https transport can optionally be told that the used client
|
||||
certificate is password protected, in which case it asks the
|
||||
password only once.
|
||||
|
||||
* "git imap-send" is IPv6 aware.
|
||||
|
||||
* "git log --graph" draws graphs more compactly by using horizonal lines
|
||||
when able.
|
||||
|
||||
* "git log --decorate" shows shorter refnames by stripping well-known
|
||||
refs/* prefix.
|
||||
|
||||
* "git push $name" honors remote.$name.pushurl if present before
|
||||
using remote.$name.url. In other words, the URL used for fetching
|
||||
and pushing can be different.
|
||||
|
||||
* "git send-email" understands quoted aliases in .mailrc files (might
|
||||
have to be backported to 1.6.3.X).
|
||||
|
||||
* "git send-email" can fetch the sender address from the configuration
|
||||
variable "sendmail.from" (and "sendmail.<identity>.from").
|
||||
|
||||
* "git show-branch" can color its output.
|
||||
|
||||
* "add" and "update" subcommands to "git submodule" learned --reference
|
||||
option to use local clone with references.
|
||||
|
||||
* "git submodule update" learned --rebase option to update checked
|
||||
out submodules by rebasing the local changes.
|
||||
|
||||
* "gitweb" can optionally use gravatar to adorn author/committer names.
|
||||
|
||||
(developers)
|
||||
|
||||
* A major part of the "git bisect" wrapper has moved to C.
|
||||
|
||||
Fixes since v1.6.3
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.3.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.3.X series.
|
||||
|
||||
* "git diff-tree -r -t" used to omit new or removed directories from
|
||||
the output. df533f3 (diff-tree -r -t: include added/removed
|
||||
directories in the output, 2009-06-13) may need to be cherry-picked
|
||||
to backport this fix.
|
||||
|
||||
* The way Git.pm sets up a Repository object was not friendly to callers
|
||||
that chdir around. It now internally records the repository location
|
||||
as an absolute path when autodetected.
|
||||
|
||||
* Removing a section with "git config --remove-section", when its
|
||||
section header has a variable definition on the same line, lost
|
||||
that variable definition.
|
||||
|
||||
* "git repack" used to faithfully follow grafts and considered true
|
||||
parents recorded in the commit object unreachable from the commit.
|
||||
After such a repacking, you cannot remove grafts without corrupting
|
||||
the repository.
|
||||
|
||||
* "git send-email" did not detect errorneous loops in alias expansion.
|
||||
|
||||
---
|
||||
exec >/var/tmp/1
|
||||
echo O=$(git describe master)
|
||||
O=v1.6.4-rc2-17-g130b04a
|
||||
git shortlog --no-merges $O..master ^maint
|
@ -1,19 +1,30 @@
|
||||
Checklist (and a short version for the impatient):
|
||||
|
||||
Commits:
|
||||
|
||||
- make commits of logical units
|
||||
- check for unnecessary whitespace with "git diff --check"
|
||||
before committing
|
||||
- do not check in commented out code or unneeded files
|
||||
- provide a meaningful commit message
|
||||
- the first line of the commit message should be a short
|
||||
description and should skip the full stop
|
||||
- the body should provide a meaningful commit message, which:
|
||||
- uses the imperative, present tense: "change",
|
||||
not "changed" or "changes".
|
||||
- includes motivation for the change, and contrasts
|
||||
its implementation with previous behaviour
|
||||
- if you want your work included in git.git, add a
|
||||
"Signed-off-by: Your Name <your@email.com>" line to the
|
||||
"Signed-off-by: Your Name <you@example.com>" line to the
|
||||
commit message (or just use the option "-s" when
|
||||
committing) to confirm that you agree to the Developer's
|
||||
Certificate of Origin
|
||||
- do not PGP sign your patch
|
||||
- make sure that you have tests for the bug you are fixing
|
||||
- make sure that the test suite passes after your commit
|
||||
|
||||
Patch:
|
||||
|
||||
- use "git format-patch -M" to create the patch
|
||||
- do not PGP sign your patch
|
||||
- do not attach your patch, but read in the mail
|
||||
body, unless you cannot teach your mailer to
|
||||
leave the formatting of the patch alone.
|
||||
@ -21,7 +32,15 @@ Checklist (and a short version for the impatient):
|
||||
corrupt whitespaces.
|
||||
- provide additional information (which is unsuitable for
|
||||
the commit message) between the "---" and the diffstat
|
||||
- send the patch to the list _and_ the maintainer
|
||||
- if you change, add, or remove a command line option or
|
||||
make some other user interface change, the associated
|
||||
documentation should be updated as well.
|
||||
- if your name is not writable in ASCII, make sure that
|
||||
you send off a message in the correct encoding.
|
||||
- send the patch to the list (git@vger.kernel.org) and the
|
||||
maintainer (gitster@pobox.com) if (and only if) the patch
|
||||
is ready for inclusion. If you use git-send-email(1),
|
||||
please test it first by sending email to yourself.
|
||||
|
||||
Long version:
|
||||
|
||||
@ -47,6 +66,14 @@ Describe the technical detail of the change(s).
|
||||
|
||||
If your description starts to get too long, that's a sign that you
|
||||
probably need to split up your commit to finer grained pieces.
|
||||
That being said, patches which plainly describe the things that
|
||||
help reviewers check the patch, and future maintainers understand
|
||||
the code, are the most beautiful patches. Descriptions that summarise
|
||||
the point in the subject well, and describe the motivation for the
|
||||
change, the approach taken by the change, and if relevant how this
|
||||
differs substantially from the prior version, can be found on Usenet
|
||||
archives back into the late 80's. Consider it like good Netiquette,
|
||||
but for code.
|
||||
|
||||
Oh, another thing. I am picky about whitespaces. Make sure your
|
||||
changes do not trigger errors with the sample pre-commit hook shipped
|
||||
@ -54,6 +81,19 @@ in templates/hooks--pre-commit. To help ensure this does not happen,
|
||||
run git diff --check on your changes before you commit.
|
||||
|
||||
|
||||
(1a) Try to be nice to older C compilers
|
||||
|
||||
We try to support a wide range of C compilers to compile
|
||||
git with. That means that you should not use C99 initializers, even
|
||||
if a lot of compilers grok it.
|
||||
|
||||
Also, variables have to be declared at the beginning of the block
|
||||
(you can check this with gcc, using the -Wdeclaration-after-statement
|
||||
option).
|
||||
|
||||
Another thing: NULL pointers shall be written as NULL, not as 0.
|
||||
|
||||
|
||||
(2) Generate your patch using git tools out of your commits.
|
||||
|
||||
git based diff tools (git, Cogito, and StGIT included) generate
|
||||
@ -84,7 +124,12 @@ lose tabs that way if you are not careful.
|
||||
|
||||
It is a common convention to prefix your subject line with
|
||||
[PATCH]. This lets people easily distinguish patches from other
|
||||
e-mail discussions.
|
||||
e-mail discussions. Use of additional markers after PATCH and
|
||||
the closing bracket to mark the nature of the patch is also
|
||||
encouraged. E.g. [PATCH/RFC] is often used when the patch is
|
||||
not ready to be applied but it is for discussion, [PATCH v2],
|
||||
[PATCH v3] etc. are often seen when you are sending an update to
|
||||
what you have previously sent.
|
||||
|
||||
"git format-patch" command follows the best current practice to
|
||||
format the body of an e-mail message. At the beginning of the
|
||||
@ -129,7 +174,8 @@ Note that your maintainer does not necessarily read everything
|
||||
on the git mailing list. If your patch is for discussion first,
|
||||
send it "To:" the mailing list, and optionally "cc:" him. If it
|
||||
is trivially correct or after the list reached a consensus, send
|
||||
it "To:" the maintainer and optionally "cc:" the list.
|
||||
it "To:" the maintainer and optionally "cc:" the list for
|
||||
inclusion.
|
||||
|
||||
Also note that your maintainer does not actively involve himself in
|
||||
maintaining what are in contrib/ hierarchy. When you send fixes and
|
||||
@ -182,10 +228,56 @@ then you just add a line saying
|
||||
This line can be automatically added by git if you run the git-commit
|
||||
command with the -s option.
|
||||
|
||||
Some people also put extra tags at the end. They'll just be ignored for
|
||||
now, but you can do this to mark internal company procedures or just
|
||||
point out some special detail about the sign-off.
|
||||
Notice that you can place your own Signed-off-by: line when
|
||||
forwarding somebody else's patch with the above rules for
|
||||
D-C-O. Indeed you are encouraged to do so. Do not forget to
|
||||
place an in-body "From: " line at the beginning to properly attribute
|
||||
the change to its true author (see (2) above).
|
||||
|
||||
Also notice that a real name is used in the Signed-off-by: line. Please
|
||||
don't hide your real name.
|
||||
|
||||
Some people also put extra tags at the end.
|
||||
|
||||
"Acked-by:" says that the patch was reviewed by the person who
|
||||
is more familiar with the issues and the area the patch attempts
|
||||
to modify. "Tested-by:" says the patch was tested by the person
|
||||
and found to have the desired effect.
|
||||
|
||||
------------------------------------------------
|
||||
An ideal patch flow
|
||||
|
||||
Here is an ideal patch flow for this project the current maintainer
|
||||
suggests to the contributors:
|
||||
|
||||
(0) You come up with an itch. You code it up.
|
||||
|
||||
(1) Send it to the list and cc people who may need to know about
|
||||
the change.
|
||||
|
||||
The people who may need to know are the ones whose code you
|
||||
are butchering. These people happen to be the ones who are
|
||||
most likely to be knowledgeable enough to help you, but
|
||||
they have no obligation to help you (i.e. you ask for help,
|
||||
don't demand). "git log -p -- $area_you_are_modifying" would
|
||||
help you find out who they are.
|
||||
|
||||
(2) You get comments and suggestions for improvements. You may
|
||||
even get them in a "on top of your change" patch form.
|
||||
|
||||
(3) Polish, refine, and re-send to the list and the people who
|
||||
spend their time to improve your patch. Go back to step (2).
|
||||
|
||||
(4) The list forms consensus that the last round of your patch is
|
||||
good. Send it to the list and cc the maintainer.
|
||||
|
||||
(5) A topic branch is created with the patch and is merged to 'next',
|
||||
and cooked further and eventually graduates to 'master'.
|
||||
|
||||
In any time between the (2)-(3) cycle, the maintainer may pick it up
|
||||
from the list and queue it to 'pu', in order to make it easier for
|
||||
people play with it without having to pick up and apply the patch to
|
||||
their trees themselves.
|
||||
|
||||
------------------------------------------------
|
||||
MUA specific hints
|
||||
@ -215,7 +307,7 @@ One test you could do yourself if your MUA is set up correctly is:
|
||||
$ git fetch http://kernel.org/pub/scm/git/git.git master:test-apply
|
||||
$ git checkout test-apply
|
||||
$ git reset --hard
|
||||
$ git applymbox a.patch
|
||||
$ git am a.patch
|
||||
|
||||
If it does not apply correctly, there can be various reasons.
|
||||
|
||||
@ -223,8 +315,8 @@ If it does not apply correctly, there can be various reasons.
|
||||
does not have much to do with your MUA. Please rebase the
|
||||
patch appropriately.
|
||||
|
||||
* Your MUA corrupted your patch; applymbox would complain that
|
||||
the patch does not apply. Look at .dotest/ subdirectory and
|
||||
* Your MUA corrupted your patch; "am" would complain that
|
||||
the patch does not apply. Look at .git/rebase-apply/ subdirectory and
|
||||
see what 'patch' file contains and check for the common
|
||||
corruption patterns mentioned above.
|
||||
|
||||
@ -268,15 +360,15 @@ diff --git a/pico/pico.c b/pico/pico.c
|
||||
--- a/pico/pico.c
|
||||
+++ b/pico/pico.c
|
||||
@@ -219,7 +219,9 @@ PICO *pm;
|
||||
switch(pico_all_done){ /* prepare for/handle final events */
|
||||
case COMP_EXIT : /* already confirmed */
|
||||
packheader();
|
||||
switch(pico_all_done){ /* prepare for/handle final events */
|
||||
case COMP_EXIT : /* already confirmed */
|
||||
packheader();
|
||||
+#if 0
|
||||
stripwhitespace();
|
||||
stripwhitespace();
|
||||
+#endif
|
||||
c |= COMP_EXIT;
|
||||
break;
|
||||
|
||||
c |= COMP_EXIT;
|
||||
break;
|
||||
|
||||
|
||||
(Daniel Barkalow)
|
||||
|
||||
@ -296,9 +388,36 @@ Thunderbird
|
||||
|
||||
(A Large Angry SCM)
|
||||
|
||||
By default, Thunderbird will both wrap emails as well as flag them as
|
||||
being 'format=flowed', both of which will make the resulting email unusable
|
||||
by git.
|
||||
|
||||
Here are some hints on how to successfully submit patches inline using
|
||||
Thunderbird.
|
||||
|
||||
There are two different approaches. One approach is to configure
|
||||
Thunderbird to not mangle patches. The second approach is to use
|
||||
an external editor to keep Thunderbird from mangling the patches.
|
||||
|
||||
Approach #1 (configuration):
|
||||
|
||||
This recipe is current as of Thunderbird 2.0.0.19. Three steps:
|
||||
1. Configure your mail server composition as plain text
|
||||
Edit...Account Settings...Composition & Addressing,
|
||||
uncheck 'Compose Messages in HTML'.
|
||||
2. Configure your general composition window to not wrap
|
||||
Edit..Preferences..Composition, wrap plain text messages at 0
|
||||
3. Disable the use of format=flowed
|
||||
Edit..Preferences..Advanced..Config Editor. Search for:
|
||||
mailnews.send_plaintext_flowed
|
||||
toggle it to make sure it is set to 'false'.
|
||||
|
||||
After that is done, you should be able to compose email as you
|
||||
otherwise would (cut + paste, git-format-patch | git-imap-send, etc),
|
||||
and the patches should not be mangled.
|
||||
|
||||
Approach #2 (external editor):
|
||||
|
||||
This recipe appears to work with the current [*1*] Thunderbird from Suse.
|
||||
|
||||
The following Thunderbird extensions are needed:
|
||||
@ -342,6 +461,11 @@ settings but I haven't tried, yet.
|
||||
mail.identity.default.compose_html => false
|
||||
mail.identity.id?.compose_html => false
|
||||
|
||||
(Lukas Sandström)
|
||||
|
||||
There is a script in contrib/thunderbird-patch-inline which can help
|
||||
you include patches with Thunderbird in an easy way. To use it, do the
|
||||
steps above and then use the script as the external editor.
|
||||
|
||||
Gnus
|
||||
----
|
||||
@ -374,3 +498,40 @@ This should help you to submit patches inline using KMail.
|
||||
|
||||
5) Back in the compose window: add whatever other text you wish to the
|
||||
message, complete the addressing and subject fields, and press send.
|
||||
|
||||
|
||||
Gmail
|
||||
-----
|
||||
|
||||
GMail does not appear to have any way to turn off line wrapping in the web
|
||||
interface, so this will mangle any emails that you send. You can however
|
||||
use any IMAP email client to connect to the google imap server, and forward
|
||||
the emails through that. Just make sure to disable line wrapping in that
|
||||
email client. Alternatively, use "git send-email" instead.
|
||||
|
||||
Submitting properly formatted patches via Gmail is simple now that
|
||||
IMAP support is available. First, edit your ~/.gitconfig to specify your
|
||||
account settings:
|
||||
|
||||
[imap]
|
||||
folder = "[Gmail]/Drafts"
|
||||
host = imaps://imap.gmail.com
|
||||
user = user@gmail.com
|
||||
pass = p4ssw0rd
|
||||
port = 993
|
||||
sslverify = false
|
||||
|
||||
You might need to instead use: folder = "[Google Mail]/Drafts" if you get an error
|
||||
that the "Folder doesn't exist".
|
||||
|
||||
Next, ensure that your Gmail settings are correct. In "Settings" the
|
||||
"Use Unicode (UTF-8) encoding for outgoing messages" should be checked.
|
||||
|
||||
Once your commits are ready to send to the mailing list, run the following
|
||||
command to send the patch emails to your Gmail Drafts folder.
|
||||
|
||||
$ git format-patch -M --stdout origin/master | git imap-send
|
||||
|
||||
Go to your Gmail account, open the Drafts folder, find the patch email, fill
|
||||
in the To: and CC: fields and send away!
|
||||
|
||||
|
@ -1,20 +1,26 @@
|
||||
## gitlink: macro
|
||||
## linkgit: macro
|
||||
#
|
||||
# Usage: gitlink:command[manpage-section]
|
||||
# Usage: linkgit:command[manpage-section]
|
||||
#
|
||||
# Note, {0} is the manpage section, while {target} is the command.
|
||||
#
|
||||
# Show GIT link as: <command>(<section>); if section is defined, else just show
|
||||
# the command.
|
||||
|
||||
[macros]
|
||||
(?su)[\\]?(?P<name>linkgit):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
|
||||
|
||||
[attributes]
|
||||
caret=^
|
||||
asterisk=*
|
||||
plus=+
|
||||
caret=^
|
||||
startsb=[
|
||||
endsb=]
|
||||
tilde=~
|
||||
backtick=`
|
||||
|
||||
ifdef::backend-docbook[]
|
||||
[gitlink-inlinemacro]
|
||||
[linkgit-inlinemacro]
|
||||
{0%{target}}
|
||||
{0#<citerefentry>}
|
||||
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
|
||||
@ -22,13 +28,43 @@ ifdef::backend-docbook[]
|
||||
endif::backend-docbook[]
|
||||
|
||||
ifdef::backend-docbook[]
|
||||
ifndef::git-asciidoc-no-roff[]
|
||||
# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this.
|
||||
# v1.72 breaks with this because it replaces dots not in roff requests.
|
||||
[listingblock]
|
||||
<example><title>{title}</title>
|
||||
<literallayout>
|
||||
ifdef::doctype-manpage[]
|
||||
.ft C
|
||||
endif::doctype-manpage[]
|
||||
|
|
||||
ifdef::doctype-manpage[]
|
||||
.ft
|
||||
endif::doctype-manpage[]
|
||||
</literallayout>
|
||||
{title#}</example>
|
||||
endif::git-asciidoc-no-roff[]
|
||||
|
||||
ifdef::git-asciidoc-no-roff[]
|
||||
ifdef::doctype-manpage[]
|
||||
# The following two small workarounds insert a simple paragraph after screen
|
||||
[listingblock]
|
||||
<example><title>{title}</title>
|
||||
<literallayout>
|
||||
|
|
||||
</literallayout>
|
||||
</literallayout><simpara></simpara>
|
||||
{title#}</example>
|
||||
|
||||
[verseblock]
|
||||
<formalpara{id? id="{id}"}><title>{title}</title><para>
|
||||
{title%}<literallayout{id? id="{id}"}>
|
||||
{title#}<literallayout>
|
||||
|
|
||||
</literallayout>
|
||||
{title#}</para></formalpara>
|
||||
{title%}<simpara></simpara>
|
||||
endif::doctype-manpage[]
|
||||
endif::git-asciidoc-no-roff[]
|
||||
endif::backend-docbook[]
|
||||
|
||||
ifdef::doctype-manpage[]
|
||||
@ -40,7 +76,7 @@ template::[header-declarations]
|
||||
<refentrytitle>{mantitle}</refentrytitle>
|
||||
<manvolnum>{manvolnum}</manvolnum>
|
||||
<refmiscinfo class="source">Git</refmiscinfo>
|
||||
<refmiscinfo class="version">@@GIT_VERSION@@</refmiscinfo>
|
||||
<refmiscinfo class="version">{git_version}</refmiscinfo>
|
||||
<refmiscinfo class="manual">Git Manual</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
@ -51,8 +87,6 @@ endif::backend-docbook[]
|
||||
endif::doctype-manpage[]
|
||||
|
||||
ifdef::backend-xhtml11[]
|
||||
[gitlink-inlinemacro]
|
||||
[linkgit-inlinemacro]
|
||||
<a href="{target}.html">{target}{0?({0})}</a>
|
||||
endif::backend-xhtml11[]
|
||||
|
||||
|
||||
|
111
Documentation/blame-options.txt
Normal file
111
Documentation/blame-options.txt
Normal file
@ -0,0 +1,111 @@
|
||||
-b::
|
||||
Show blank SHA-1 for boundary commits. This can also
|
||||
be controlled via the `blame.blankboundary` config option.
|
||||
|
||||
--root::
|
||||
Do not treat root commits as boundaries. This can also be
|
||||
controlled via the `blame.showroot` config option.
|
||||
|
||||
--show-stats::
|
||||
Include additional statistics at the end of blame output.
|
||||
|
||||
-L <start>,<end>::
|
||||
Annotate only the given line range. <start> and <end> can take
|
||||
one of these forms:
|
||||
|
||||
- number
|
||||
+
|
||||
If <start> or <end> is a number, it specifies an
|
||||
absolute line number (lines count from 1).
|
||||
+
|
||||
|
||||
- /regex/
|
||||
+
|
||||
This form will use the first line matching the given
|
||||
POSIX regex. If <end> is a regex, it will search
|
||||
starting at the line given by <start>.
|
||||
+
|
||||
|
||||
- +offset or -offset
|
||||
+
|
||||
This is only valid for <end> and will specify a number
|
||||
of lines before or after the line given by <start>.
|
||||
+
|
||||
|
||||
-l::
|
||||
Show long rev (Default: off).
|
||||
|
||||
-t::
|
||||
Show raw timestamp (Default: off).
|
||||
|
||||
-S <revs-file>::
|
||||
Use revisions from revs-file instead of calling linkgit:git-rev-list[1].
|
||||
|
||||
--reverse::
|
||||
Walk history forward instead of backward. Instead of showing
|
||||
the revision in which a line appeared, this shows the last
|
||||
revision in which a line has existed. This requires a range of
|
||||
revision like START..END where the path to blame exists in
|
||||
START.
|
||||
|
||||
-p::
|
||||
--porcelain::
|
||||
Show in a format designed for machine consumption.
|
||||
|
||||
--incremental::
|
||||
Show the result incrementally in a format designed for
|
||||
machine consumption.
|
||||
|
||||
--encoding=<encoding>::
|
||||
Specifies the encoding used to output author names
|
||||
and commit summaries. Setting it to `none` makes blame
|
||||
output unconverted data. For more information see the
|
||||
discussion about encoding in the linkgit:git-log[1]
|
||||
manual page.
|
||||
|
||||
--contents <file>::
|
||||
When <rev> is not specified, the command annotates the
|
||||
changes starting backwards from the working tree copy.
|
||||
This flag makes the command pretend as if the working
|
||||
tree copy has the contents of the named file (specify
|
||||
`-` to make the command read from the standard input).
|
||||
|
||||
--date <format>::
|
||||
The value is one of the following alternatives:
|
||||
{relative,local,default,iso,rfc,short}. If --date is not
|
||||
provided, the value of the blame.date config variable is
|
||||
used. If the blame.date config variable is also not set, the
|
||||
iso format is used. For more information, See the discussion
|
||||
of the --date option at linkgit:git-log[1].
|
||||
|
||||
-M|<num>|::
|
||||
Detect moving lines in the file as well. When a commit
|
||||
moves a block of lines in a file (e.g. the original file
|
||||
has A and then B, and the commit changes it to B and
|
||||
then A), the traditional 'blame' algorithm typically blames
|
||||
the lines that were moved up (i.e. B) to the parent and
|
||||
assigns blame to the lines that were moved down (i.e. A)
|
||||
to the child commit. With this option, both groups of lines
|
||||
are blamed on the parent.
|
||||
+
|
||||
<num> is optional but it is the lower bound on the number of
|
||||
alphanumeric characters that git must detect as moving
|
||||
within a file for it to associate those lines with the parent
|
||||
commit.
|
||||
|
||||
-C|<num>|::
|
||||
In addition to `-M`, detect lines copied from other
|
||||
files that were modified in the same commit. This is
|
||||
useful when you reorganize your program and move code
|
||||
around across files. When this option is given twice,
|
||||
the command additionally looks for copies from all other
|
||||
files in the parent for the commit that creates the file.
|
||||
+
|
||||
<num> is optional but it is the lower bound on the number of
|
||||
alphanumeric characters that git must detect as moving
|
||||
between files for it to associate those lines with the parent
|
||||
commit.
|
||||
|
||||
-h::
|
||||
--help::
|
||||
Show help message.
|
@ -1,30 +0,0 @@
|
||||
<!-- callout.xsl: converts asciidoc callouts to man page format -->
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:template match="co">
|
||||
<xsl:value-of select="concat('\fB(',substring-after(@id,'-'),')\fR')"/>
|
||||
</xsl:template>
|
||||
<xsl:template match="calloutlist">
|
||||
<xsl:text>.sp </xsl:text>
|
||||
<xsl:apply-templates/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:template>
|
||||
<xsl:template match="callout">
|
||||
<xsl:value-of select="concat('\fB',substring-after(@arearefs,'-'),'. \fR')"/>
|
||||
<xsl:apply-templates/>
|
||||
<xsl:text>.br </xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<!-- sorry, this is not about callouts, but attempts to work around
|
||||
spurious .sp at the tail of the line docbook stylesheets seem to add -->
|
||||
<xsl:template match="simpara">
|
||||
<xsl:variable name="content">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:variable>
|
||||
<xsl:value-of select="normalize-space($content)"/>
|
||||
<xsl:if test="not(ancestor::authorblurb) and
|
||||
not(ancestor::personblurb)">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
42
Documentation/cat-texi.perl
Executable file
42
Documentation/cat-texi.perl
Executable file
@ -0,0 +1,42 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
my @menu = ();
|
||||
my $output = $ARGV[0];
|
||||
|
||||
open TMP, '>', "$output.tmp";
|
||||
|
||||
while (<STDIN>) {
|
||||
next if (/^\\input texinfo/../\@node Top/);
|
||||
next if (/^\@bye/ || /^\.ft/);
|
||||
if (s/^\@top (.*)/\@node $1,,,Top/) {
|
||||
push @menu, $1;
|
||||
}
|
||||
s/\(\@pxref{\[(URLS|REMOTES)\]}\)//;
|
||||
print TMP;
|
||||
}
|
||||
close TMP;
|
||||
|
||||
printf '\input texinfo
|
||||
@setfilename gitman.info
|
||||
@documentencoding UTF-8
|
||||
@dircategory Development
|
||||
@direntry
|
||||
* Git Man Pages: (gitman). Manual pages for Git revision control system
|
||||
@end direntry
|
||||
@node Top,,, (dir)
|
||||
@top Git Manual Pages
|
||||
@documentlanguage en
|
||||
@menu
|
||||
', $menu[0];
|
||||
|
||||
for (@menu) {
|
||||
print "* ${_}::\n";
|
||||
}
|
||||
print "\@end menu\n";
|
||||
open TMP, '<', "$output.tmp";
|
||||
while (<TMP>) {
|
||||
print;
|
||||
}
|
||||
close TMP;
|
||||
print "\@bye\n";
|
||||
unlink "$output.tmp";
|
@ -3,7 +3,8 @@
|
||||
use File::Compare qw(compare);
|
||||
|
||||
sub format_one {
|
||||
my ($out, $name) = @_;
|
||||
my ($out, $nameattr) = @_;
|
||||
my ($name, $attr) = @$nameattr;
|
||||
my ($state, $description);
|
||||
$state = 0;
|
||||
open I, '<', "$name.txt" or die "No such file $name.txt";
|
||||
@ -26,8 +27,11 @@ sub format_one {
|
||||
die "No description found in $name.txt";
|
||||
}
|
||||
if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
|
||||
print $out "gitlink:$name\[1\]::\n";
|
||||
print $out "\t$text.\n\n";
|
||||
print $out "linkgit:$name\[1\]::\n\t";
|
||||
if ($attr =~ / deprecated /) {
|
||||
print $out "(deprecated) ";
|
||||
}
|
||||
print $out "$text.\n\n";
|
||||
}
|
||||
else {
|
||||
die "Description does not match $name: $description";
|
||||
@ -35,12 +39,13 @@ sub format_one {
|
||||
}
|
||||
|
||||
my %cmds = ();
|
||||
while (<DATA>) {
|
||||
for (sort <>) {
|
||||
next if /^#/;
|
||||
|
||||
chomp;
|
||||
my ($name, $cat) = /^(\S+)\s+(.*)$/;
|
||||
push @{$cmds{$cat}}, $name;
|
||||
my ($name, $cat, $attr) = /^(\S+)\s+(.*?)(?:\s+(.*))?$/;
|
||||
$attr = '' unless defined $attr;
|
||||
push @{$cmds{$cat}}, [$name, " $attr "];
|
||||
}
|
||||
|
||||
for my $cat (qw(ancillaryinterrogators
|
||||
@ -67,132 +72,3 @@ for my $cat (qw(ancillaryinterrogators
|
||||
rename "$out+", "$out";
|
||||
}
|
||||
}
|
||||
|
||||
__DATA__
|
||||
git-add mainporcelain
|
||||
git-am mainporcelain
|
||||
git-annotate ancillaryinterrogators
|
||||
git-applymbox ancillaryinterrogators
|
||||
git-applypatch purehelpers
|
||||
git-apply plumbingmanipulators
|
||||
git-archimport foreignscminterface
|
||||
git-archive mainporcelain
|
||||
git-bisect mainporcelain
|
||||
git-blame ancillaryinterrogators
|
||||
git-branch mainporcelain
|
||||
git-bundle mainporcelain
|
||||
git-cat-file plumbinginterrogators
|
||||
git-checkout-index plumbingmanipulators
|
||||
git-checkout mainporcelain
|
||||
git-check-ref-format purehelpers
|
||||
git-cherry ancillaryinterrogators
|
||||
git-cherry-pick mainporcelain
|
||||
git-clean mainporcelain
|
||||
git-clone mainporcelain
|
||||
git-commit mainporcelain
|
||||
git-commit-tree plumbingmanipulators
|
||||
git-convert-objects ancillarymanipulators
|
||||
git-count-objects ancillaryinterrogators
|
||||
git-cvsexportcommit foreignscminterface
|
||||
git-cvsimport foreignscminterface
|
||||
git-cvsserver foreignscminterface
|
||||
git-daemon synchingrepositories
|
||||
git-describe mainporcelain
|
||||
git-diff-files plumbinginterrogators
|
||||
git-diff-index plumbinginterrogators
|
||||
git-diff mainporcelain
|
||||
git-diff-tree plumbinginterrogators
|
||||
git-fast-import ancillarymanipulators
|
||||
git-fetch mainporcelain
|
||||
git-fetch-pack synchingrepositories
|
||||
git-fmt-merge-msg purehelpers
|
||||
git-for-each-ref plumbinginterrogators
|
||||
git-format-patch mainporcelain
|
||||
git-fsck ancillaryinterrogators
|
||||
git-gc mainporcelain
|
||||
git-get-tar-commit-id ancillaryinterrogators
|
||||
git-grep mainporcelain
|
||||
git-hash-object plumbingmanipulators
|
||||
git-http-fetch synchelpers
|
||||
git-http-push synchelpers
|
||||
git-imap-send foreignscminterface
|
||||
git-index-pack plumbingmanipulators
|
||||
git-init mainporcelain
|
||||
git-instaweb ancillaryinterrogators
|
||||
gitk mainporcelain
|
||||
git-local-fetch synchingrepositories
|
||||
git-log mainporcelain
|
||||
git-lost-found ancillarymanipulators
|
||||
git-ls-files plumbinginterrogators
|
||||
git-ls-remote plumbinginterrogators
|
||||
git-ls-tree plumbinginterrogators
|
||||
git-mailinfo purehelpers
|
||||
git-mailsplit purehelpers
|
||||
git-merge-base plumbinginterrogators
|
||||
git-merge-file plumbingmanipulators
|
||||
git-merge-index plumbingmanipulators
|
||||
git-merge mainporcelain
|
||||
git-merge-one-file purehelpers
|
||||
git-merge-tree ancillaryinterrogators
|
||||
git-mergetool ancillarymanipulators
|
||||
git-mktag plumbingmanipulators
|
||||
git-mktree plumbingmanipulators
|
||||
git-mv mainporcelain
|
||||
git-name-rev plumbinginterrogators
|
||||
git-pack-objects plumbingmanipulators
|
||||
git-pack-redundant plumbinginterrogators
|
||||
git-pack-refs ancillarymanipulators
|
||||
git-parse-remote synchelpers
|
||||
git-patch-id purehelpers
|
||||
git-peek-remote purehelpers
|
||||
git-prune ancillarymanipulators
|
||||
git-prune-packed plumbingmanipulators
|
||||
git-pull mainporcelain
|
||||
git-push mainporcelain
|
||||
git-quiltimport foreignscminterface
|
||||
git-read-tree plumbingmanipulators
|
||||
git-rebase mainporcelain
|
||||
git-receive-pack synchelpers
|
||||
git-reflog ancillarymanipulators
|
||||
git-relink ancillarymanipulators
|
||||
git-repack ancillarymanipulators
|
||||
git-config ancillarymanipulators
|
||||
git-remote ancillarymanipulators
|
||||
git-request-pull foreignscminterface
|
||||
git-rerere ancillaryinterrogators
|
||||
git-reset mainporcelain
|
||||
git-revert mainporcelain
|
||||
git-rev-list plumbinginterrogators
|
||||
git-rev-parse ancillaryinterrogators
|
||||
git-rm mainporcelain
|
||||
git-runstatus ancillaryinterrogators
|
||||
git-send-email foreignscminterface
|
||||
git-send-pack synchingrepositories
|
||||
git-shell synchelpers
|
||||
git-shortlog mainporcelain
|
||||
git-show mainporcelain
|
||||
git-show-branch ancillaryinterrogators
|
||||
git-show-index plumbinginterrogators
|
||||
git-show-ref plumbinginterrogators
|
||||
git-sh-setup purehelpers
|
||||
git-ssh-fetch synchingrepositories
|
||||
git-ssh-upload synchingrepositories
|
||||
git-status mainporcelain
|
||||
git-stripspace purehelpers
|
||||
git-svn foreignscminterface
|
||||
git-svnimport foreignscminterface
|
||||
git-symbolic-ref plumbingmanipulators
|
||||
git-tag mainporcelain
|
||||
git-tar-tree plumbinginterrogators
|
||||
git-unpack-file plumbinginterrogators
|
||||
git-unpack-objects plumbingmanipulators
|
||||
git-update-index plumbingmanipulators
|
||||
git-update-ref plumbingmanipulators
|
||||
git-update-server-info synchingrepositories
|
||||
git-upload-archive synchelpers
|
||||
git-upload-pack synchelpers
|
||||
git-var plumbinginterrogators
|
||||
git-verify-pack plumbinginterrogators
|
||||
git-verify-tag ancillaryinterrogators
|
||||
git-whatchanged ancillaryinterrogators
|
||||
git-write-tree plumbingmanipulators
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,592 +0,0 @@
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
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
|
||||
|
||||
This is a (not so) stupid but extremely fast directory content manager.
|
||||
It doesn't do a whole lot at its core, but what it 'does' do is track
|
||||
directory contents efficiently.
|
||||
|
||||
There are two object abstractions: the "object database", and the
|
||||
"current directory cache" aka "index".
|
||||
|
||||
The Object Database
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
The object database is literally just a content-addressable collection
|
||||
of objects. All objects are named by their content, which is
|
||||
approximated by the SHA1 hash of the object itself. Objects may refer
|
||||
to other objects (by referencing their SHA1 hash), and so you can
|
||||
build up a hierarchy of objects.
|
||||
|
||||
All objects have a statically determined "type" aka "tag", which is
|
||||
determined at object creation time, and which identifies the format of
|
||||
the object (i.e. how it is used, and how it can refer to other
|
||||
objects). There are currently four different object types: "blob",
|
||||
"tree", "commit" and "tag".
|
||||
|
||||
A "blob" object cannot refer to any other object, and is, like the type
|
||||
implies, a pure storage object containing some user data. It is used to
|
||||
actually store the file data, i.e. a blob object is associated with some
|
||||
particular version of some file.
|
||||
|
||||
A "tree" object is an object that ties one or more "blob" objects into a
|
||||
directory structure. In addition, a tree object can refer to other tree
|
||||
objects, thus creating a directory hierarchy.
|
||||
|
||||
A "commit" object ties such directory hierarchies together into
|
||||
a DAG of revisions - each "commit" is associated with exactly one tree
|
||||
(the directory hierarchy at the time of the commit). In addition, a
|
||||
"commit" refers to one or more "parent" commit objects that describe the
|
||||
history of how we arrived at that directory hierarchy.
|
||||
|
||||
As a special case, a commit object with no parents is called the "root"
|
||||
object, and is the point of an initial project commit. Each project
|
||||
must have at least one root, and while you can tie several different
|
||||
root objects together into one project by creating a commit object which
|
||||
has two or more separate roots as its ultimate parents, that's probably
|
||||
just going to confuse people. So aim for the notion of "one root object
|
||||
per project", even if git itself does not enforce that.
|
||||
|
||||
A "tag" object symbolically identifies and can be used to sign other
|
||||
objects. It contains the identifier and type of another object, a
|
||||
symbolic name (of course!) and, optionally, a signature.
|
||||
|
||||
Regardless of object type, all objects share the following
|
||||
characteristics: they are all deflated with zlib, and have a header
|
||||
that not only specifies their type, but also provides size information
|
||||
about the data in the object. It's worth noting that the SHA1 hash
|
||||
that is used to name the object is the hash of the original data
|
||||
plus this header, so `sha1sum` 'file' does not match the object name
|
||||
for 'file'.
|
||||
(Historical note: in the dawn of the age of git the hash
|
||||
was the sha1 of the 'compressed' object.)
|
||||
|
||||
As a result, the general consistency of an object can always be tested
|
||||
independently of the contents or the type of the object: all objects can
|
||||
be validated by verifying that (a) their hashes match the content of the
|
||||
file and (b) the object successfully inflates to a stream of bytes that
|
||||
forms a sequence of <ascii type without space> + <space> + <ascii decimal
|
||||
size> + <byte\0> + <binary object data>.
|
||||
|
||||
The structured objects can further have their structure and
|
||||
connectivity to other objects verified. This is generally done with
|
||||
the `git-fsck` program, which generates a full dependency graph
|
||||
of all objects, and verifies their internal consistency (in addition
|
||||
to just verifying their superficial consistency through the hash).
|
||||
|
||||
The object types in some more detail:
|
||||
|
||||
Blob Object
|
||||
~~~~~~~~~~~
|
||||
A "blob" object is nothing but a binary blob of data, and doesn't
|
||||
refer to anything else. There is no signature or any other
|
||||
verification of the data, so while the object is consistent (it 'is'
|
||||
indexed by its sha1 hash, so the data itself is certainly correct), it
|
||||
has absolutely no other attributes. No name associations, no
|
||||
permissions. It is purely a blob of data (i.e. normally "file
|
||||
contents").
|
||||
|
||||
In particular, since the blob is entirely defined by its data, if two
|
||||
files in a directory tree (or in multiple different versions of the
|
||||
repository) have the same contents, they will share the same blob
|
||||
object. The object is totally independent of its location in the
|
||||
directory tree, and renaming a file does not change the object that
|
||||
file is associated with in any way.
|
||||
|
||||
A blob is typically created when gitlink:git-update-index[1]
|
||||
(or gitlink:git-add[1]) is run, and its data can be accessed by
|
||||
gitlink:git-cat-file[1].
|
||||
|
||||
Tree Object
|
||||
~~~~~~~~~~~
|
||||
The next hierarchical object type is the "tree" object. A tree object
|
||||
is a list of mode/name/blob data, sorted by name. Alternatively, the
|
||||
mode data may specify a directory mode, in which case instead of
|
||||
naming a blob, that name is associated with another TREE object.
|
||||
|
||||
Like the "blob" object, a tree object is uniquely determined by the
|
||||
set contents, and so two separate but identical trees will always
|
||||
share the exact same object. This is true at all levels, i.e. it's
|
||||
true for a "leaf" tree (which does not refer to any other trees, only
|
||||
blobs) as well as for a whole subdirectory.
|
||||
|
||||
For that reason a "tree" object is just a pure data abstraction: it
|
||||
has no history, no signatures, no verification of validity, except
|
||||
that since the contents are again protected by the hash itself, we can
|
||||
trust that the tree is immutable and its contents never change.
|
||||
|
||||
So you can trust the contents of a tree to be valid, the same way you
|
||||
can trust the contents of a blob, but you don't know where those
|
||||
contents 'came' from.
|
||||
|
||||
Side note on trees: since a "tree" object is a sorted list of
|
||||
"filename+content", you can create a diff between two trees without
|
||||
actually having to unpack two trees. Just ignore all common parts,
|
||||
and your diff will look right. In other words, you can effectively
|
||||
(and efficiently) tell the difference between any two random trees by
|
||||
O(n) where "n" is the size of the difference, rather than the size of
|
||||
the tree.
|
||||
|
||||
Side note 2 on trees: since the name of a "blob" depends entirely and
|
||||
exclusively on its contents (i.e. there are no names or permissions
|
||||
involved), you can see trivial renames or permission changes by
|
||||
noticing that the blob stayed the same. However, renames with data
|
||||
changes need a smarter "diff" implementation.
|
||||
|
||||
A tree is created with gitlink:git-write-tree[1] and
|
||||
its data can be accessed by gitlink:git-ls-tree[1].
|
||||
Two trees can be compared with gitlink:git-diff-tree[1].
|
||||
|
||||
Commit Object
|
||||
~~~~~~~~~~~~~
|
||||
The "commit" object is an object that introduces the notion of
|
||||
history into the picture. In contrast to the other objects, it
|
||||
doesn't just describe the physical state of a tree, it describes how
|
||||
we got there, and why.
|
||||
|
||||
A "commit" is defined by the tree-object that it results in, the
|
||||
parent commits (zero, one or more) that led up to that point, and a
|
||||
comment on what happened. Again, a commit is not trusted per se:
|
||||
the contents are well-defined and "safe" due to the cryptographically
|
||||
strong signatures at all levels, but there is no reason to believe
|
||||
that the tree is "good" or that the merge information makes sense.
|
||||
The parents do not have to actually have any relationship with the
|
||||
result, for example.
|
||||
|
||||
Note on commits: unlike real SCM's, commits do not contain
|
||||
rename information or file mode change information. All of that is
|
||||
implicit in the trees involved (the result tree, and the result trees
|
||||
of the parents), and describing that makes no sense in this idiotic
|
||||
file manager.
|
||||
|
||||
A commit is created with gitlink:git-commit-tree[1] and
|
||||
its data can be accessed by gitlink:git-cat-file[1].
|
||||
|
||||
Trust
|
||||
~~~~~
|
||||
An aside on the notion of "trust". Trust is really outside the scope
|
||||
of "git", but it's worth noting a few things. First off, since
|
||||
everything is hashed with SHA1, you 'can' trust that an object is
|
||||
intact and has not been messed with by external sources. So the name
|
||||
of an object uniquely identifies a known state - just not a state that
|
||||
you may want to trust.
|
||||
|
||||
Furthermore, since the SHA1 signature of a commit refers to the
|
||||
SHA1 signatures of the tree it is associated with and the signatures
|
||||
of the parent, a single named commit specifies uniquely a whole set
|
||||
of history, with full contents. You can't later fake any step of the
|
||||
way once you have the name of a commit.
|
||||
|
||||
So to introduce some real trust in the system, the only thing you need
|
||||
to do is to digitally sign just 'one' special note, which includes the
|
||||
name of a top-level commit. Your digital signature shows others
|
||||
that you trust that commit, and the immutability of the history of
|
||||
commits tells others that they can trust the whole history.
|
||||
|
||||
In other words, you can easily validate a whole archive by just
|
||||
sending out a single email that tells the people the name (SHA1 hash)
|
||||
of the top commit, and digitally sign that email using something
|
||||
like GPG/PGP.
|
||||
|
||||
To assist in this, git also provides the tag object...
|
||||
|
||||
Tag Object
|
||||
~~~~~~~~~~
|
||||
Git provides the "tag" object to simplify creating, managing and
|
||||
exchanging symbolic and signed tokens. The "tag" object at its
|
||||
simplest simply symbolically identifies another object by containing
|
||||
the sha1, type and symbolic name.
|
||||
|
||||
However it can optionally contain additional signature information
|
||||
(which git doesn't care about as long as there's less than 8k of
|
||||
it). This can then be verified externally to git.
|
||||
|
||||
Note that despite the tag features, "git" itself only handles content
|
||||
integrity; the trust framework (and signature provision and
|
||||
verification) has to come from outside.
|
||||
|
||||
A tag is created with gitlink:git-mktag[1],
|
||||
its data can be accessed by gitlink:git-cat-file[1],
|
||||
and the signature can be verified by
|
||||
gitlink:git-verify-tag[1].
|
||||
|
||||
|
||||
The "index" aka "Current Directory Cache"
|
||||
-----------------------------------------
|
||||
The index is a simple binary file, which contains an efficient
|
||||
representation of a virtual directory content at some random time. It
|
||||
does so by a simple array that associates a set of names, dates,
|
||||
permissions and content (aka "blob") objects together. The cache is
|
||||
always kept ordered by name, and names are unique (with a few very
|
||||
specific rules) at any point in time, but the cache has no long-term
|
||||
meaning, and can be partially updated at any time.
|
||||
|
||||
In particular, the index certainly does not need to be consistent with
|
||||
the current directory contents (in fact, most operations will depend on
|
||||
different ways to make the index 'not' be consistent with the directory
|
||||
hierarchy), but it has three very important attributes:
|
||||
|
||||
'(a) it can re-generate the full state it caches (not just the
|
||||
directory structure: it contains pointers to the "blob" objects so
|
||||
that it can regenerate the data too)'
|
||||
|
||||
As a special case, there is a clear and unambiguous one-way mapping
|
||||
from a current directory cache to a "tree object", which can be
|
||||
efficiently created from just the current directory cache without
|
||||
actually looking at any other data. So a directory cache at any one
|
||||
time uniquely specifies one and only one "tree" object (but has
|
||||
additional data to make it easy to match up that tree object with what
|
||||
has happened in the directory)
|
||||
|
||||
'(b) it has efficient methods for finding inconsistencies between that
|
||||
cached state ("tree object waiting to be instantiated") and the
|
||||
current state.'
|
||||
|
||||
'(c) it can additionally efficiently represent information about merge
|
||||
conflicts between different tree objects, allowing each pathname to be
|
||||
associated with sufficient information about the trees involved that
|
||||
you can create a three-way merge between them.'
|
||||
|
||||
Those are the three ONLY things that the directory cache does. It's a
|
||||
cache, and the normal operation is to re-generate it completely from a
|
||||
known tree object, or update/compare it with a live tree that is being
|
||||
developed. If you blow the directory cache away entirely, you generally
|
||||
haven't lost any information as long as you have the name of the tree
|
||||
that it described.
|
||||
|
||||
At the same time, the index is at the same time also the
|
||||
staging area for creating new trees, and creating a new tree always
|
||||
involves a controlled modification of the index file. In particular,
|
||||
the index file can have the representation of an intermediate tree that
|
||||
has not yet been instantiated. So the index can be thought of as a
|
||||
write-back cache, which can contain dirty information that has not yet
|
||||
been written back to the backing store.
|
||||
|
||||
|
||||
|
||||
The Workflow
|
||||
------------
|
||||
Generally, all "git" operations work on the index file. Some operations
|
||||
work *purely* on the index file (showing the current state of the
|
||||
index), but most operations move data to and from the index file. Either
|
||||
from the database or from the working directory. Thus there are four
|
||||
main combinations:
|
||||
|
||||
1) working directory -> index
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You update the index with information from the working directory with
|
||||
the gitlink:git-update-index[1] command. You
|
||||
generally update the index information by just specifying the filename
|
||||
you want to update, like so:
|
||||
|
||||
git-update-index filename
|
||||
|
||||
but to avoid common mistakes with filename globbing etc, the command
|
||||
will not normally add totally new entries or remove old entries,
|
||||
i.e. it will normally just update existing cache entries.
|
||||
|
||||
To tell git that yes, you really do realize that certain files no
|
||||
longer exist, or that new files should be added, you
|
||||
should use the `--remove` and `--add` flags respectively.
|
||||
|
||||
NOTE! A `--remove` flag does 'not' mean that subsequent filenames will
|
||||
necessarily be removed: if the files still exist in your directory
|
||||
structure, the index will be updated with their new status, not
|
||||
removed. The only thing `--remove` means is that update-cache will be
|
||||
considering a removed file to be a valid thing, and if the file really
|
||||
does not exist any more, it will update the index accordingly.
|
||||
|
||||
As a special case, you can also do `git-update-index --refresh`, which
|
||||
will refresh the "stat" information of each index to match the current
|
||||
stat information. It will 'not' update the object status itself, and
|
||||
it will only update the fields that are used to quickly test whether
|
||||
an object still matches its old backing store object.
|
||||
|
||||
2) index -> object database
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You write your current index file to a "tree" object with the program
|
||||
|
||||
git-write-tree
|
||||
|
||||
that doesn't come with any options - it will just write out the
|
||||
current index into the set of tree objects that describe that state,
|
||||
and it will return the name of the resulting top-level tree. You can
|
||||
use that tree to re-generate the index at any time by going in the
|
||||
other direction:
|
||||
|
||||
3) object database -> index
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You read a "tree" file from the object database, and use that to
|
||||
populate (and overwrite - don't do this if your index contains any
|
||||
unsaved state that you might want to restore later!) your current
|
||||
index. Normal operation is just
|
||||
|
||||
git-read-tree <sha1 of tree>
|
||||
|
||||
and your index file will now be equivalent to the tree that you saved
|
||||
earlier. However, that is only your 'index' file: your working
|
||||
directory contents have not been modified.
|
||||
|
||||
4) index -> working directory
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You update your working directory from the index by "checking out"
|
||||
files. This is not a very common operation, since normally you'd just
|
||||
keep your files updated, and rather than write to your working
|
||||
directory, you'd tell the index files about the changes in your
|
||||
working directory (i.e. `git-update-index`).
|
||||
|
||||
However, if you decide to jump to a new version, or check out somebody
|
||||
else's version, or just restore a previous tree, you'd populate your
|
||||
index file with read-tree, and then you need to check out the result
|
||||
with
|
||||
|
||||
git-checkout-index filename
|
||||
|
||||
or, if you want to check out all of the index, use `-a`.
|
||||
|
||||
NOTE! git-checkout-index normally refuses to overwrite old files, so
|
||||
if you have an old version of the tree already checked out, you will
|
||||
need to use the "-f" flag ('before' the "-a" flag or the filename) to
|
||||
'force' the checkout.
|
||||
|
||||
|
||||
Finally, there are a few odds and ends which are not purely moving
|
||||
from one representation to the other:
|
||||
|
||||
5) Tying it all together
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
To commit a tree you have instantiated with "git-write-tree", you'd
|
||||
create a "commit" object that refers to that tree and the history
|
||||
behind it - most notably the "parent" commits that preceded it in
|
||||
history.
|
||||
|
||||
Normally a "commit" has one parent: the previous state of the tree
|
||||
before a certain change was made. However, sometimes it can have two
|
||||
or more parent commits, in which case we call it a "merge", due to the
|
||||
fact that such a commit brings together ("merges") two or more
|
||||
previous states represented by other commits.
|
||||
|
||||
In other words, while a "tree" represents a particular directory state
|
||||
of a working directory, a "commit" represents that state in "time",
|
||||
and explains how we got there.
|
||||
|
||||
You create a commit object by giving it the tree that describes the
|
||||
state at the time of the commit, and a list of parents:
|
||||
|
||||
git-commit-tree <tree> -p <parent> [-p <parent2> ..]
|
||||
|
||||
and then giving the reason for the commit on stdin (either through
|
||||
redirection from a pipe or file, or by just typing it at the tty).
|
||||
|
||||
git-commit-tree will return the name of the object that represents
|
||||
that commit, and you should save it away for later use. Normally,
|
||||
you'd commit a new `HEAD` state, and while git doesn't care where you
|
||||
save the note about that state, in practice we tend to just write the
|
||||
result to the file pointed at by `.git/HEAD`, so that we can always see
|
||||
what the last committed state was.
|
||||
|
||||
Here is an ASCII art by Jon Loeliger that illustrates how
|
||||
various pieces fit together.
|
||||
|
||||
------------
|
||||
|
||||
commit-tree
|
||||
commit obj
|
||||
+----+
|
||||
| |
|
||||
| |
|
||||
V V
|
||||
+-----------+
|
||||
| Object DB |
|
||||
| Backing |
|
||||
| Store |
|
||||
+-----------+
|
||||
^
|
||||
write-tree | |
|
||||
tree obj | |
|
||||
| | read-tree
|
||||
| | tree obj
|
||||
V
|
||||
+-----------+
|
||||
| Index |
|
||||
| "cache" |
|
||||
+-----------+
|
||||
update-index ^
|
||||
blob obj | |
|
||||
| |
|
||||
checkout-index -u | | checkout-index
|
||||
stat | | blob obj
|
||||
V
|
||||
+-----------+
|
||||
| Working |
|
||||
| Directory |
|
||||
+-----------+
|
||||
|
||||
------------
|
||||
|
||||
|
||||
6) Examining the data
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can examine the data represented in the object database and the
|
||||
index with various helper tools. For every object, you can use
|
||||
gitlink:git-cat-file[1] to examine details about the
|
||||
object:
|
||||
|
||||
git-cat-file -t <objectname>
|
||||
|
||||
shows the type of the object, and once you have the type (which is
|
||||
usually implicit in where you find the object), you can use
|
||||
|
||||
git-cat-file blob|tree|commit|tag <objectname>
|
||||
|
||||
to show its contents. NOTE! Trees have binary content, and as a result
|
||||
there is a special helper for showing that content, called
|
||||
`git-ls-tree`, which turns the binary content into a more easily
|
||||
readable form.
|
||||
|
||||
It's especially instructive to look at "commit" objects, since those
|
||||
tend to be small and fairly self-explanatory. In particular, if you
|
||||
follow the convention of having the top commit name in `.git/HEAD`,
|
||||
you can do
|
||||
|
||||
git-cat-file commit HEAD
|
||||
|
||||
to see what the top commit was.
|
||||
|
||||
7) Merging multiple trees
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Git helps you do a three-way merge, which you can expand to n-way by
|
||||
repeating the merge procedure arbitrary times until you finally
|
||||
"commit" the state. The normal situation is that you'd only do one
|
||||
three-way merge (two parents), and commit it, but if you like to, you
|
||||
can do multiple parents in one go.
|
||||
|
||||
To do a three-way merge, you need the two sets of "commit" objects
|
||||
that you want to merge, use those to find the closest common parent (a
|
||||
third "commit" object), and then use those commit objects to find the
|
||||
state of the directory ("tree" object) at these points.
|
||||
|
||||
To get the "base" for the merge, you first look up the common parent
|
||||
of two commits with
|
||||
|
||||
git-merge-base <commit1> <commit2>
|
||||
|
||||
which will return you the commit they are both based on. You should
|
||||
now look up the "tree" objects of those commits, which you can easily
|
||||
do with (for example)
|
||||
|
||||
git-cat-file commit <commitname> | head -1
|
||||
|
||||
since the tree object information is always the first line in a commit
|
||||
object.
|
||||
|
||||
Once you know the three trees you are going to merge (the one
|
||||
"original" tree, aka the common case, and the two "result" trees, aka
|
||||
the branches you want to merge), you do a "merge" read into the
|
||||
index. This will complain if it has to throw away your old index contents, so you should
|
||||
make sure that you've committed those - in fact you would normally
|
||||
always do a merge against your last commit (which should thus match
|
||||
what you have in your current index anyway).
|
||||
|
||||
To do the merge, do
|
||||
|
||||
git-read-tree -m -u <origtree> <yourtree> <targettree>
|
||||
|
||||
which will do all trivial merge operations for you directly in the
|
||||
index file, and you can just write the result out with
|
||||
`git-write-tree`.
|
||||
|
||||
Historical note. We did not have `-u` facility when this
|
||||
section was first written, so we used to warn that
|
||||
the merge is done in the index file, not in your
|
||||
working tree, and your working tree will not match your
|
||||
index after this step.
|
||||
This is no longer true. The above command, thanks to `-u`
|
||||
option, updates your working tree with the merge results for
|
||||
paths that have been trivially merged.
|
||||
|
||||
|
||||
8) Merging multiple trees, continued
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Sadly, many merges aren't trivial. If there are files that have
|
||||
been added.moved or removed, or if both branches have modified the
|
||||
same file, you will be left with an index tree that contains "merge
|
||||
entries" in it. Such an index tree can 'NOT' be written out to a tree
|
||||
object, and you will have to resolve any such merge clashes using
|
||||
other tools before you can write out the result.
|
||||
|
||||
You can examine such index state with `git-ls-files --unmerged`
|
||||
command. An example:
|
||||
|
||||
------------------------------------------------
|
||||
$ git-read-tree -m $orig HEAD $target
|
||||
$ git-ls-files --unmerged
|
||||
100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1 hello.c
|
||||
100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2 hello.c
|
||||
100644 cc44c73eb783565da5831b4d820c962954019b69 3 hello.c
|
||||
------------------------------------------------
|
||||
|
||||
Each line of the `git-ls-files --unmerged` output begins with
|
||||
the blob mode bits, blob SHA1, 'stage number', and the
|
||||
filename. The 'stage number' is git's way to say which tree it
|
||||
came from: stage 1 corresponds to `$orig` tree, stage 2 `HEAD`
|
||||
tree, and stage3 `$target` tree.
|
||||
|
||||
Earlier we said that trivial merges are done inside
|
||||
`git-read-tree -m`. For example, if the file did not change
|
||||
from `$orig` to `HEAD` nor `$target`, or if the file changed
|
||||
from `$orig` to `HEAD` and `$orig` to `$target` the same way,
|
||||
obviously the final outcome is what is in `HEAD`. What the
|
||||
above example shows is that file `hello.c` was changed from
|
||||
`$orig` to `HEAD` and `$orig` to `$target` in a different way.
|
||||
You could resolve this by running your favorite 3-way merge
|
||||
program, e.g. `diff3` or `merge`, on the blob objects from
|
||||
these three stages yourself, like this:
|
||||
|
||||
------------------------------------------------
|
||||
$ git-cat-file blob 263414f... >hello.c~1
|
||||
$ git-cat-file blob 06fa6a2... >hello.c~2
|
||||
$ git-cat-file blob cc44c73... >hello.c~3
|
||||
$ merge hello.c~2 hello.c~1 hello.c~3
|
||||
------------------------------------------------
|
||||
|
||||
This would leave the merge result in `hello.c~2` file, along
|
||||
with conflict markers if there are conflicts. After verifying
|
||||
the merge result makes sense, you can tell git what the final
|
||||
merge result for this file is by:
|
||||
|
||||
mv -f hello.c~2 hello.c
|
||||
git-update-index hello.c
|
||||
|
||||
When a path is in unmerged state, running `git-update-index` for
|
||||
that path tells git to mark the path resolved.
|
||||
|
||||
The above is the description of a git merge at the lowest level,
|
||||
to help you understand what conceptually happens under the hood.
|
||||
In practice, nobody, not even git itself, uses three `git-cat-file`
|
||||
for this. There is `git-merge-index` program that extracts the
|
||||
stages to temporary files and calls a "merge" script on it:
|
||||
|
||||
git-merge-index git-merge-one-file hello.c
|
||||
|
||||
and that is what higher level `git merge -s resolve` is implemented
|
||||
with.
|
@ -1,7 +1,7 @@
|
||||
The output format from "git-diff-index", "git-diff-tree" and
|
||||
"git-diff-files" are very similar.
|
||||
The output format from "git-diff-index", "git-diff-tree",
|
||||
"git-diff-files" and "git diff --raw" are very similar.
|
||||
|
||||
These commands all compare two sets of things; what is
|
||||
These commands all compare two sets of things; what is
|
||||
compared differs:
|
||||
|
||||
git-diff-index <tree-ish>::
|
||||
@ -46,6 +46,22 @@ That is, from the left to the right:
|
||||
. path for "dst"; only exists for C or R.
|
||||
. an LF or a NUL when '-z' option is used, to terminate the record.
|
||||
|
||||
Possible status letters are:
|
||||
|
||||
- A: addition of a file
|
||||
- C: copy of a file into a new one
|
||||
- D: deletion of a file
|
||||
- M: modification of the contents or mode of a file
|
||||
- R: renaming of a file
|
||||
- T: change in the type of the file
|
||||
- U: file is unmerged (you must complete the merge before it can
|
||||
be committed)
|
||||
- X: "unknown" change type (most probably a bug, please report it)
|
||||
|
||||
Status letters C and R are always followed by a score (denoting the
|
||||
percentage of similarity between the source and target of the move or
|
||||
copy), and are the only ones to be so.
|
||||
|
||||
<sha1> is shown as all 0's if a file is new on the filesystem
|
||||
and it is out of sync with the index.
|
||||
|
||||
@ -59,156 +75,89 @@ When `-z` option is not used, TAB, LF, and backslash characters
|
||||
in pathnames are represented as `\t`, `\n`, and `\\`,
|
||||
respectively.
|
||||
|
||||
diff format for merges
|
||||
----------------------
|
||||
|
||||
Generating patches with -p
|
||||
--------------------------
|
||||
"git-diff-tree", "git-diff-files" and "git-diff --raw"
|
||||
can take '-c' or '--cc' option
|
||||
to generate diff output also for merge commits. The output differs
|
||||
from the format described above in the following way:
|
||||
|
||||
When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
|
||||
with a '-p' option, they do not produce the output described above;
|
||||
instead they produce a patch file. You can customize the creation
|
||||
of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS
|
||||
environment variables.
|
||||
. there is a colon for each parent
|
||||
. there are more "src" modes and "src" sha1
|
||||
. status is concatenated status characters for each parent
|
||||
. no optional "score" number
|
||||
. single path, only for "dst"
|
||||
|
||||
What the -p option produces is slightly different from the traditional
|
||||
diff format.
|
||||
Example:
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this:
|
||||
------------------------------------------------
|
||||
::100644 100644 100644 fabadb8... cc95eb0... 4866510... MM describe.c
|
||||
------------------------------------------------
|
||||
|
||||
diff --git a/file1 b/file2
|
||||
+
|
||||
The `a/` and `b/` filenames are the same unless rename/copy is
|
||||
involved. Especially, even for a creation or a deletion,
|
||||
`/dev/null` is _not_ used in place of `a/` or `b/` filenames.
|
||||
+
|
||||
When rename/copy is involved, `file1` and `file2` show the
|
||||
name of the source file of the rename/copy and the name of
|
||||
the file that rename/copy produces, respectively.
|
||||
|
||||
2. It is followed by one or more extended header lines:
|
||||
|
||||
old mode <mode>
|
||||
new mode <mode>
|
||||
deleted file mode <mode>
|
||||
new file mode <mode>
|
||||
copy from <path>
|
||||
copy to <path>
|
||||
rename from <path>
|
||||
rename to <path>
|
||||
similarity index <number>
|
||||
dissimilarity index <number>
|
||||
index <hash>..<hash> <mode>
|
||||
|
||||
3. TAB, LF, double quote and backslash characters in pathnames
|
||||
are represented as `\t`, `\n`, `\"` and `\\`, respectively.
|
||||
If there is need for such substitution then the whole
|
||||
pathname is put in double quotes.
|
||||
Note that 'combined diff' lists only files which were modified from
|
||||
all parents.
|
||||
|
||||
|
||||
combined diff format
|
||||
--------------------
|
||||
include::diff-generate-patch.txt[]
|
||||
|
||||
git-diff-tree and git-diff-files can take '-c' or '--cc' option
|
||||
to produce 'combined diff', which looks like this:
|
||||
|
||||
------------
|
||||
diff --combined describe.c
|
||||
index fabadb8,cc95eb0..4866510
|
||||
--- a/describe.c
|
||||
+++ b/describe.c
|
||||
@@@ -98,20 -98,12 +98,20 @@@
|
||||
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
|
||||
}
|
||||
|
||||
- static void describe(char *arg)
|
||||
-static void describe(struct commit *cmit, int last_one)
|
||||
++static void describe(char *arg, int last_one)
|
||||
{
|
||||
+ unsigned char sha1[20];
|
||||
+ struct commit *cmit;
|
||||
struct commit_list *list;
|
||||
static int initialized = 0;
|
||||
struct commit_name *n;
|
||||
|
||||
+ if (get_sha1(arg, sha1) < 0)
|
||||
+ usage(describe_usage);
|
||||
+ cmit = lookup_commit_reference(sha1);
|
||||
+ if (!cmit)
|
||||
+ usage(describe_usage);
|
||||
+
|
||||
if (!initialized) {
|
||||
initialized = 1;
|
||||
for_each_ref(get_name);
|
||||
------------
|
||||
other diff formats
|
||||
------------------
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this (when '-c' option is used):
|
||||
The `--summary` option describes newly added, deleted, renamed and
|
||||
copied files. The `--stat` option adds diffstat(1) graph to the
|
||||
output. These options can be combined with other options, such as
|
||||
`-p`, and are meant for human consumption.
|
||||
|
||||
diff --combined file
|
||||
+
|
||||
or like this (when '--cc' option is used):
|
||||
When showing a change that involves a rename or a copy, `--stat` output
|
||||
formats the pathnames compactly by combining common prefix and suffix of
|
||||
the pathnames. For example, a change that moves `arch/i386/Makefile` to
|
||||
`arch/x86/Makefile` while modifying 4 lines will be shown like this:
|
||||
|
||||
diff --c file
|
||||
------------------------------------
|
||||
arch/{i386 => x86}/Makefile | 4 +--
|
||||
------------------------------------
|
||||
|
||||
2. It is followed by one or more extended header lines
|
||||
(this example shows a merge with two parents):
|
||||
The `--numstat` option gives the diffstat(1) information but is designed
|
||||
for easier machine consumption. An entry in `--numstat` output looks
|
||||
like this:
|
||||
|
||||
index <hash>,<hash>..<hash>
|
||||
mode <mode>,<mode>..<mode>
|
||||
new file mode <mode>
|
||||
deleted file mode <mode>,<mode>
|
||||
+
|
||||
The `mode <mode>,<mode>..<mode>` line appears only if at least one of
|
||||
the <mode> is different from the rest. Extended headers with
|
||||
information about detected contents movement (renames and
|
||||
copying detection) are designed to work with diff of two
|
||||
<tree-ish> and are not used by combined diff format.
|
||||
----------------------------------------
|
||||
1 2 README
|
||||
3 1 arch/{i386 => x86}/Makefile
|
||||
----------------------------------------
|
||||
|
||||
3. It is followed by two-line from-file/to-file header
|
||||
That is, from left to right:
|
||||
|
||||
--- a/file
|
||||
+++ b/file
|
||||
+
|
||||
Similar to two-line header for traditional 'unified' diff
|
||||
format, `/dev/null` is used to signal created or deleted
|
||||
files.
|
||||
. the number of added lines;
|
||||
. a tab;
|
||||
. the number of deleted lines;
|
||||
. a tab;
|
||||
. pathname (possibly with rename/copy information);
|
||||
. a newline.
|
||||
|
||||
4. Chunk header format is modified to prevent people from
|
||||
accidentally feeding it to `patch -p1`. Combined diff format
|
||||
was created for review of merge commit changes, and was not
|
||||
meant for apply. The change is similar to the change in the
|
||||
extended 'index' header:
|
||||
When `-z` output option is in effect, the output is formatted this way:
|
||||
|
||||
@@@ <from-file-range> <from-file-range> <to-file-range> @@@
|
||||
+
|
||||
There are (number of parents + 1) `@` characters in the chunk
|
||||
header for combined diff format.
|
||||
----------------------------------------
|
||||
1 2 README NUL
|
||||
3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
|
||||
----------------------------------------
|
||||
|
||||
Unlike the traditional 'unified' diff format, which shows two
|
||||
files A and B with a single column that has `-` (minus --
|
||||
appears in A but removed in B), `+` (plus -- missing in A but
|
||||
added to B), or `" "` (space -- unchanged) prefix, this format
|
||||
compares two or more files file1, file2,... with one file X, and
|
||||
shows how X differs from each of fileN. One column for each of
|
||||
fileN is prepended to the output line to note how X's line is
|
||||
different from it.
|
||||
That is:
|
||||
|
||||
A `-` character in the column N means that the line appears in
|
||||
fileN but it does not appear in the result. A `+` character
|
||||
in the column N means that the line appears in the last file,
|
||||
and fileN does not have that line (in other words, the line was
|
||||
added, from the point of view of that parent).
|
||||
|
||||
In the above example output, the function signature was changed
|
||||
from both files (hence two `-` removals from both file1 and
|
||||
file2, plus `++` to mean one line that was added does not appear
|
||||
in either file1 nor file2). Also two other lines are the same
|
||||
from file1 but do not appear in file2 (hence prefixed with ` +`).
|
||||
|
||||
When shown by `git diff-tree -c`, it compares the parents of a
|
||||
merge commit with the merge result (i.e. file1..fileN are the
|
||||
parents). When shown by `git diff-files -c`, it compares the
|
||||
two unresolved merge parents with the working tree file
|
||||
(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
|
||||
"their version").
|
||||
. the number of added lines;
|
||||
. a tab;
|
||||
. the number of deleted lines;
|
||||
. a tab;
|
||||
. a NUL (only exists if renamed/copied);
|
||||
. pathname in preimage;
|
||||
. a NUL (only exists if renamed/copied);
|
||||
. pathname in postimage (only exists if renamed/copied);
|
||||
. a NUL.
|
||||
|
||||
The extra `NUL` before the preimage path in renamed case is to allow
|
||||
scripts that read the output to tell if the current record being read is
|
||||
a single-path record or a rename/copy record without reading ahead.
|
||||
After reading added and deleted lines, reading up to `NUL` would yield
|
||||
the pathname, but if that is `NUL`, the record will show two paths.
|
||||
|
161
Documentation/diff-generate-patch.txt
Normal file
161
Documentation/diff-generate-patch.txt
Normal file
@ -0,0 +1,161 @@
|
||||
Generating patches with -p
|
||||
--------------------------
|
||||
|
||||
When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
|
||||
with a '-p' option, "git diff" without the '--raw' option, or
|
||||
"git log" with the "-p" option, they
|
||||
do not produce the output described above; instead they produce a
|
||||
patch file. You can customize the creation of such patches via the
|
||||
GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS environment variables.
|
||||
|
||||
What the -p option produces is slightly different from the traditional
|
||||
diff format.
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this:
|
||||
|
||||
diff --git a/file1 b/file2
|
||||
+
|
||||
The `a/` and `b/` filenames are the same unless rename/copy is
|
||||
involved. Especially, even for a creation or a deletion,
|
||||
`/dev/null` is _not_ used in place of `a/` or `b/` filenames.
|
||||
+
|
||||
When rename/copy is involved, `file1` and `file2` show the
|
||||
name of the source file of the rename/copy and the name of
|
||||
the file that rename/copy produces, respectively.
|
||||
|
||||
2. It is followed by one or more extended header lines:
|
||||
|
||||
old mode <mode>
|
||||
new mode <mode>
|
||||
deleted file mode <mode>
|
||||
new file mode <mode>
|
||||
copy from <path>
|
||||
copy to <path>
|
||||
rename from <path>
|
||||
rename to <path>
|
||||
similarity index <number>
|
||||
dissimilarity index <number>
|
||||
index <hash>..<hash> <mode>
|
||||
|
||||
3. TAB, LF, double quote and backslash characters in pathnames
|
||||
are represented as `\t`, `\n`, `\"` and `\\`, respectively.
|
||||
If there is need for such substitution then the whole
|
||||
pathname is put in double quotes.
|
||||
|
||||
The similarity index is the percentage of unchanged lines, and
|
||||
the dissimilarity index is the percentage of changed lines. It
|
||||
is a rounded down integer, followed by a percent sign. The
|
||||
similarity index value of 100% is thus reserved for two equal
|
||||
files, while 100% dissimilarity means that no line from the old
|
||||
file made it into the new one.
|
||||
|
||||
|
||||
combined diff format
|
||||
--------------------
|
||||
|
||||
"git-diff-tree", "git-diff-files" and "git-diff" can take '-c' or
|
||||
'--cc' option to produce 'combined diff'. For showing a merge commit
|
||||
with "git log -p", this is the default format.
|
||||
A 'combined diff' format looks like this:
|
||||
|
||||
------------
|
||||
diff --combined describe.c
|
||||
index fabadb8,cc95eb0..4866510
|
||||
--- a/describe.c
|
||||
+++ b/describe.c
|
||||
@@@ -98,20 -98,12 +98,20 @@@
|
||||
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
|
||||
}
|
||||
|
||||
- static void describe(char *arg)
|
||||
-static void describe(struct commit *cmit, int last_one)
|
||||
++static void describe(char *arg, int last_one)
|
||||
{
|
||||
+ unsigned char sha1[20];
|
||||
+ struct commit *cmit;
|
||||
struct commit_list *list;
|
||||
static int initialized = 0;
|
||||
struct commit_name *n;
|
||||
|
||||
+ if (get_sha1(arg, sha1) < 0)
|
||||
+ usage(describe_usage);
|
||||
+ cmit = lookup_commit_reference(sha1);
|
||||
+ if (!cmit)
|
||||
+ usage(describe_usage);
|
||||
+
|
||||
if (!initialized) {
|
||||
initialized = 1;
|
||||
for_each_ref(get_name);
|
||||
------------
|
||||
|
||||
1. It is preceded with a "git diff" header, that looks like
|
||||
this (when '-c' option is used):
|
||||
|
||||
diff --combined file
|
||||
+
|
||||
or like this (when '--cc' option is used):
|
||||
|
||||
diff --cc file
|
||||
|
||||
2. It is followed by one or more extended header lines
|
||||
(this example shows a merge with two parents):
|
||||
|
||||
index <hash>,<hash>..<hash>
|
||||
mode <mode>,<mode>..<mode>
|
||||
new file mode <mode>
|
||||
deleted file mode <mode>,<mode>
|
||||
+
|
||||
The `mode <mode>,<mode>..<mode>` line appears only if at least one of
|
||||
the <mode> is different from the rest. Extended headers with
|
||||
information about detected contents movement (renames and
|
||||
copying detection) are designed to work with diff of two
|
||||
<tree-ish> and are not used by combined diff format.
|
||||
|
||||
3. It is followed by two-line from-file/to-file header
|
||||
|
||||
--- a/file
|
||||
+++ b/file
|
||||
+
|
||||
Similar to two-line header for traditional 'unified' diff
|
||||
format, `/dev/null` is used to signal created or deleted
|
||||
files.
|
||||
|
||||
4. Chunk header format is modified to prevent people from
|
||||
accidentally feeding it to `patch -p1`. Combined diff format
|
||||
was created for review of merge commit changes, and was not
|
||||
meant for apply. The change is similar to the change in the
|
||||
extended 'index' header:
|
||||
|
||||
@@@ <from-file-range> <from-file-range> <to-file-range> @@@
|
||||
+
|
||||
There are (number of parents + 1) `@` characters in the chunk
|
||||
header for combined diff format.
|
||||
|
||||
Unlike the traditional 'unified' diff format, which shows two
|
||||
files A and B with a single column that has `-` (minus --
|
||||
appears in A but removed in B), `+` (plus -- missing in A but
|
||||
added to B), or `" "` (space -- unchanged) prefix, this format
|
||||
compares two or more files file1, file2,... with one file X, and
|
||||
shows how X differs from each of fileN. One column for each of
|
||||
fileN is prepended to the output line to note how X's line is
|
||||
different from it.
|
||||
|
||||
A `-` character in the column N means that the line appears in
|
||||
fileN but it does not appear in the result. A `+` character
|
||||
in the column N means that the line appears in the result,
|
||||
and fileN does not have that line (in other words, the line was
|
||||
added, from the point of view of that parent).
|
||||
|
||||
In the above example output, the function signature was changed
|
||||
from both files (hence two `-` removals from both file1 and
|
||||
file2, plus `++` to mean one line that was added does not appear
|
||||
in either file1 nor file2). Also eight other lines are the same
|
||||
from file1 but do not appear in file2 (hence prefixed with `{plus}`).
|
||||
|
||||
When shown by `git diff-tree -c`, it compares the parents of a
|
||||
merge commit with the merge result (i.e. file1..fileN are the
|
||||
parents). When shown by `git diff-files -c`, it compares the
|
||||
two unresolved merge parents with the working tree file
|
||||
(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
|
||||
"their version").
|
@ -1,15 +1,44 @@
|
||||
-p::
|
||||
Generate patch (see section on generating patches)
|
||||
// Please don't remove this comment as asciidoc behaves badly when
|
||||
// the first non-empty line is ifdef/ifndef. The symptom is that
|
||||
// without this comment the <git-diff-core> attribute conditionally
|
||||
// defined below ends up being defined unconditionally.
|
||||
// Last checked with asciidoc 7.0.2.
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
ifndef::git-diff[]
|
||||
ifndef::git-log[]
|
||||
:git-diff-core: 1
|
||||
endif::git-log[]
|
||||
endif::git-diff[]
|
||||
endif::git-format-patch[]
|
||||
|
||||
ifdef::git-format-patch[]
|
||||
-p::
|
||||
Generate patches without diffstat.
|
||||
endif::git-format-patch[]
|
||||
|
||||
ifndef::git-format-patch[]
|
||||
-p::
|
||||
-u::
|
||||
Synonym for "-p".
|
||||
Generate patch (see section on generating patches).
|
||||
{git-diff? This is the default.}
|
||||
endif::git-format-patch[]
|
||||
|
||||
-U<n>::
|
||||
--unified=<n>::
|
||||
Generate diffs with <n> lines of context instead of
|
||||
the usual three. Implies "-p".
|
||||
|
||||
--raw::
|
||||
Generate the raw format.
|
||||
{git-diff-core? This is the default.}
|
||||
|
||||
--patch-with-raw::
|
||||
Synonym for "-p --raw".
|
||||
|
||||
--patience::
|
||||
Generate a diff using the "patience diff" algorithm.
|
||||
|
||||
--stat[=width[,name-width]]::
|
||||
Generate a diffstat. You can override the default
|
||||
output width for 80-column terminal by "--stat=width".
|
||||
@ -28,21 +57,35 @@
|
||||
number of modified files, as well as number of added and deleted
|
||||
lines.
|
||||
|
||||
--dirstat[=limit]::
|
||||
Output the distribution of relative amount of changes (number of lines added or
|
||||
removed) for each sub-directory. Directories with changes below
|
||||
a cut-off percent (3% by default) are not shown. The cut-off percent
|
||||
can be set with "--dirstat=limit". Changes in a child directory is not
|
||||
counted for the parent directory, unless "--cumulative" is used.
|
||||
|
||||
--dirstat-by-file[=limit]::
|
||||
Same as --dirstat, but counts changed files instead of lines.
|
||||
|
||||
--summary::
|
||||
Output a condensed summary of extended header information
|
||||
such as creations, renames and mode changes.
|
||||
|
||||
--patch-with-stat::
|
||||
Synonym for "-p --stat".
|
||||
{git-format-patch? This is the default.}
|
||||
|
||||
-z::
|
||||
\0 line termination on output
|
||||
NUL-line termination on output. This affects the --raw
|
||||
output field terminator. Also output from commands such
|
||||
as "git-log" will be delimited with NUL between commits.
|
||||
|
||||
--name-only::
|
||||
Show only names of changed files.
|
||||
|
||||
--name-status::
|
||||
Show only names and status of changed files.
|
||||
Show only names and status of changed files. See the description
|
||||
of the `--diff-filter` option on what the status letters mean.
|
||||
|
||||
--color::
|
||||
Show colored diff.
|
||||
@ -51,8 +94,22 @@
|
||||
Turn off colored diff, even when the configuration file
|
||||
gives the default to color output.
|
||||
|
||||
--color-words::
|
||||
Show colored word diff, i.e. color words which have changed.
|
||||
--color-words[=<regex>]::
|
||||
Show colored word diff, i.e., color words which have changed.
|
||||
By default, words are separated by whitespace.
|
||||
+
|
||||
When a <regex> is specified, every non-overlapping match of the
|
||||
<regex> is considered a word. Anything between these matches is
|
||||
considered whitespace and ignored(!) for the purposes of finding
|
||||
differences. You may want to append `|[^[:space:]]` to your regular
|
||||
expression to make sure that it matches all non-whitespace characters.
|
||||
A match that contains a newline is silently truncated(!) at the
|
||||
newline.
|
||||
+
|
||||
The regex can also be set via a diff driver or configuration option, see
|
||||
linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly
|
||||
overrides any diff driver or configuration setting. Diff drivers
|
||||
override configuration settings.
|
||||
|
||||
--no-renames::
|
||||
Turn off rename detection, even when the configuration
|
||||
@ -60,12 +117,14 @@
|
||||
|
||||
--check::
|
||||
Warn if changes introduce trailing whitespace
|
||||
or an indent that uses a space before a tab.
|
||||
or an indent that uses a space before a tab. Exits with
|
||||
non-zero status if problems are found. Not compatible with
|
||||
--exit-code.
|
||||
|
||||
--full-index::
|
||||
Instead of the first handful characters, show full
|
||||
object name of pre- and post-image blob on the "index"
|
||||
line when generating a patch format output.
|
||||
Instead of the first handful of characters, show the full
|
||||
pre- and post-image blob object names on the "index"
|
||||
line when generating patch format output.
|
||||
|
||||
--binary::
|
||||
In addition to --full-index, output "binary diff" that
|
||||
@ -74,7 +133,7 @@
|
||||
--abbrev[=<n>]::
|
||||
Instead of showing the full 40-byte hexadecimal object
|
||||
name in diff-raw format output and diff-tree header
|
||||
lines, show only handful hexdigits prefix. This is
|
||||
lines, show only a partial prefix. This is
|
||||
independent of --full-index option above, which controls
|
||||
the diff-patch output format. Non default number of
|
||||
digits can be specified with --abbrev=<n>.
|
||||
@ -86,12 +145,13 @@
|
||||
Detect renames.
|
||||
|
||||
-C::
|
||||
Detect copies as well as renames.
|
||||
Detect copies as well as renames. See also `--find-copies-harder`.
|
||||
|
||||
--diff-filter=[ACDMRTUXB*]::
|
||||
Select only files that are Added (`A`), Copied (`C`),
|
||||
Deleted (`D`), Modified (`M`), Renamed (`R`), have their
|
||||
type (mode) changed (`T`), are Unmerged (`U`), are
|
||||
type (i.e. regular file, symlink, submodule, ...) changed (`T`),
|
||||
are Unmerged (`U`), are
|
||||
Unknown (`X`), or have had their pairing Broken (`B`).
|
||||
Any combination of the filter characters may be used.
|
||||
When `*` (All-or-none) is added to the combination, all
|
||||
@ -100,12 +160,13 @@
|
||||
that matches other criteria, nothing is selected.
|
||||
|
||||
--find-copies-harder::
|
||||
For performance reasons, by default, -C option finds copies only
|
||||
if the original file of the copy was modified in the same
|
||||
For performance reasons, by default, `-C` option finds copies only
|
||||
if the original file of the copy was modified in the same
|
||||
changeset. This flag makes the command
|
||||
inspect unmodified files as candidates for the source of
|
||||
copy. This is a very expensive operation for large
|
||||
projects, so use it with caution.
|
||||
projects, so use it with caution. Giving more than one
|
||||
`-C` option has the same effect.
|
||||
|
||||
-l<num>::
|
||||
-M and -C options require O(n^2) processing time where n
|
||||
@ -115,7 +176,10 @@
|
||||
number.
|
||||
|
||||
-S<string>::
|
||||
Look for differences that contain the change in <string>.
|
||||
Look for differences that introduce or remove an instance of
|
||||
<string>. Note that this is different than the string simply
|
||||
appearing in diff output; see the 'pickaxe' entry in
|
||||
linkgit:gitdiffcore[7] for more details.
|
||||
|
||||
--pickaxe-all::
|
||||
When -S finds a change, show all the changes in that
|
||||
@ -134,30 +198,36 @@
|
||||
Swap two inputs; that is, show differences from index or
|
||||
on-disk file to tree contents.
|
||||
|
||||
--relative[=<path>]::
|
||||
When run from a subdirectory of the project, it can be
|
||||
told to exclude changes outside the directory and show
|
||||
pathnames relative to it with this option. When you are
|
||||
not in a subdirectory (e.g. in a bare repository), you
|
||||
can name which subdirectory to make the output relative
|
||||
to by giving a <path> as an argument.
|
||||
|
||||
-a::
|
||||
--text::
|
||||
Treat all files as text.
|
||||
|
||||
-a::
|
||||
Shorthand for "--text".
|
||||
|
||||
--ignore-space-at-eol::
|
||||
Ignore changes in white spaces at EOL.
|
||||
|
||||
--ignore-space-change::
|
||||
Ignore changes in amount of white space. This ignores white
|
||||
space at line end, and consider all other sequences of one or
|
||||
more white space characters to be equivalent.
|
||||
Ignore changes in whitespace at EOL.
|
||||
|
||||
-b::
|
||||
Shorthand for "--ignore-space-change".
|
||||
|
||||
--ignore-all-space::
|
||||
Ignore white space when comparing lines. This ignores
|
||||
difference even if one line has white space where the other
|
||||
line has none.
|
||||
--ignore-space-change::
|
||||
Ignore changes in amount of whitespace. This ignores whitespace
|
||||
at line end, and considers all other sequences of one or
|
||||
more whitespace characters to be equivalent.
|
||||
|
||||
-w::
|
||||
Shorthand for "--ignore-all-space".
|
||||
--ignore-all-space::
|
||||
Ignore whitespace when comparing lines. This ignores
|
||||
differences even if one line has whitespace where the other
|
||||
line has none.
|
||||
|
||||
--inter-hunk-context=<lines>::
|
||||
Show the context between diff hunks, up to the specified number
|
||||
of lines, thereby fusing hunks that are close to each other.
|
||||
|
||||
--exit-code::
|
||||
Make the program exit with codes similar to diff(1).
|
||||
@ -167,5 +237,25 @@
|
||||
--quiet::
|
||||
Disable all output of the program. Implies --exit-code.
|
||||
|
||||
--ext-diff::
|
||||
Allow an external diff helper to be executed. If you set an
|
||||
external diff driver with linkgit:gitattributes[5], you need
|
||||
to use this option with linkgit:git-log[1] and friends.
|
||||
|
||||
--no-ext-diff::
|
||||
Disallow external diff drivers.
|
||||
|
||||
--ignore-submodules::
|
||||
Ignore changes to submodules in the diff generation.
|
||||
|
||||
--src-prefix=<prefix>::
|
||||
Show the given source prefix instead of "a/".
|
||||
|
||||
--dst-prefix=<prefix>::
|
||||
Show the given destination prefix instead of "b/".
|
||||
|
||||
--no-prefix::
|
||||
Do not show any source or destination prefix.
|
||||
|
||||
For more detailed explanation on these common options, see also
|
||||
link:diffcore.html[diffcore documentation].
|
||||
linkgit:gitdiffcore[7].
|
||||
|
@ -1,286 +1,296 @@
|
||||
/*
|
||||
CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
|
||||
Tested with XSL stylesheets 1.61.2, 1.67.2
|
||||
*/
|
||||
|
||||
span.strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
body blockquote {
|
||||
margin-top: .75em;
|
||||
line-height: 1.5;
|
||||
margin-bottom: .75em;
|
||||
}
|
||||
|
||||
html body {
|
||||
margin: 1em 5% 1em 5%;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
body div {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
div.toc p b,
|
||||
div.list-of-figures p b,
|
||||
div.list-of-tables p b,
|
||||
div.abstract p.title
|
||||
{
|
||||
color: #527bbd;
|
||||
font-family: tahoma, verdana, sans-serif;
|
||||
}
|
||||
|
||||
div.toc p:first-child,
|
||||
div.list-of-figures p:first-child,
|
||||
div.list-of-tables p:first-child,
|
||||
div.example p.title
|
||||
{
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
body h1 {
|
||||
margin: .0em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h2 {
|
||||
margin: 0.5em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h3 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h4 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h5 {
|
||||
margin: .8em 0 0 -2%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h6 {
|
||||
margin: .8em 0 0 -1%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body hr {
|
||||
border: none; /* Broken on IE6 */
|
||||
}
|
||||
div.footnotes hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
div.navheader th, div.navheader td, div.navfooter td {
|
||||
font-family: sans-serif;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
}
|
||||
div.navheader img, div.navfooter img {
|
||||
border-style: none;
|
||||
}
|
||||
div.navheader a, div.navfooter a {
|
||||
font-weight: normal;
|
||||
}
|
||||
div.navfooter hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
body td {
|
||||
line-height: 1.2
|
||||
}
|
||||
|
||||
body th {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ol {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ul, body dir, body menu {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body h1, body h2, body h3, body h4, body h5, body h6 {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
body pre {
|
||||
margin: 0.5em 10% 0.5em 1em;
|
||||
line-height: 1.0;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
tt.literal, code.literal {
|
||||
color: navy;
|
||||
}
|
||||
|
||||
div.literallayout p {
|
||||
padding: 0em;
|
||||
margin: 0em;
|
||||
}
|
||||
|
||||
div.literallayout {
|
||||
font-family: monospace;
|
||||
# margin: 0.5em 10% 0.5em 1em;
|
||||
margin: 0em;
|
||||
color: navy;
|
||||
border: 1px solid silver;
|
||||
background: #f4f4f4;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.programlisting, .screen {
|
||||
border: 1px solid silver;
|
||||
background: #f4f4f4;
|
||||
margin: 0.5em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
div.sidebar {
|
||||
background: #ffffee;
|
||||
margin: 1.0em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid silver;
|
||||
}
|
||||
div.sidebar * { padding: 0; }
|
||||
div.sidebar div { margin: 0; }
|
||||
div.sidebar p.title {
|
||||
font-family: sans-serif;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
div.bibliomixed {
|
||||
margin: 0.5em 5% 0.5em 1em;
|
||||
}
|
||||
|
||||
div.glossary dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
div.glossary dd p {
|
||||
margin-top: 0.2em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: .8em 0;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
dt span.term {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.variablelist dd p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.itemizedlist li, div.orderedlist li {
|
||||
margin-left: -0.8em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
||||
div.sidebar ul, div.sidebar ol {
|
||||
margin-left: 2.8em;
|
||||
}
|
||||
|
||||
div.itemizedlist p.title,
|
||||
div.orderedlist p.title,
|
||||
div.variablelist p.title
|
||||
{
|
||||
margin-bottom: -0.8em;
|
||||
}
|
||||
|
||||
div.revhistory table {
|
||||
border-collapse: collapse;
|
||||
border: none;
|
||||
}
|
||||
div.revhistory th {
|
||||
border: none;
|
||||
color: #527bbd;
|
||||
font-family: tahoma, verdana, sans-serif;
|
||||
}
|
||||
div.revhistory td {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
/* Keep TOC and index lines close together. */
|
||||
div.toc dl, div.toc dt,
|
||||
div.list-of-figures dl, div.list-of-figures dt,
|
||||
div.list-of-tables dl, div.list-of-tables dt,
|
||||
div.indexdiv dl, div.indexdiv dt
|
||||
{
|
||||
line-height: normal;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Table styling does not work because of overriding attributes in
|
||||
generated HTML.
|
||||
*/
|
||||
div.table table,
|
||||
div.informaltable table
|
||||
{
|
||||
margin-left: 0;
|
||||
margin-right: 5%;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.informaltable table
|
||||
{
|
||||
margin-top: 0.4em
|
||||
}
|
||||
div.table thead,
|
||||
div.table tfoot,
|
||||
div.table tbody,
|
||||
div.informaltable thead,
|
||||
div.informaltable tfoot,
|
||||
div.informaltable tbody
|
||||
{
|
||||
/* No effect in IE6. */
|
||||
border-top: 2px solid #527bbd;
|
||||
border-bottom: 2px solid #527bbd;
|
||||
}
|
||||
div.table thead, div.table tfoot,
|
||||
div.informaltable thead, div.informaltable tfoot
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.mediaobject img {
|
||||
border: 1px solid silver;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.figure p.title,
|
||||
div.table p.title
|
||||
{
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
div.navheader, div.navfooter { display: none; }
|
||||
}
|
||||
/*
|
||||
CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
|
||||
Tested with XSL stylesheets 1.61.2, 1.67.2
|
||||
*/
|
||||
|
||||
span.strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
body blockquote {
|
||||
margin-top: .75em;
|
||||
line-height: 1.5;
|
||||
margin-bottom: .75em;
|
||||
}
|
||||
|
||||
html body {
|
||||
margin: 1em 5% 1em 5%;
|
||||
line-height: 1.2;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
body div {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
div.toc p b,
|
||||
div.list-of-figures p b,
|
||||
div.list-of-tables p b,
|
||||
div.abstract p.title
|
||||
{
|
||||
color: #527bbd;
|
||||
font-family: tahoma, verdana, sans-serif;
|
||||
}
|
||||
|
||||
div.toc p:first-child,
|
||||
div.list-of-figures p:first-child,
|
||||
div.list-of-tables p:first-child,
|
||||
div.example p.title
|
||||
{
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
body h1 {
|
||||
margin: .0em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h2 {
|
||||
margin: 0.5em 0 0 -4%;
|
||||
line-height: 1.3;
|
||||
border-bottom: 2px solid silver;
|
||||
}
|
||||
|
||||
body h3 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h4 {
|
||||
margin: .8em 0 0 -3%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h5 {
|
||||
margin: .8em 0 0 -2%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body h6 {
|
||||
margin: .8em 0 0 -1%;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
body hr {
|
||||
border: none; /* Broken on IE6 */
|
||||
}
|
||||
div.footnotes hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
div.navheader th, div.navheader td, div.navfooter td {
|
||||
font-family: sans-serif;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
color: #527bbd;
|
||||
}
|
||||
div.navheader img, div.navfooter img {
|
||||
border-style: none;
|
||||
}
|
||||
div.navheader a, div.navfooter a {
|
||||
font-weight: normal;
|
||||
}
|
||||
div.navfooter hr {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
body td {
|
||||
line-height: 1.2
|
||||
}
|
||||
|
||||
body th {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ol {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
ul, body dir, body menu {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body h1, body h2, body h3, body h4, body h5, body h6 {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
body pre {
|
||||
margin: 0.5em 10% 0.5em 1em;
|
||||
line-height: 1.0;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
tt.literal, code.literal {
|
||||
color: navy;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
code.literal:before { content: "'"; }
|
||||
code.literal:after { content: "'"; }
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
color: #064;
|
||||
}
|
||||
|
||||
div.literallayout p {
|
||||
padding: 0em;
|
||||
margin: 0em;
|
||||
}
|
||||
|
||||
div.literallayout {
|
||||
font-family: monospace;
|
||||
margin: 0em;
|
||||
color: navy;
|
||||
border: 1px solid silver;
|
||||
background: #f4f4f4;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.programlisting, .screen {
|
||||
border: 1px solid silver;
|
||||
background: #f4f4f4;
|
||||
margin: 0.5em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
div.sidebar {
|
||||
background: #ffffee;
|
||||
margin: 1.0em 10% 0.5em 0;
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid silver;
|
||||
}
|
||||
div.sidebar * { padding: 0; }
|
||||
div.sidebar div { margin: 0; }
|
||||
div.sidebar p.title {
|
||||
font-family: sans-serif;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
div.bibliomixed {
|
||||
margin: 0.5em 5% 0.5em 1em;
|
||||
}
|
||||
|
||||
div.glossary dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
div.glossary dd p {
|
||||
margin-top: 0.2em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: .8em 0;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
dt span.term {
|
||||
font-style: normal;
|
||||
color: navy;
|
||||
}
|
||||
|
||||
div.variablelist dd p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.itemizedlist li, div.orderedlist li {
|
||||
margin-left: -0.8em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
||||
div.sidebar ul, div.sidebar ol {
|
||||
margin-left: 2.8em;
|
||||
}
|
||||
|
||||
div.itemizedlist p.title,
|
||||
div.orderedlist p.title,
|
||||
div.variablelist p.title
|
||||
{
|
||||
margin-bottom: -0.8em;
|
||||
}
|
||||
|
||||
div.revhistory table {
|
||||
border-collapse: collapse;
|
||||
border: none;
|
||||
}
|
||||
div.revhistory th {
|
||||
border: none;
|
||||
color: #527bbd;
|
||||
font-family: tahoma, verdana, sans-serif;
|
||||
}
|
||||
div.revhistory td {
|
||||
border: 1px solid silver;
|
||||
}
|
||||
|
||||
/* Keep TOC and index lines close together. */
|
||||
div.toc dl, div.toc dt,
|
||||
div.list-of-figures dl, div.list-of-figures dt,
|
||||
div.list-of-tables dl, div.list-of-tables dt,
|
||||
div.indexdiv dl, div.indexdiv dt
|
||||
{
|
||||
line-height: normal;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Table styling does not work because of overriding attributes in
|
||||
generated HTML.
|
||||
*/
|
||||
div.table table,
|
||||
div.informaltable table
|
||||
{
|
||||
margin-left: 0;
|
||||
margin-right: 5%;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.informaltable table
|
||||
{
|
||||
margin-top: 0.4em
|
||||
}
|
||||
div.table thead,
|
||||
div.table tfoot,
|
||||
div.table tbody,
|
||||
div.informaltable thead,
|
||||
div.informaltable tfoot,
|
||||
div.informaltable tbody
|
||||
{
|
||||
/* No effect in IE6. */
|
||||
border-top: 2px solid #527bbd;
|
||||
border-bottom: 2px solid #527bbd;
|
||||
}
|
||||
div.table thead, div.table tfoot,
|
||||
div.informaltable thead, div.informaltable tfoot
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.mediaobject img {
|
||||
border: 1px solid silver;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
div.figure p.title,
|
||||
div.table p.title
|
||||
{
|
||||
margin-top: 1em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
@media print {
|
||||
div.navheader, div.navfooter { display: none; }
|
||||
}
|
||||
|
5
Documentation/docbook.xsl
Normal file
5
Documentation/docbook.xsl
Normal file
@ -0,0 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version='1.0'>
|
||||
<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
|
||||
<xsl:output method="html" encoding="UTF-8" indent="no" />
|
||||
</xsl:stylesheet>
|
@ -25,16 +25,12 @@ Basic Repository[[Basic Repository]]
|
||||
|
||||
Everybody uses these commands to maintain git repositories.
|
||||
|
||||
* gitlink:git-init[1] or gitlink:git-clone[1] to create a
|
||||
* linkgit:git-init[1] or linkgit:git-clone[1] to create a
|
||||
new repository.
|
||||
|
||||
* gitlink:git-fsck[1] to check the repository for errors.
|
||||
* linkgit:git-fsck[1] to check the repository for errors.
|
||||
|
||||
* gitlink:git-prune[1] to remove unused objects in the repository.
|
||||
|
||||
* gitlink:git-repack[1] to pack loose objects for efficiency.
|
||||
|
||||
* gitlink:git-gc[1] to do common housekeeping tasks such as
|
||||
* linkgit:git-gc[1] to do common housekeeping tasks such as
|
||||
repack and prune.
|
||||
|
||||
Examples
|
||||
@ -45,24 +41,19 @@ Check health and remove cruft.::
|
||||
------------
|
||||
$ git fsck <1>
|
||||
$ git count-objects <2>
|
||||
$ git repack <3>
|
||||
$ git gc <4>
|
||||
$ git gc <3>
|
||||
------------
|
||||
+
|
||||
<1> running without `\--full` is usually cheap and assures the
|
||||
repository health reasonably well.
|
||||
<2> check how many loose objects there are and how much
|
||||
disk space is wasted by not repacking.
|
||||
<3> without `-a` repacks incrementally. repacking every 4-5MB
|
||||
of loose objects accumulation may be a good rule of thumb.
|
||||
<4> it is easier to use `git gc` than individual housekeeping commands
|
||||
such as `prune` and `repack`. This runs `repack -a -d`.
|
||||
<3> repacks the local repository and performs other housekeeping tasks.
|
||||
|
||||
Repack a small project into single pack.::
|
||||
+
|
||||
------------
|
||||
$ git repack -a -d <1>
|
||||
$ git prune
|
||||
$ git gc <1>
|
||||
------------
|
||||
+
|
||||
<1> pack all the objects reachable from the refs into one pack,
|
||||
@ -76,28 +67,28 @@ A standalone individual developer does not exchange patches with
|
||||
other people, and works alone in a single repository, using the
|
||||
following commands.
|
||||
|
||||
* gitlink:git-show-branch[1] to see where you are.
|
||||
* linkgit:git-show-branch[1] to see where you are.
|
||||
|
||||
* gitlink:git-log[1] to see what happened.
|
||||
* linkgit:git-log[1] to see what happened.
|
||||
|
||||
* gitlink:git-checkout[1] and gitlink:git-branch[1] to switch
|
||||
* linkgit:git-checkout[1] and linkgit:git-branch[1] to switch
|
||||
branches.
|
||||
|
||||
* gitlink:git-add[1] to manage the index file.
|
||||
* linkgit:git-add[1] to manage the index file.
|
||||
|
||||
* gitlink:git-diff[1] and gitlink:git-status[1] to see what
|
||||
* linkgit:git-diff[1] and linkgit:git-status[1] to see what
|
||||
you are in the middle of doing.
|
||||
|
||||
* gitlink:git-commit[1] to advance the current branch.
|
||||
* linkgit:git-commit[1] to advance the current branch.
|
||||
|
||||
* gitlink:git-reset[1] and gitlink:git-checkout[1] (with
|
||||
* linkgit:git-reset[1] and linkgit:git-checkout[1] (with
|
||||
pathname parameters) to undo changes.
|
||||
|
||||
* gitlink:git-merge[1] to merge between local branches.
|
||||
* linkgit:git-merge[1] to merge between local branches.
|
||||
|
||||
* gitlink:git-rebase[1] to maintain topic branches.
|
||||
* linkgit:git-rebase[1] to maintain topic branches.
|
||||
|
||||
* gitlink:git-tag[1] to mark known point.
|
||||
* linkgit:git-tag[1] to mark known point.
|
||||
|
||||
Examples
|
||||
~~~~~~~~
|
||||
@ -107,9 +98,9 @@ Use a tarball as a starting point for a new repository.::
|
||||
------------
|
||||
$ tar zxf frotz.tar.gz
|
||||
$ cd frotz
|
||||
$ git-init
|
||||
$ git init
|
||||
$ git add . <1>
|
||||
$ git commit -m 'import of frotz source tree.'
|
||||
$ git commit -m "import of frotz source tree."
|
||||
$ git tag v2.43 <2>
|
||||
------------
|
||||
+
|
||||
@ -163,16 +154,16 @@ A developer working as a participant in a group project needs to
|
||||
learn how to communicate with others, and uses these commands in
|
||||
addition to the ones needed by a standalone developer.
|
||||
|
||||
* gitlink:git-clone[1] from the upstream to prime your local
|
||||
* linkgit:git-clone[1] from the upstream to prime your local
|
||||
repository.
|
||||
|
||||
* gitlink:git-pull[1] and gitlink:git-fetch[1] from "origin"
|
||||
* linkgit:git-pull[1] and linkgit:git-fetch[1] from "origin"
|
||||
to keep up-to-date with the upstream.
|
||||
|
||||
* gitlink:git-push[1] to shared repository, if you adopt CVS
|
||||
* linkgit:git-push[1] to shared repository, if you adopt CVS
|
||||
style shared repository workflow.
|
||||
|
||||
* gitlink:git-format-patch[1] to prepare e-mail submission, if
|
||||
* linkgit:git-format-patch[1] to prepare e-mail submission, if
|
||||
you adopt Linux kernel-style public forum workflow.
|
||||
|
||||
Examples
|
||||
@ -189,7 +180,7 @@ $ git pull <3>
|
||||
$ git log -p ORIG_HEAD.. arch/i386 include/asm-i386 <4>
|
||||
$ git pull git://git.kernel.org/pub/.../jgarzik/libata-dev.git ALL <5>
|
||||
$ git reset --hard ORIG_HEAD <6>
|
||||
$ git prune <7>
|
||||
$ git gc <7>
|
||||
$ git fetch --tags <8>
|
||||
------------
|
||||
+
|
||||
@ -265,17 +256,17 @@ project receives changes made by others, reviews and integrates
|
||||
them and publishes the result for others to use, using these
|
||||
commands in addition to the ones needed by participants.
|
||||
|
||||
* gitlink:git-am[1] to apply patches e-mailed in from your
|
||||
* linkgit:git-am[1] to apply patches e-mailed in from your
|
||||
contributors.
|
||||
|
||||
* gitlink:git-pull[1] to merge from your trusted lieutenants.
|
||||
* linkgit:git-pull[1] to merge from your trusted lieutenants.
|
||||
|
||||
* gitlink:git-format-patch[1] to prepare and send suggested
|
||||
* linkgit:git-format-patch[1] to prepare and send suggested
|
||||
alternative to contributors.
|
||||
|
||||
* gitlink:git-revert[1] to undo botched commits.
|
||||
* linkgit:git-revert[1] to undo botched commits.
|
||||
|
||||
* gitlink:git-push[1] to publish the bleeding edge.
|
||||
* linkgit:git-push[1] to publish the bleeding edge.
|
||||
|
||||
|
||||
Examples
|
||||
@ -300,7 +291,7 @@ $ git merge topic/one topic/two && git merge hold/linus <8>
|
||||
$ git checkout maint
|
||||
$ git cherry-pick master~4 <9>
|
||||
$ compile/test
|
||||
$ git tag -s -m 'GIT 0.99.9x' v0.99.9x <10>
|
||||
$ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
|
||||
$ git fetch ko && git show-branch master maint 'tags/ko-*' <11>
|
||||
$ git push ko <12>
|
||||
$ git push ko v0.99.9x <13>
|
||||
@ -350,10 +341,10 @@ Repository Administration[[Repository Administration]]
|
||||
A repository administrator uses the following tools to set up
|
||||
and maintain access to the repository by developers.
|
||||
|
||||
* gitlink:git-daemon[1] to allow anonymous download from
|
||||
* linkgit:git-daemon[1] to allow anonymous download from
|
||||
repository.
|
||||
|
||||
* gitlink:git-shell[1] can be used as a 'restricted login shell'
|
||||
* linkgit:git-shell[1] can be used as a 'restricted login shell'
|
||||
for shared central repository users.
|
||||
|
||||
link:howto/update-hook-example.txt[update hook howto] has a good
|
||||
|
@ -1,28 +1,45 @@
|
||||
-a, \--append::
|
||||
-q::
|
||||
--quiet::
|
||||
Pass --quiet to git-fetch-pack and silence any other internally
|
||||
used programs.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
Be verbose.
|
||||
|
||||
-a::
|
||||
--append::
|
||||
Append ref names and object names of fetched refs to the
|
||||
existing contents of `.git/FETCH_HEAD`. Without this
|
||||
option old data in `.git/FETCH_HEAD` will be overwritten.
|
||||
|
||||
\--upload-pack <upload-pack>::
|
||||
When given, and the repository to fetch from is handled
|
||||
by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
|
||||
the command to specify non-default path for the command
|
||||
run on the other end.
|
||||
--upload-pack <upload-pack>::
|
||||
When given, and the repository to fetch from is handled
|
||||
by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
|
||||
the command to specify non-default path for the command
|
||||
run on the other end.
|
||||
|
||||
-f, \--force::
|
||||
When `git-fetch` is used with `<rbranch>:<lbranch>`
|
||||
-f::
|
||||
--force::
|
||||
When 'git-fetch' is used with `<rbranch>:<lbranch>`
|
||||
refspec, it refuses to update the local branch
|
||||
`<lbranch>` unless the remote branch `<rbranch>` it
|
||||
fetches is a descendant of `<lbranch>`. This option
|
||||
overrides that check.
|
||||
|
||||
\--no-tags::
|
||||
By default, `git-fetch` fetches tags that point at
|
||||
objects that are downloaded from the remote repository
|
||||
and stores them locally. This option disables this
|
||||
automatic tag following.
|
||||
ifdef::git-pull[]
|
||||
--no-tags::
|
||||
endif::git-pull[]
|
||||
ifndef::git-pull[]
|
||||
-n::
|
||||
--no-tags::
|
||||
endif::git-pull[]
|
||||
By default, tags that point at objects that are downloaded
|
||||
from the remote repository are fetched and stored locally.
|
||||
This option disables this automatic tag following.
|
||||
|
||||
-t, \--tags::
|
||||
-t::
|
||||
--tags::
|
||||
Most of the tags are fetched automatically as branch
|
||||
heads are downloaded, but tags that do not point at
|
||||
objects reachable from the branch heads that are being
|
||||
@ -30,19 +47,20 @@
|
||||
flag lets all tags and their associated objects be
|
||||
downloaded.
|
||||
|
||||
-k, \--keep::
|
||||
-k::
|
||||
--keep::
|
||||
Keep downloaded pack.
|
||||
|
||||
-u, \--update-head-ok::
|
||||
By default `git-fetch` refuses to update the head which
|
||||
-u::
|
||||
--update-head-ok::
|
||||
By default 'git-fetch' refuses to update the head which
|
||||
corresponds to the current branch. This flag disables the
|
||||
check. This is purely for the internal use for `git-pull`
|
||||
to communicate with `git-fetch`, and unless you are
|
||||
check. This is purely for the internal use for 'git-pull'
|
||||
to communicate with 'git-fetch', and unless you are
|
||||
implementing your own Porcelain you are not supposed to
|
||||
use it.
|
||||
|
||||
\--depth=<depth>::
|
||||
--depth=<depth>::
|
||||
Deepen the history of a 'shallow' repository created by
|
||||
`git clone` with `--depth=<depth>` option (see gitlink:git-clone[1])
|
||||
`git clone` with `--depth=<depth>` option (see linkgit:git-clone[1])
|
||||
by the specified number of commits.
|
||||
|
||||
|
15
Documentation/fix-texi.perl
Executable file
15
Documentation/fix-texi.perl
Executable file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
while (<>) {
|
||||
if (/^\@setfilename/) {
|
||||
$_ = "\@setfilename git.info\n";
|
||||
} elsif (/^\@direntry/) {
|
||||
print '@dircategory Development
|
||||
@direntry
|
||||
* Git: (git). A fast distributed revision control system
|
||||
@end direntry
|
||||
'; }
|
||||
unless (/^\@direntry/../^\@end direntry/) {
|
||||
print;
|
||||
}
|
||||
}
|
@ -3,40 +3,48 @@ git-add(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-add - Add file contents to the changeset to be committed next
|
||||
git-add - Add file contents to the index
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-add' [-n] [-v] [-f] [--interactive | -i] [--] <file>...
|
||||
[verse]
|
||||
'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]
|
||||
[--edit | -e] [--all | [--update | -u]] [--intent-to-add | -N]
|
||||
[--refresh] [--ignore-errors] [--] <filepattern>...
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
All the changed file contents to be committed together in a single set
|
||||
of changes must be "added" with the 'add' command before using the
|
||||
'commit' command. This is not only for adding new files. Even modified
|
||||
files must be added to the set of changes about to be committed.
|
||||
This command adds the current content of new or modified files to the
|
||||
index, thus staging that content for inclusion in the next commit.
|
||||
|
||||
This command can be performed multiple times before a commit. The added
|
||||
content corresponds to the state of specified file(s) at the time the
|
||||
'add' command is used. This means the 'commit' command will not consider
|
||||
subsequent changes to already added content if it is not added again before
|
||||
the commit.
|
||||
The "index" holds a snapshot of the content of the working tree, and it
|
||||
is this snapshot that is taken as the contents of the next commit. Thus
|
||||
after making any changes to the working directory, and before running
|
||||
the commit command, you must use the 'add' command to add any new or
|
||||
modified files to the index.
|
||||
|
||||
The 'git status' command can be used to obtain a summary of what is included
|
||||
for the next commit.
|
||||
This command can be performed multiple times before a commit. It only
|
||||
adds the content of the specified file(s) at the time the add command is
|
||||
run; if you want subsequent changes included in the next commit, then
|
||||
you must run 'git add' again to add the new content to the index.
|
||||
|
||||
This command can be used to add ignored files with `-f` (force)
|
||||
option, but they have to be
|
||||
explicitly and exactly specified from the command line. File globbing
|
||||
and recursive behaviour do not add ignored files.
|
||||
The 'git status' command can be used to obtain a summary of which
|
||||
files have changes that are staged for the next commit.
|
||||
|
||||
Please see gitlink:git-commit[1] for alternative ways to add content to a
|
||||
The 'git add' command will not add ignored files by default. If any
|
||||
ignored files were explicitly specified on the command line, 'git add'
|
||||
will fail with a list of ignored files. Ignored files reached by
|
||||
directory recursion or filename globbing performed by Git (quote your
|
||||
globs before the shell) will be silently ignored. The 'add' command can
|
||||
be used to add ignored files with the `-f` (force) option.
|
||||
|
||||
Please see linkgit:git-commit[1] for alternative ways to add content to a
|
||||
commit.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
<file>...::
|
||||
<filepattern>...::
|
||||
Files to add content from. Fileglobs (e.g. `*.c`) can
|
||||
be given to add all matching files. Also a
|
||||
leading directory name (e.g. `dir` to add `dir/file1`
|
||||
@ -44,17 +52,72 @@ OPTIONS
|
||||
directory, recursively.
|
||||
|
||||
-n::
|
||||
--dry-run::
|
||||
Don't actually add the file(s), just show if they exist.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
Be verbose.
|
||||
|
||||
-f::
|
||||
--force::
|
||||
Allow adding otherwise ignored files.
|
||||
|
||||
-i, \--interactive::
|
||||
-i::
|
||||
--interactive::
|
||||
Add modified contents in the working tree interactively to
|
||||
the index.
|
||||
the index. Optional path arguments may be supplied to limit
|
||||
operation to a subset of the working tree. See ``Interactive
|
||||
mode'' for details.
|
||||
|
||||
-p::
|
||||
--patch::
|
||||
Similar to Interactive mode but the initial command loop is
|
||||
bypassed and the 'patch' subcommand is invoked using each of
|
||||
the specified filepatterns before exiting.
|
||||
|
||||
-e, \--edit::
|
||||
Open the diff vs. the index in an editor and let the user
|
||||
edit it. After the editor was closed, adjust the hunk headers
|
||||
and apply the patch to the index.
|
||||
+
|
||||
*NOTE*: Obviously, if you change anything else than the first character
|
||||
on lines beginning with a space or a minus, the patch will no longer
|
||||
apply.
|
||||
|
||||
-u::
|
||||
--update::
|
||||
Update only files that git already knows about, staging modified
|
||||
content for commit and marking deleted files for removal. This
|
||||
is similar
|
||||
to what "git commit -a" does in preparation for making a commit,
|
||||
except that the update is limited to paths specified on the
|
||||
command line. If no paths are specified, all tracked files in the
|
||||
current directory and its subdirectories are updated.
|
||||
|
||||
-A::
|
||||
--all::
|
||||
Update files that git already knows about (same as '\--update')
|
||||
and add all untracked files that are not ignored by '.gitignore'
|
||||
mechanism.
|
||||
|
||||
|
||||
-N::
|
||||
--intent-to-add::
|
||||
Record only the fact that the path will be added later. An entry
|
||||
for the path is placed in the index with no content. This is
|
||||
useful for, among other things, showing the unstaged content of
|
||||
such files with 'git diff' and committing them with 'git commit
|
||||
-a'.
|
||||
|
||||
--refresh::
|
||||
Don't add the file(s), but only refresh their stat()
|
||||
information in the index.
|
||||
|
||||
--ignore-errors::
|
||||
If some files could not be added because of errors indexing
|
||||
them, do not abort the operation, but continue adding the
|
||||
others. The command shall still exit with non-zero status.
|
||||
|
||||
\--::
|
||||
This option can be used to separate command-line options from
|
||||
@ -62,23 +125,38 @@ OPTIONS
|
||||
for command-line options).
|
||||
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The optional configuration variable 'core.excludesfile' indicates a path to a
|
||||
file containing patterns of file names to exclude from git-add, similar to
|
||||
$GIT_DIR/info/exclude. Patterns in the exclude file are used in addition to
|
||||
those in info/exclude. See linkgit:gitrepository-layout[5].
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
git-add Documentation/\\*.txt::
|
||||
|
||||
Adds content from all `\*.txt` files under `Documentation`
|
||||
directory and its subdirectories.
|
||||
* Adds content from all `\*.txt` files under `Documentation` directory
|
||||
and its subdirectories:
|
||||
+
|
||||
------------
|
||||
$ git add Documentation/\\*.txt
|
||||
------------
|
||||
+
|
||||
Note that the asterisk `\*` is quoted from the shell in this
|
||||
example; this lets the command to include the files from
|
||||
example; this lets the command include the files from
|
||||
subdirectories of `Documentation/` directory.
|
||||
|
||||
git-add git-*.sh::
|
||||
|
||||
Considers adding content from all git-*.sh scripts.
|
||||
Because this example lets shell expand the asterisk
|
||||
(i.e. you are listing the files explicitly), it does not
|
||||
consider `subdir/git-foo.sh`.
|
||||
* Considers adding content from all git-*.sh scripts:
|
||||
+
|
||||
------------
|
||||
$ git add git-*.sh
|
||||
------------
|
||||
+
|
||||
Because this example lets the shell expand the asterisk (i.e. you are
|
||||
listing the files explicitly), it does not consider
|
||||
`subdir/git-foo.sh`.
|
||||
|
||||
Interactive mode
|
||||
----------------
|
||||
@ -129,12 +207,13 @@ one deletion).
|
||||
|
||||
update::
|
||||
|
||||
This shows the status information and gives prompt
|
||||
"Update>>". When the prompt ends with double '>>', you can
|
||||
This shows the status information and issues an "Update>>"
|
||||
prompt. When the prompt ends with double '>>', you can
|
||||
make more than one selection, concatenated with whitespace or
|
||||
comma. Also you can say ranges. E.g. "2-5 7,9" to choose
|
||||
2,3,4,5,7,9 from the list. You can say '*' to choose
|
||||
everything.
|
||||
2,3,4,5,7,9 from the list. If the second number in a range is
|
||||
omitted, all remaining patches are taken. E.g. "7-" to choose
|
||||
7,8,9 from the list. You can say '*' to choose everything.
|
||||
+
|
||||
What you chose are then highlighted with '*',
|
||||
like this:
|
||||
@ -168,21 +247,25 @@ add untracked::
|
||||
|
||||
patch::
|
||||
|
||||
This lets you choose one path out of 'status' like selection.
|
||||
After choosing the path, it presents diff between the index
|
||||
This lets you choose one path out of a 'status' like selection.
|
||||
After choosing the path, it presents the diff between the index
|
||||
and the working tree file and asks you if you want to stage
|
||||
the change of each hunk. You can say:
|
||||
|
||||
y - add the change from that hunk to index
|
||||
n - do not add the change from that hunk to index
|
||||
a - add the change from that hunk and all the rest to index
|
||||
d - do not the change from that hunk nor any of the rest to index
|
||||
j - do not decide on this hunk now, and view the next
|
||||
undecided hunk
|
||||
J - do not decide on this hunk now, and view the next hunk
|
||||
k - do not decide on this hunk now, and view the previous
|
||||
undecided hunk
|
||||
K - do not decide on this hunk now, and view the previous hunk
|
||||
y - stage this hunk
|
||||
n - do not stage this hunk
|
||||
q - quit, do not stage this hunk nor any of the remaining ones
|
||||
a - stage this and all the remaining hunks in the file
|
||||
d - do not stage this hunk nor any of the remaining hunks in the file
|
||||
g - select a hunk to go to
|
||||
/ - search for a hunk matching the given regex
|
||||
j - leave this hunk undecided, see next undecided hunk
|
||||
J - leave this hunk undecided, see next hunk
|
||||
k - leave this hunk undecided, see previous undecided hunk
|
||||
K - leave this hunk undecided, see previous hunk
|
||||
s - split the current hunk into smaller hunks
|
||||
e - manually edit the current hunk
|
||||
? - print help
|
||||
+
|
||||
After deciding the fate for all hunks, if there is any hunk
|
||||
that was chosen, the index is updated with the selected hunks.
|
||||
@ -192,14 +275,14 @@ diff::
|
||||
This lets you review what will be committed (i.e. between
|
||||
HEAD and index).
|
||||
|
||||
|
||||
See Also
|
||||
SEE ALSO
|
||||
--------
|
||||
gitlink:git-status[1]
|
||||
gitlink:git-rm[1]
|
||||
gitlink:git-mv[1]
|
||||
gitlink:git-commit[1]
|
||||
gitlink:git-update-index[1]
|
||||
linkgit:git-status[1]
|
||||
linkgit:git-rm[1]
|
||||
linkgit:git-reset[1]
|
||||
linkgit:git-mv[1]
|
||||
linkgit:git-commit[1]
|
||||
linkgit:git-update-index[1]
|
||||
|
||||
Author
|
||||
------
|
||||
@ -211,5 +294,4 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -9,10 +9,13 @@ git-am - Apply a series of patches from a mailbox
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git-am' [--signoff] [--dotest=<dir>] [--utf8 | --no-utf8] [--binary] [--3way]
|
||||
[--interactive] [--whitespace=<option>] [-C<n>] [-p<n>]
|
||||
<mbox>...
|
||||
'git-am' [--skip | --resolved]
|
||||
'git am' [--signoff] [--keep] [--utf8 | --no-utf8]
|
||||
[--3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--ignore-date]
|
||||
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
||||
[--reject] [-q | --quiet]
|
||||
[<mbox> | <Maildir>...]
|
||||
'git am' (--skip | --resolved | --abort)
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -22,60 +25,78 @@ current branch.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
<mbox>...::
|
||||
<mbox>|<Maildir>...::
|
||||
The list of mailbox files to read patches from. If you do not
|
||||
supply this argument, reads from the standard input.
|
||||
supply this argument, the command reads from the standard input.
|
||||
If you supply directories, they will be treated as Maildirs.
|
||||
|
||||
-s::
|
||||
--signoff::
|
||||
Add `Signed-off-by:` line to the commit message, using
|
||||
Add a `Signed-off-by:` line to the commit message, using
|
||||
the committer identity of yourself.
|
||||
|
||||
--dotest=<dir>::
|
||||
Instead of `.dotest` directory, use <dir> as a working
|
||||
area to store extracted patches.
|
||||
|
||||
-k::
|
||||
--keep::
|
||||
Pass `-k` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]).
|
||||
Pass `-k` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]).
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Be quiet. Only print error messages.
|
||||
|
||||
-u::
|
||||
--utf8::
|
||||
Pass `-u` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]).
|
||||
Pass `-u` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]).
|
||||
The proposed commit log message taken from the e-mail
|
||||
are re-coded into UTF-8 encoding (configuration variable
|
||||
is re-coded into UTF-8 encoding (configuration variable
|
||||
`i18n.commitencoding` can be used to specify project's
|
||||
preferred encoding if it is not UTF-8).
|
||||
+
|
||||
This was optional in prior versions of git, but now it is the
|
||||
default. You could use `--no-utf8` to override this.
|
||||
default. You can use `--no-utf8` to override this.
|
||||
|
||||
--no-utf8::
|
||||
Do not pass `-u` flag to `git-mailinfo` (see
|
||||
gitlink:git-mailinfo[1]).
|
||||
|
||||
--binary::
|
||||
Pass `--allow-binary-replacement` flag to `git-apply`
|
||||
(see gitlink:git-apply[1]).
|
||||
Pass `-n` flag to 'git-mailinfo' (see
|
||||
linkgit:git-mailinfo[1]).
|
||||
|
||||
-3::
|
||||
--3way::
|
||||
When the patch does not apply cleanly, fall back on
|
||||
3-way merge, if the patch records the identity of blobs
|
||||
it is supposed to apply to, and we have those blobs
|
||||
locally.
|
||||
3-way merge if the patch records the identity of blobs
|
||||
it is supposed to apply to and we have those blobs
|
||||
available locally.
|
||||
|
||||
--whitespace=<option>::
|
||||
-C<n>::
|
||||
-p<n>::
|
||||
--directory=<dir>::
|
||||
--reject::
|
||||
These flags are passed to the 'git-apply' (see linkgit:git-apply[1])
|
||||
program that applies
|
||||
the patch.
|
||||
|
||||
-i::
|
||||
--interactive::
|
||||
Run interactively.
|
||||
|
||||
--committer-date-is-author-date::
|
||||
By default the command records the date from the e-mail
|
||||
message as the commit author date, and uses the time of
|
||||
commit creation as the committer date. This allows the
|
||||
user to lie about the committer date by using the same
|
||||
value as the author date.
|
||||
|
||||
--ignore-date::
|
||||
By default the command records the date from the e-mail
|
||||
message as the commit author date, and uses the time of
|
||||
commit creation as the committer date. This allows the
|
||||
user to lie about the author date by using the same
|
||||
value as the committer date.
|
||||
|
||||
--skip::
|
||||
Skip the current patch. This is only meaningful when
|
||||
restarting an aborted patch.
|
||||
|
||||
--whitespace=<option>::
|
||||
This flag is passed to the `git-apply` program that applies
|
||||
the patch.
|
||||
|
||||
-C<n>, -p<n>::
|
||||
These flags are passed to the `git-apply` program that applies
|
||||
the patch.
|
||||
|
||||
--interactive::
|
||||
Run interactively, just like git-applymbox.
|
||||
|
||||
-r::
|
||||
--resolved::
|
||||
After a patch failure (e.g. attempting to apply
|
||||
conflicting patch), the user has applied it by hand and
|
||||
@ -84,28 +105,38 @@ default. You could use `--no-utf8` to override this.
|
||||
extracted from the e-mail message and the current index
|
||||
file, and continue.
|
||||
|
||||
--resolvemsg=<msg>::
|
||||
When a patch failure occurs, <msg> will be printed
|
||||
to the screen before exiting. This overrides the
|
||||
standard message informing you to use `--resolved`
|
||||
or `--skip` to handle the failure. This is solely
|
||||
for internal use between 'git-rebase' and 'git-am'.
|
||||
|
||||
--abort::
|
||||
Restore the original branch and abort the patching operation.
|
||||
|
||||
DISCUSSION
|
||||
----------
|
||||
|
||||
The commit author name is taken from the "From: " line of the
|
||||
message, and commit author time is taken from the "Date: " line
|
||||
message, and commit author date is taken from the "Date: " line
|
||||
of the message. The "Subject: " line is used as the title of
|
||||
the commit, after stripping common prefix "[PATCH <anything>]".
|
||||
It is supposed to describe what the commit is about concisely as
|
||||
a one line text.
|
||||
The "Subject: " line is supposed to concisely describe what the
|
||||
commit is about in one line of text.
|
||||
|
||||
The body of the message (iow, after a blank line that terminates
|
||||
RFC2822 headers) can begin with "Subject: " and "From: " lines
|
||||
that are different from those of the mail header, to override
|
||||
the values of these fields.
|
||||
"From: " and "Subject: " lines starting the body (the rest of the
|
||||
message after the blank line terminating the RFC2822 headers)
|
||||
override the respective commit author name and title values taken
|
||||
from the headers.
|
||||
|
||||
The commit message is formed by the title taken from the
|
||||
"Subject: ", a blank line and the body of the message up to
|
||||
where the patch begins. Excess whitespaces at the end of the
|
||||
lines are automatically stripped.
|
||||
where the patch begins. Excess whitespace at the end of each
|
||||
line is automatically stripped.
|
||||
|
||||
The patch is expected to be inline, directly following the
|
||||
message. Any line that is of form:
|
||||
message. Any line that is of the form:
|
||||
|
||||
* three-dashes and end-of-line, or
|
||||
* a line that begins with "diff -", or
|
||||
@ -114,32 +145,37 @@ message. Any line that is of form:
|
||||
is taken as the beginning of a patch, and the commit log message
|
||||
is terminated before the first occurrence of such a line.
|
||||
|
||||
When initially invoking it, you give it names of the mailboxes
|
||||
to crunch. Upon seeing the first patch that does not apply, it
|
||||
aborts in the middle, just like 'git-applymbox' does. You can
|
||||
recover from this in one of two ways:
|
||||
When initially invoking `git am`, you give it the names of the mailboxes
|
||||
to process. Upon seeing the first patch that does not apply, it
|
||||
aborts in the middle. You can recover from this in one of two ways:
|
||||
|
||||
. skip the current one by re-running the command with '--skip'
|
||||
. skip the current patch by re-running the command with the '--skip'
|
||||
option.
|
||||
|
||||
. hand resolve the conflict in the working directory, and update
|
||||
the index file to bring it in a state that the patch should
|
||||
have produced. Then run the command with '--resolved' option.
|
||||
the index file to bring it into a state that the patch should
|
||||
have produced. Then run the command with the '--resolved' option.
|
||||
|
||||
The command refuses to process new mailboxes while `.dotest`
|
||||
The command refuses to process new mailboxes while the `.git/rebase-apply`
|
||||
directory exists, so if you decide to start over from scratch,
|
||||
run `rm -f .dotest` before running the command with mailbox
|
||||
run `rm -f -r .git/rebase-apply` before running the command with mailbox
|
||||
names.
|
||||
|
||||
Before any patches are applied, ORIG_HEAD is set to the tip of the
|
||||
current branch. This is useful if you have problems with multiple
|
||||
commits, like running 'git am' on the wrong branch or an error in the
|
||||
commits that is more easily fixed by changing the mailbox (e.g.
|
||||
errors in the "From:" lines).
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
gitlink:git-applymbox[1], gitlink:git-applypatch[1], gitlink:git-apply[1].
|
||||
linkgit:git-apply[1].
|
||||
|
||||
|
||||
Author
|
||||
------
|
||||
Written by Junio C Hamano <junkio@cox.net>
|
||||
Written by Junio C Hamano <gitster@pobox.com>
|
||||
|
||||
Documentation
|
||||
--------------
|
||||
@ -147,5 +183,4 @@ Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.o
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -3,37 +3,29 @@ git-annotate(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-annotate - Annotate file lines with commit info
|
||||
git-annotate - Annotate file lines with commit information
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
git-annotate [options] file [revision]
|
||||
'git annotate' [options] file [revision]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Annotates each line in the given file with information from the commit
|
||||
which introduced the line. Optionally annotate from a given revision.
|
||||
which introduced the line. Optionally annotates from a given revision.
|
||||
|
||||
The only difference between this command and linkgit:git-blame[1] is that
|
||||
they use slightly different output formats, and this command exists only
|
||||
for backward compatibility to support existing scripts, and provide a more
|
||||
familiar command name for people coming from other SCM systems.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-l, --long::
|
||||
Show long rev (Defaults off).
|
||||
|
||||
-t, --time::
|
||||
Show raw timestamp (Defaults off).
|
||||
|
||||
-r, --rename::
|
||||
Follow renames (Defaults on).
|
||||
|
||||
-S, --rev-file <revs-file>::
|
||||
Use revs from revs-file instead of calling git-rev-list.
|
||||
|
||||
-h, --help::
|
||||
Show help message.
|
||||
include::blame-options.txt[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
gitlink:git-blame[1]
|
||||
linkgit:git-blame[1]
|
||||
|
||||
AUTHOR
|
||||
------
|
||||
@ -41,4 +33,4 @@ Written by Ryan Anderson <ryan@michonline.com>.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -3,27 +3,29 @@ git-apply(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-apply - Apply a patch on a git index file and a working tree
|
||||
git-apply - Apply a patch on a git index file and/or a working tree
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
|
||||
[--no-add] [--index-info] [--allow-binary-replacement | --binary]
|
||||
[-R | --reverse] [--reject] [-z] [-pNUM] [-CNUM] [--inaccurate-eof]
|
||||
[--whitespace=<nowarn|warn|error|error-all|strip>] [--exclude=PATH]
|
||||
[--cached] [--verbose] [<patch>...]
|
||||
'git apply' [--stat] [--numstat] [--summary] [--check] [--index]
|
||||
[--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
|
||||
[--allow-binary-replacement | --binary] [--reject] [-z]
|
||||
[-pNUM] [-CNUM] [--inaccurate-eof] [--recount] [--cached]
|
||||
[--whitespace=<nowarn|warn|fix|error|error-all>]
|
||||
[--exclude=PATH] [--include=PATH] [--directory=<root>]
|
||||
[--verbose] [<patch>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Reads supplied diff output and applies it on a git index file
|
||||
Reads supplied 'diff' output and applies it on a git index file
|
||||
and a work tree.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
<patch>...::
|
||||
The files to read patch from. '-' can be used to read
|
||||
The files to read the patch from. '-' can be used to read
|
||||
from the standard input.
|
||||
|
||||
--stat::
|
||||
@ -31,8 +33,8 @@ OPTIONS
|
||||
input. Turns off "apply".
|
||||
|
||||
--numstat::
|
||||
Similar to \--stat, but shows number of added and
|
||||
deleted lines in decimal notation and pathname without
|
||||
Similar to \--stat, but shows the number of added and
|
||||
deleted lines in decimal notation and the pathname without
|
||||
abbreviation, to make it more machine friendly. For
|
||||
binary files, outputs two `-` instead of saying
|
||||
`0 0`. Turns off "apply".
|
||||
@ -58,22 +60,26 @@ OPTIONS
|
||||
causes the index file to be updated.
|
||||
|
||||
--cached::
|
||||
Apply a patch without touching the working tree. Instead, take the
|
||||
cached data, apply the patch, and store the result in the index,
|
||||
Apply a patch without touching the working tree. Instead take the
|
||||
cached data, apply the patch, and store the result in the index
|
||||
without using the working tree. This implies '--index'.
|
||||
|
||||
--index-info::
|
||||
Newer git-diff output has embedded 'index information'
|
||||
--build-fake-ancestor=<file>::
|
||||
Newer 'git-diff' output has embedded 'index information'
|
||||
for each blob to help identify the original version that
|
||||
the patch applies to. When this flag is given, and if
|
||||
the original version of the blob is available locally,
|
||||
outputs information about them to the standard output.
|
||||
the original versions of the blobs are available locally,
|
||||
builds a temporary index containing those blobs.
|
||||
+
|
||||
When a pure mode change is encountered (which has no index information),
|
||||
the information is read from the current index instead.
|
||||
|
||||
-R, --reverse::
|
||||
-R::
|
||||
--reverse::
|
||||
Apply the patch in reverse.
|
||||
|
||||
--reject::
|
||||
For atomicity, gitlink:git-apply[1] by default fails the whole patch and
|
||||
For atomicity, 'git-apply' by default fails the whole patch and
|
||||
does not touch the working tree when some of the hunks
|
||||
do not apply. This option makes it apply
|
||||
the parts of the patch that are applicable, and leave the
|
||||
@ -97,30 +103,31 @@ OPTIONS
|
||||
ever ignored.
|
||||
|
||||
--unidiff-zero::
|
||||
By default, gitlink:git-apply[1] expects that the patch being
|
||||
By default, 'git-apply' expects that the patch being
|
||||
applied is a unified diff with at least one line of context.
|
||||
This provides good safety measures, but breaks down when
|
||||
applying a diff generated with --unified=0. To bypass these
|
||||
checks use '--unidiff-zero'.
|
||||
+
|
||||
Note, for the reasons stated above usage of context-free patches are
|
||||
Note, for the reasons stated above usage of context-free patches is
|
||||
discouraged.
|
||||
|
||||
--apply::
|
||||
If you use any of the options marked "Turns off
|
||||
'apply'" above, gitlink:git-apply[1] reads and outputs the
|
||||
information you asked without actually applying the
|
||||
'apply'" above, 'git-apply' reads and outputs the
|
||||
requested information without actually applying the
|
||||
patch. Give this flag after those flags to also apply
|
||||
the patch.
|
||||
|
||||
--no-add::
|
||||
When applying a patch, ignore additions made by the
|
||||
patch. This can be used to extract common part between
|
||||
two files by first running `diff` on them and applying
|
||||
patch. This can be used to extract the common part between
|
||||
two files by first running 'diff' on them and applying
|
||||
the result with this option, which would apply the
|
||||
deletion part but not addition part.
|
||||
deletion part but not the addition part.
|
||||
|
||||
--allow-binary-replacement, --binary::
|
||||
--allow-binary-replacement::
|
||||
--binary::
|
||||
Historically we did not allow binary patch applied
|
||||
without an explicit permission from the user, and this
|
||||
flag was the way to do so. Currently we always allow binary
|
||||
@ -131,38 +138,70 @@ discouraged.
|
||||
be useful when importing patchsets, where you want to exclude certain
|
||||
files or directories.
|
||||
|
||||
--whitespace=<option>::
|
||||
When applying a patch, detect a new or modified line
|
||||
that ends with trailing whitespaces (this includes a
|
||||
line that solely consists of whitespaces). By default,
|
||||
the command outputs warning messages and applies the
|
||||
patch.
|
||||
When gitlink:git-apply[1] is used for statistics and not applying a
|
||||
patch, it defaults to `nowarn`.
|
||||
You can use different `<option>` to control this
|
||||
behavior:
|
||||
--include=<path-pattern>::
|
||||
Apply changes to files matching the given path pattern. This can
|
||||
be useful when importing patchsets, where you want to include certain
|
||||
files or directories.
|
||||
+
|
||||
When --exclude and --include patterns are used, they are examined in the
|
||||
order they appear on the command line, and the first match determines if a
|
||||
patch to each path is used. A patch to a path that does not match any
|
||||
include/exclude pattern is used by default if there is no include pattern
|
||||
on the command line, and ignored if there is any include pattern.
|
||||
|
||||
--whitespace=<action>::
|
||||
When applying a patch, detect a new or modified line that has
|
||||
whitespace errors. What are considered whitespace errors is
|
||||
controlled by `core.whitespace` configuration. By default,
|
||||
trailing whitespaces (including lines that solely consist of
|
||||
whitespaces) and a space character that is immediately followed
|
||||
by a tab character inside the initial indent of the line are
|
||||
considered whitespace errors.
|
||||
+
|
||||
By default, the command outputs warning messages but applies the patch.
|
||||
When `git-apply` is used for statistics and not applying a
|
||||
patch, it defaults to `nowarn`.
|
||||
+
|
||||
You can use different `<action>` values to control this
|
||||
behavior:
|
||||
+
|
||||
* `nowarn` turns off the trailing whitespace warning.
|
||||
* `warn` outputs warnings for a few such errors, but applies the
|
||||
patch (default).
|
||||
patch as-is (default).
|
||||
* `fix` outputs warnings for a few such errors, and applies the
|
||||
patch after fixing them (`strip` is a synonym --- the tool
|
||||
used to consider only trailing whitespace characters as errors, and the
|
||||
fix involved 'stripping' them, but modern gits do more).
|
||||
* `error` outputs warnings for a few such errors, and refuses
|
||||
to apply the patch.
|
||||
* `error-all` is similar to `error` but shows all errors.
|
||||
* `strip` outputs warnings for a few such errors, strips out the
|
||||
trailing whitespaces and applies the patch.
|
||||
|
||||
--inaccurate-eof::
|
||||
Under certain circumstances, some versions of diff do not correctly
|
||||
Under certain circumstances, some versions of 'diff' do not correctly
|
||||
detect a missing new-line at the end of the file. As a result, patches
|
||||
created by such diff programs do not record incomplete lines
|
||||
created by such 'diff' programs do not record incomplete lines
|
||||
correctly. This option adds support for applying such patches by
|
||||
working around this bug.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
Report progress to stderr. By default, only a message about the
|
||||
current patch being applied will be printed. This option will cause
|
||||
additional information to be reported.
|
||||
|
||||
--recount::
|
||||
Do not trust the line counts in the hunk headers, but infer them
|
||||
by inspecting the patch (e.g. after editing the patch without
|
||||
adjusting the hunk headers appropriately).
|
||||
|
||||
--directory=<root>::
|
||||
Prepend <root> to all filenames. If a "-p" argument was also passed,
|
||||
it is applied before prepending the new root.
|
||||
+
|
||||
For example, a patch that talks about updating `a/git-gui.sh` to `b/git-gui.sh`
|
||||
can be applied to the file in the working tree `modules/git-gui/git-gui.sh` by
|
||||
running `git apply --directory=modules/git-gui`.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
@ -170,6 +209,20 @@ apply.whitespace::
|
||||
When no `--whitespace` flag is given from the command
|
||||
line, this configuration item is used as the default.
|
||||
|
||||
Submodules
|
||||
----------
|
||||
If the patch contains any changes to submodules then 'git-apply'
|
||||
treats these changes as follows.
|
||||
|
||||
If --index is specified (explicitly or implicitly), then the submodule
|
||||
commits must match the index exactly for the patch to apply. If any
|
||||
of the submodules are checked-out, then these check-outs are completely
|
||||
ignored, i.e., they are not required to be up-to-date or clean and they
|
||||
are not updated.
|
||||
|
||||
If --index is not specified, then the submodule commits in the patch
|
||||
are ignored and only the absence or presence of the corresponding
|
||||
subdirectory is checked and (if possible) updated.
|
||||
|
||||
Author
|
||||
------
|
||||
@ -181,5 +234,4 @@ Documentation by Junio C Hamano
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -1,92 +0,0 @@
|
||||
git-applymbox(1)
|
||||
================
|
||||
|
||||
NAME
|
||||
----
|
||||
git-applymbox - Apply a series of patches in a mailbox
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-applymbox' [-u] [-k] [-q] [-m] ( -c .dotest/<num> | <mbox> ) [ <signoff> ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Splits mail messages in a mailbox into commit log message,
|
||||
authorship information and patches, and applies them to the
|
||||
current branch.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
-q::
|
||||
Apply patches interactively. The user will be given
|
||||
opportunity to edit the log message and the patch before
|
||||
attempting to apply it.
|
||||
|
||||
-k::
|
||||
Usually the program 'cleans up' the Subject: header line
|
||||
to extract the title line for the commit log message,
|
||||
among which (1) remove 'Re:' or 're:', (2) leading
|
||||
whitespaces, (3) '[' up to ']', typically '[PATCH]', and
|
||||
then prepends "[PATCH] ". This flag forbids this
|
||||
munging, and is most useful when used to read back 'git
|
||||
format-patch --mbox' output.
|
||||
|
||||
-m::
|
||||
Patches are applied with `git-apply` command, and unless
|
||||
it cleanly applies without fuzz, the processing fails.
|
||||
With this flag, if a tree that the patch applies cleanly
|
||||
is found in a repository, the patch is applied to the
|
||||
tree and then a 3-way merge between the resulting tree
|
||||
and the current tree.
|
||||
|
||||
-u::
|
||||
The commit log message, author name and author email are
|
||||
taken from the e-mail, and after minimally decoding MIME
|
||||
transfer encoding, re-coded in UTF-8 by transliterating
|
||||
them. This used to be optional but now it is the default.
|
||||
+
|
||||
Note that the patch is always used as-is without charset
|
||||
conversion, even with this flag.
|
||||
|
||||
-c .dotest/<num>::
|
||||
When the patch contained in an e-mail does not cleanly
|
||||
apply, the command exits with an error message. The
|
||||
patch and extracted message are found in .dotest/, and
|
||||
you could re-run 'git applymbox' with '-c .dotest/<num>'
|
||||
flag to restart the process after inspecting and fixing
|
||||
them.
|
||||
|
||||
<mbox>::
|
||||
The name of the file that contains the e-mail messages
|
||||
with patches. This file should be in the UNIX mailbox
|
||||
format. See 'SubmittingPatches' document to learn about
|
||||
the formatting convention for e-mail submission.
|
||||
|
||||
<signoff>::
|
||||
The name of the file that contains your "Signed-off-by"
|
||||
line. See 'SubmittingPatches' document to learn what
|
||||
"Signed-off-by" line means. You can also just say
|
||||
'yes', 'true', 'me', or 'please' to use an automatically
|
||||
generated "Signed-off-by" line based on your committer
|
||||
identity.
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
gitlink:git-am[1], gitlink:git-applypatch[1].
|
||||
|
||||
|
||||
Author
|
||||
------
|
||||
Written by Linus Torvalds <torvalds@osdl.org>
|
||||
|
||||
Documentation
|
||||
--------------
|
||||
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
@ -1,53 +0,0 @@
|
||||
git-applypatch(1)
|
||||
=================
|
||||
|
||||
NAME
|
||||
----
|
||||
git-applypatch - Apply one patch extracted from an e-mail
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-applypatch' <msg> <patch> <info> [<signoff>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
This is usually not what an end user wants to run directly. See
|
||||
gitlink:git-am[1] instead.
|
||||
|
||||
Takes three files <msg>, <patch>, and <info> prepared from an
|
||||
e-mail message by 'git-mailinfo', and creates a commit. It is
|
||||
usually not necessary to use this command directly.
|
||||
|
||||
This command can run `applypatch-msg`, `pre-applypatch`, and
|
||||
`post-applypatch` hooks. See link:hooks.html[hooks] for more
|
||||
information.
|
||||
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
<msg>::
|
||||
Commit log message (sans the first line, which comes
|
||||
from e-mail Subject stored in <info>).
|
||||
|
||||
<patch>::
|
||||
The patch to apply.
|
||||
|
||||
<info>::
|
||||
Author and subject information extracted from e-mail,
|
||||
used on "author" line and as the first line of the
|
||||
commit log message.
|
||||
|
||||
|
||||
Author
|
||||
------
|
||||
Written by Linus Torvalds <torvalds@osdl.org>
|
||||
|
||||
Documentation
|
||||
--------------
|
||||
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
@ -9,7 +9,7 @@ git-archimport - Import an Arch repository into git
|
||||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git-archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
|
||||
'git archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
|
||||
<archive/branch>[:<git-branch>] ...
|
||||
|
||||
DESCRIPTION
|
||||
@ -17,29 +17,29 @@ DESCRIPTION
|
||||
Imports a project from one or more Arch repositories. It will follow branches
|
||||
and repositories within the namespaces defined by the <archive/branch>
|
||||
parameters supplied. If it cannot find the remote branch a merge comes from
|
||||
it will just import it as a regular commit. If it can find it, it will mark it
|
||||
as a merge whenever possible (see discussion below).
|
||||
it will just import it as a regular commit. If it can find it, it will mark it
|
||||
as a merge whenever possible (see discussion below).
|
||||
|
||||
The script expects you to provide the key roots where it can start the import
|
||||
from an 'initial import' or 'tag' type of Arch commit. It will follow and
|
||||
import new branches within the provided roots.
|
||||
The script expects you to provide the key roots where it can start the import
|
||||
from an 'initial import' or 'tag' type of Arch commit. It will follow and
|
||||
import new branches within the provided roots.
|
||||
|
||||
It expects to be dealing with one project only. If it sees
|
||||
branches that have different roots, it will refuse to run. In that case,
|
||||
edit your <archive/branch> parameters to define clearly the scope of the
|
||||
import.
|
||||
It expects to be dealing with one project only. If it sees
|
||||
branches that have different roots, it will refuse to run. In that case,
|
||||
edit your <archive/branch> parameters to define clearly the scope of the
|
||||
import.
|
||||
|
||||
`git-archimport` uses `tla` extensively in the background to access the
|
||||
'git-archimport' uses `tla` extensively in the background to access the
|
||||
Arch repository.
|
||||
Make sure you have a recent version of `tla` available in the path. `tla` must
|
||||
know about the repositories you pass to `git-archimport`.
|
||||
know about the repositories you pass to 'git-archimport'.
|
||||
|
||||
For the initial import `git-archimport` expects to find itself in an empty
|
||||
directory. To follow the development of a project that uses Arch, rerun
|
||||
`git-archimport` with the same parameters as the initial import to perform
|
||||
For the initial import, 'git-archimport' expects to find itself in an empty
|
||||
directory. To follow the development of a project that uses Arch, rerun
|
||||
'git-archimport' with the same parameters as the initial import to perform
|
||||
incremental imports.
|
||||
|
||||
While git-archimport will try to create sensible branch names for the
|
||||
While 'git-archimport' will try to create sensible branch names for the
|
||||
archives that it imports, it is also possible to specify git branch names
|
||||
manually. To do so, write a git branch name after each <archive/branch>
|
||||
parameter, separated by a colon. This way, you can shorten the Arch
|
||||
@ -54,15 +54,15 @@ convert Arch repositories that had been rotated periodically.
|
||||
|
||||
MERGES
|
||||
------
|
||||
Patch merge data from Arch is used to mark merges in git as well. git
|
||||
Patch merge data from Arch is used to mark merges in git as well. git
|
||||
does not care much about tracking patches, and only considers a merge when a
|
||||
branch incorporates all the commits since the point they forked. The end result
|
||||
is that git will have a good idea of how far branches have diverged. So the
|
||||
is that git will have a good idea of how far branches have diverged. So the
|
||||
import process does lose some patch-trading metadata.
|
||||
|
||||
Fortunately, when you try and merge branches imported from Arch,
|
||||
git will find a good merge base, and it has a good chance of identifying
|
||||
patches that have been traded out-of-sequence between the branches.
|
||||
Fortunately, when you try and merge branches imported from Arch,
|
||||
git will find a good merge base, and it has a good chance of identifying
|
||||
patches that have been traded out-of-sequence between the branches.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
@ -71,10 +71,10 @@ OPTIONS
|
||||
Display usage.
|
||||
|
||||
-v::
|
||||
Verbose output.
|
||||
Verbose output.
|
||||
|
||||
-T::
|
||||
Many tags. Will create a tag for every commit, reflecting the commit
|
||||
Many tags. Will create a tag for every commit, reflecting the commit
|
||||
name in the Arch repository.
|
||||
|
||||
-f::
|
||||
@ -84,7 +84,7 @@ OPTIONS
|
||||
|
||||
-o::
|
||||
Use this for compatibility with old-style branch names used by
|
||||
earlier versions of git-archimport. Old-style branch names
|
||||
earlier versions of 'git-archimport'. Old-style branch names
|
||||
were category--branch, whereas new-style branch names are
|
||||
archive,category--branch--version. In both cases, names given
|
||||
on the command-line will override the automatically-generated
|
||||
@ -104,7 +104,7 @@ OPTIONS
|
||||
|
||||
|
||||
<archive/branch>::
|
||||
Archive/branch identifier in a format that `tla log` understands.
|
||||
Archive/branch identifier in a format that `tla log` understands.
|
||||
|
||||
|
||||
Author
|
||||
@ -117,5 +117,4 @@ Documentation by Junio C Hamano, Martin Langhoff and the git-list <git@vger.kern
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
|
||||
Part of the linkgit:git[1] suite
|
||||
|
@ -3,23 +3,27 @@ git-archive(1)
|
||||
|
||||
NAME
|
||||
----
|
||||
git-archive - Creates an archive of files from a named tree
|
||||
git-archive - Create an archive of files from a named tree
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-archive' --format=<fmt> [--list] [--prefix=<prefix>/] [<extra>]
|
||||
[--remote=<repo>] <tree-ish> [path...]
|
||||
[verse]
|
||||
'git archive' --format=<fmt> [--list] [--prefix=<prefix>/] [<extra>]
|
||||
[--output=<file>] [--worktree-attributes]
|
||||
[--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
|
||||
[path...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Creates an archive of the specified format containing the tree
|
||||
structure for the named tree. If <prefix> is specified it is
|
||||
structure for the named tree, and writes it out to the standard
|
||||
output. If <prefix> is specified it is
|
||||
prepended to the filenames in the archive.
|
||||
|
||||
'git-archive' behaves differently when given a tree ID versus when
|
||||
given a commit ID or tag ID. In the first case the current time is
|
||||
used as modification time of each file in the archive. In the latter
|
||||
used as the modification time of each file in the archive. In the latter
|
||||
case the commit time as recorded in the referenced commit object is
|
||||
used instead. Additionally the commit ID is stored in a global
|
||||
extended pax header if the tar format is used; it can be extracted
|
||||
@ -30,23 +34,38 @@ OPTIONS
|
||||
-------
|
||||
|
||||
--format=<fmt>::
|
||||
Format of the resulting archive: 'tar', 'zip'... The default
|
||||
Format of the resulting archive: 'tar' or 'zip'. The default
|
||||
is 'tar'.
|
||||
|
||||
-l::
|
||||
--list::
|
||||
Show all available formats.
|
||||
|
||||
-v::
|
||||
--verbose::
|
||||
Report progress to stderr.
|
||||
|
||||
--prefix=<prefix>/::
|
||||
Prepend <prefix>/ to each filename in the archive.
|
||||
|
||||
--output=<file>::
|
||||
Write the archive to <file> instead of stdout.
|
||||
|
||||
--worktree-attributes::
|
||||
Look for attributes in .gitattributes in working directory too.
|
||||
|
||||
<extra>::
|
||||
This can be any options that the archiver backend understand.
|
||||
This can be any options that the archiver backend understands.
|
||||
See next section.
|
||||
|
||||
--remote=<repo>::
|
||||
Instead of making a tar archive from local repository,
|
||||
Instead of making a tar archive from the local repository,
|
||||
retrieve a tar archive from a remote repository.
|
||||
|
||||
--exec=<git-upload-archive>::
|
||||
Used with --remote to specify the path to the
|
||||
'git-upload-archive' on the remote side.
|
||||
|
||||
<tree-ish>::
|
||||
The tree or commit to produce an archive for.
|
||||
|
||||
@ -68,23 +87,32 @@ zip
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
By default, file and directories modes are set to 0666 or 0777 in tar
|
||||
archives. It is possible to change this by setting the "umask" variable
|
||||
in the repository configuration as follows :
|
||||
|
||||
[tar]
|
||||
umask = 002 ;# group friendly
|
||||
tar.umask::
|
||||
This variable can be used to restrict the permission bits of
|
||||
tar archive entries. The default is 0002, which turns off the
|
||||
world write bit. The special value "user" indicates that the
|
||||
archiving user's umask will be used instead. See umask(2) for
|
||||
details.
|
||||
|
||||
The special umask value "user" indicates that the user's current umask
|
||||
will be used instead. The default value remains 0, which means world
|
||||
readable/writable files and directories.
|
||||
ATTRIBUTES
|
||||
----------
|
||||
|
||||
export-ignore::
|
||||
Files and directories with the attribute export-ignore won't be
|
||||
added to archive files. See linkgit:gitattributes[5] for details.
|
||||
|
||||
export-subst::
|
||||
If the attribute export-subst is set for a file then git will
|
||||
expand several placeholders when adding this file to an archive.
|
||||
See linkgit:gitattributes[5] for details.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)::
|
||||
|
||||
Create a tar archive that contains the contents of the
|
||||
latest commit on the current branch, and extracts it in
|
||||
latest commit on the current branch, and extract it in the
|
||||
`/var/tmp/junk` directory.
|
||||
|
||||
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz::
|
||||
@ -101,6 +129,11 @@ git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs
|
||||
Put everything in the current head's Documentation/ directory
|
||||
into 'git-1.4.0-docs.zip', with the prefix 'git-docs/'.
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:gitattributes[5]
|
||||
|
||||
Author
|
||||
------
|
||||
Written by Franck Bui-Huu and Rene Scharfe.
|
||||
@ -111,4 +144,4 @@ Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel
|
||||
|
||||
GIT
|
||||
---
|
||||
Part of the gitlink:git[7] suite
|
||||
Part of the linkgit:git[1] suite
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user