| 1 | Git v1.7.10 Release Notes |
| 2 | ========================= |
| 3 | |
| 4 | Compatibility Notes |
| 5 | ------------------- |
| 6 | |
| 7 | * From this release on, the "git merge" command in an interactive |
| 8 | session will start an editor when it automatically resolves the |
| 9 | merge for the user to explain the resulting commit, just like the |
| 10 | "git commit" command does when it wasn't given a commit message. |
| 11 | |
| 12 | If you have a script that runs "git merge" and keeps its standard |
| 13 | input and output attached to the user's terminal, and if you do not |
| 14 | want the user to explain the resulting merge commits, you can |
| 15 | export GIT_MERGE_AUTOEDIT environment variable set to "no", like |
| 16 | this: |
| 17 | |
| 18 | #!/bin/sh |
| 19 | GIT_MERGE_AUTOEDIT=no |
| 20 | export GIT_MERGE_AUTOEDIT |
| 21 | |
| 22 | to disable this behavior (if you want your users to explain their |
| 23 | merge commits, you do not have to do anything). Alternatively, you |
| 24 | can give the "--no-edit" option to individual invocations of the |
| 25 | "git merge" command if you know everybody who uses your script has |
| 26 | Git v1.7.8 or newer. |
| 27 | |
| 28 | * The "--binary/-b" options to "git am" have been a no-op for quite a |
| 29 | while and were deprecated in mid 2008 (v1.6.0). When you give these |
| 30 | options to "git am", it will now warn and ask you not to use them. |
| 31 | |
| 32 | * When you do not tell which branches and tags to push to the "git |
| 33 | push" command in any way, the command used "matching refs" rule to |
| 34 | update remote branches and tags with branches and tags with the |
| 35 | same name you locally have. In future versions of Git, this will |
| 36 | change to push out only your current branch according to either the |
| 37 | "upstream" or the "current" rule. Although "upstream" may be more |
| 38 | powerful once the user understands Git better, the semantics |
| 39 | "current" gives is simpler and easier to understand for beginners |
| 40 | and may be a safer and better default option. We haven't decided |
| 41 | yet which one to switch to. |
| 42 | |
| 43 | |
| 44 | Updates since v1.7.9 |
| 45 | -------------------- |
| 46 | |
| 47 | UI, Workflows & Features |
| 48 | |
| 49 | * various "gitk" updates. |
| 50 | - show the path to the top level directory in the window title |
| 51 | - update preference edit dialog |
| 52 | - display file list correctly when directories are given on command line |
| 53 | - make "git-describe" output in the log message into a clickable link |
| 54 | - avoid matching the UNIX timestamp part when searching all fields |
| 55 | - give preference to symbolic font names like sans & monospace |
| 56 | - allow comparing two commits using a mark |
| 57 | - "gitk" honors log.showroot configuration. |
| 58 | |
| 59 | * Teams for localizing the messages from the Porcelain layer of |
| 60 | commands are starting to form, thanks to Jiang Xin who volunteered |
| 61 | to be the localization coordinator. Translated messages for |
| 62 | simplified Chinese, Swedish and Portuguese are available. |
| 63 | |
| 64 | * The configuration mechanism learned an "include" facility; an |
| 65 | assignment to the include.path pseudo-variable causes the named |
| 66 | file to be included in-place when Git looks up configuration |
| 67 | variables. |
| 68 | |
| 69 | * A content filter (clean/smudge) used to be just a way to make the |
| 70 | recorded contents "more useful", and allowed to fail; a filter can |
| 71 | now optionally be marked as "required". |
| 72 | |
| 73 | * Options whose names begin with "--no-" (e.g. the "--no-verify" |
| 74 | option of the "git commit" command) can be negated by omitting |
| 75 | "no-" from its name, e.g. "git commit --verify". |
| 76 | |
| 77 | * "git am" learned to pass "-b" option to underlying "git mailinfo", so |
| 78 | that a bracketed string other than "PATCH" at the beginning can be kept. |
| 79 | |
| 80 | * "git clone" learned "--single-branch" option to limit cloning to a |
| 81 | single branch (surprise!); tags that do not point into the history |
| 82 | of the branch are not fetched. |
| 83 | |
| 84 | * "git clone" learned to detach the HEAD in the resulting repository |
| 85 | when the user specifies a tag with "--branch" (e.g., "--branch=v1.0"). |
| 86 | Clone also learned to print the usual "detached HEAD" advice in such |
| 87 | a case, similar to "git checkout v1.0". |
| 88 | |
| 89 | * When showing a patch while ignoring whitespace changes, the context |
| 90 | lines are taken from the postimage, in order to make it easier to |
| 91 | view the output. |
| 92 | |
| 93 | * "git diff --stat" learned to adjust the width of the output on |
| 94 | wider terminals, and give more columns to pathnames as needed. |
| 95 | |
| 96 | * "diff-highlight" filter (in contrib/) was updated to produce more |
| 97 | aesthetically pleasing output. |
| 98 | |
| 99 | * "fsck" learned "--no-dangling" option to omit dangling object |
| 100 | information. |
| 101 | |
| 102 | * "git log -G" and "git log -S" learned to pay attention to the "-i" |
| 103 | option. With "-i", "log -G" ignores the case when finding patch |
| 104 | hunks that introduce or remove a string that matches the given |
| 105 | pattern. Similarly with "-i", "log -S" ignores the case when |
| 106 | finding the commit the given block of text appears or disappears |
| 107 | from the file. |
| 108 | |
| 109 | * "git merge" in an interactive session learned to spawn the editor |
| 110 | by default to let the user edit the auto-generated merge message, |
| 111 | to encourage people to explain their merges better. Legacy scripts |
| 112 | can export GIT_MERGE_AUTOEDIT=no to retain the historical behavior. |
| 113 | Both "git merge" and "git pull" can be given --no-edit from the |
| 114 | command line to accept the auto-generated merge message. |
| 115 | |
| 116 | * The advice message given when the user didn't give enough clue on |
| 117 | what to merge to "git pull" and "git merge" has been updated to |
| 118 | be more concise and easier to understand. |
| 119 | |
| 120 | * "git push" learned the "--prune" option, similar to "git fetch". |
| 121 | |
| 122 | * The whole directory that houses a top-level superproject managed by |
| 123 | "git submodule" can be moved to another place. |
| 124 | |
| 125 | * "git symbolic-ref" learned the "--short" option to abbreviate the |
| 126 | refname it shows unambiguously. |
| 127 | |
| 128 | * "git tag --list" can be given "--points-at <object>" to limit its |
| 129 | output to those that point at the given object. |
| 130 | |
| 131 | * "gitweb" allows intermediate entries in the directory hierarchy |
| 132 | that leads to a project to be clicked, which in turn shows the |
| 133 | list of projects inside that directory. |
| 134 | |
| 135 | * "gitweb" learned to read various pieces of information for the |
| 136 | repositories lazily, instead of reading everything that could be |
| 137 | needed (including the ones that are not necessary for a specific |
| 138 | task). |
| 139 | |
| 140 | * Project search in "gitweb" shows the substring that matched in the |
| 141 | project name and description highlighted. |
| 142 | |
| 143 | * HTTP transport learned to authenticate with a proxy if needed. |
| 144 | |
| 145 | * A new script "diffall" is added to contrib/; it drives an |
| 146 | external tool to perform a directory diff of two Git revisions |
| 147 | in one go, unlike "difftool" that compares one file at a time. |
| 148 | |
| 149 | Foreign Interface |
| 150 | |
| 151 | * Improved handling of views, labels and branches in "git-p4" (in contrib). |
| 152 | |
| 153 | * "git-p4" (in contrib) suffered from unnecessary merge conflicts when |
| 154 | p4 expanded the embedded $RCS$-like keywords; it can be now told to |
| 155 | unexpand them. |
| 156 | |
| 157 | * Some "git-svn" updates. |
| 158 | |
| 159 | * "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and |
| 160 | support incremental imports. |
| 161 | |
| 162 | * "git difftool/mergetool" learned to drive DeltaWalker. |
| 163 | |
| 164 | Performance |
| 165 | |
| 166 | * Unnecessary calls to parse_object() "git upload-pack" makes in |
| 167 | response to "git fetch", have been eliminated, to help performance |
| 168 | in repositories with excessive number of refs. |
| 169 | |
| 170 | Internal Implementation (please report possible regressions) |
| 171 | |
| 172 | * Recursive call chains in "git index-pack" to deal with long delta |
| 173 | chains have been flattened, to reduce the stack footprint. |
| 174 | |
| 175 | * Use of add_extra_ref() API is now gone, to make it possible to |
| 176 | cleanly restructure the overall refs API. |
| 177 | |
| 178 | * The command line parser of "git pack-objects" now uses parse-options |
| 179 | API. |
| 180 | |
| 181 | * The test suite supports the new "test_pause" helper function. |
| 182 | |
| 183 | * Parallel to the test suite, there is a beginning of performance |
| 184 | benchmarking framework. |
| 185 | |
| 186 | * t/Makefile is adjusted to prevent newer versions of GNU make from |
| 187 | running tests in seemingly random order. |
| 188 | |
| 189 | * The code to check if a path points at a file beyond a symbolic link |
| 190 | has been restructured to be thread-safe. |
| 191 | |
| 192 | * When pruning directories that has become empty during "git prune" |
| 193 | and "git prune-packed", call closedir() that iterates over a |
| 194 | directory before rmdir() it. |
| 195 | |
| 196 | Also contains minor documentation updates and code clean-ups. |
| 197 | |
| 198 | |
| 199 | Fixes since v1.7.9 |
| 200 | ------------------ |
| 201 | |
| 202 | Unless otherwise noted, all the fixes since v1.7.9 in the maintenance |
| 203 | releases are contained in this release (see release notes to them for |
| 204 | details). |
| 205 | |
| 206 | * Build with NO_PERL_MAKEMAKER was broken and Git::I18N did not work |
| 207 | with versions of Perl older than 5.8.3. |
| 208 | (merge 5eb660e ab/perl-i18n later to maint). |
| 209 | |
| 210 | * "git tag -s" honored "gpg.program" configuration variable since |
| 211 | 1.7.9, but "git tag -v" and "git verify-tag" didn't. |
| 212 | (merge a2c2506 az/verify-tag-use-gpg-config later to maint). |
| 213 | |
| 214 | * "configure" script learned to take "--with-sane-tool-path" from the |
| 215 | command line to record SANE_TOOL_PATH (used to avoid broken platform |
| 216 | tools in /usr/bin) in config.mak.autogen. This may be useful for |
| 217 | people on Solaris who have saner tools outside /usr/xpg[46]/bin. |
| 218 | |
| 219 | * zsh port of bash completion script needed another workaround. |