366 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			366 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
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.
 |