Spaces:
Running
Running
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. | |