197 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
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".
 | 
						|
 | 
						|
  - "git lost-found" shows stuff that are unreachable except
 | 
						|
    from reflogs.
 | 
						|
 | 
						|
  - "git checkout branch^0" now detaches HEAD at the tip commit
 | 
						|
    on the named branch, instead of just switching to the
 | 
						|
    branch (use "git checkout branch" to switch to the branch,
 | 
						|
    as before).
 | 
						|
 | 
						|
  - "git bisect next" can be used after giving only a bad commit
 | 
						|
    without giving a good one (this starts bisection half-way to
 | 
						|
    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
 | 
						|
    installation option to do so.
 | 
						|
 | 
						|
  - gitk and git-gui can be configured out.
 | 
						|
 | 
						|
  - Generated documentation pages automatically get 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-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
 | 
						|
------------------
 | 
						|
 | 
						|
All of the fixes in v1.5.1 maintenance series are included in
 | 
						|
this release, unless otherwise noted.
 | 
						|
 | 
						|
* Bugfixes
 | 
						|
 | 
						|
  - Switching branches with "git checkout" refused to work when
 | 
						|
    a path changes from a file to a directory between the
 | 
						|
    current branch and the new branch, in order not to lose
 | 
						|
    possible local changes in the directory that is being turned
 | 
						|
    into a file with the switch.  We now allow such a branch
 | 
						|
    switch after making sure that there is no locally modified
 | 
						|
    file nor un-ignored file in the directory.  This has not
 | 
						|
    been backported to 1.5.1.x series, as it is rather an
 | 
						|
    intrusive change.
 | 
						|
 | 
						|
  - 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.
 | 
						|
 | 
						|
  - 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.
 |