| 1 | GIT v1.6.5 Release Notes |
| 2 | ======================== |
| 3 | |
| 4 | In git 1.7.0, which was planned to be the release after 1.6.5, "git |
| 5 | push" into a branch that is currently checked out will be refused by |
| 6 | default. |
| 7 | |
| 8 | You can choose what should happen upon such a push by setting the |
| 9 | configuration variable receive.denyCurrentBranch in the receiving |
| 10 | repository. |
| 11 | |
| 12 | Also, "git push $there :$killed" to delete the branch $killed in a remote |
| 13 | repository $there, when $killed branch is the current branch pointed at by |
| 14 | its HEAD, will be refused by default. |
| 15 | |
| 16 | You can choose what should happen upon such a push by setting the |
| 17 | configuration variable receive.denyDeleteCurrent in the receiving |
| 18 | repository. |
| 19 | |
| 20 | To ease the transition plan, the receiving repository of such a |
| 21 | push running this release will issue a big warning when the |
| 22 | configuration variable is missing. Please refer to: |
| 23 | |
| 24 | https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare |
| 25 | https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ |
| 26 | |
| 27 | for more details on the reason why this change is needed and the |
| 28 | transition plan. |
| 29 | |
| 30 | Updates since v1.6.4 |
| 31 | -------------------- |
| 32 | |
| 33 | (subsystems) |
| 34 | |
| 35 | * various updates to gitk, git-svn and gitweb. |
| 36 | |
| 37 | (portability) |
| 38 | |
| 39 | * more improvements on mingw port. |
| 40 | |
| 41 | * mingw will also give FRSX as the default value for the LESS |
| 42 | environment variable when the user does not have one. |
| 43 | |
| 44 | * initial support to compile git on Windows with MSVC. |
| 45 | |
| 46 | (performance) |
| 47 | |
| 48 | * On major platforms, the system can be compiled to use with Linus's |
| 49 | block-sha1 implementation of the SHA-1 hash algorithm, which |
| 50 | outperforms the default fallback implementation we borrowed from |
| 51 | Mozilla. |
| 52 | |
| 53 | * Unnecessary inefficiency in deepening of a shallow repository has |
| 54 | been removed. |
| 55 | |
| 56 | * "git clone" does not grab objects that it does not need (i.e. |
| 57 | referenced only from refs outside refs/heads and refs/tags |
| 58 | hierarchy) anymore. |
| 59 | |
| 60 | * The "git" main binary used to link with libcurl, which then dragged |
| 61 | in a large number of external libraries. When using basic plumbing |
| 62 | commands in scripts, this unnecessarily slowed things down. We now |
| 63 | implement http/https/ftp transfer as a separate executable as we |
| 64 | used to. |
| 65 | |
| 66 | * "git clone" run locally hardlinks or copies the files in .git/ to |
| 67 | newly created repository. It used to give new mtime to copied files, |
| 68 | but this delayed garbage collection to trigger unnecessarily in the |
| 69 | cloned repository. We now preserve mtime for these files to avoid |
| 70 | this issue. |
| 71 | |
| 72 | (usability, bells and whistles) |
| 73 | |
| 74 | * Human writable date format to various options, e.g. --since=yesterday, |
| 75 | master@{2000.09.17}, are taught to infer some omitted input properly. |
| 76 | |
| 77 | * A few programs gave verbose "advice" messages to help uninitiated |
| 78 | people when issuing error messages. An infrastructure to allow |
| 79 | users to squelch them has been introduced, and a few such messages |
| 80 | can be silenced now. |
| 81 | |
| 82 | * refs/replace/ hierarchy is designed to be usable as a replacement |
| 83 | of the "grafts" mechanism, with the added advantage that it can be |
| 84 | transferred across repositories. |
| 85 | |
| 86 | * "git am" learned to optionally ignore whitespace differences. |
| 87 | |
| 88 | * "git am" handles input e-mail files that has CRLF line endings sensibly. |
| 89 | |
| 90 | * "git am" learned "--scissors" option to allow you to discard early part |
| 91 | of an incoming e-mail. |
| 92 | |
| 93 | * "git archive -o output.zip" works without being told what format to |
| 94 | use with an explicit "--format=zip".option. |
| 95 | |
| 96 | * "git checkout", "git reset" and "git stash" learned to pick and |
| 97 | choose to use selected changes you made, similar to "git add -p". |
| 98 | |
| 99 | * "git clone" learned a "-b" option to pick a HEAD to check out |
| 100 | different from the remote's default branch. |
| 101 | |
| 102 | * "git clone" learned --recursive option. |
| 103 | |
| 104 | * "git clone" from a local repository on a different filesystem used to |
| 105 | copy individual object files without preserving the old timestamp, giving |
| 106 | them extra lifetime in the new repository until they gc'ed. |
| 107 | |
| 108 | * "git commit --dry-run $args" is a new recommended way to ask "what would |
| 109 | happen if I try to commit with these arguments." |
| 110 | |
| 111 | * "git commit --dry-run" and "git status" shows conflicted paths in a |
| 112 | separate section to make them easier to spot during a merge. |
| 113 | |
| 114 | * "git cvsimport" now supports password-protected pserver access even |
| 115 | when the password is not taken from ~/.cvspass file. |
| 116 | |
| 117 | * "git fast-export" learned --no-data option that can be useful when |
| 118 | reordering commits and trees without touching the contents of |
| 119 | blobs. |
| 120 | |
| 121 | * "git fast-import" has a pair of new front-end in contrib/ area. |
| 122 | |
| 123 | * "git init" learned to mkdir/chdir into a directory when given an |
| 124 | extra argument (i.e. "git init this"). |
| 125 | |
| 126 | * "git instaweb" optionally can use mongoose as the web server. |
| 127 | |
| 128 | * "git log --decorate" can optionally be told with --decorate=full to |
| 129 | give the reference name in full. |
| 130 | |
| 131 | * "git merge" issued an unnecessarily scary message when it detected |
| 132 | that the merge may have to touch the path that the user has local |
| 133 | uncommitted changes to. The message has been reworded to make it |
| 134 | clear that the command aborted, without doing any harm. |
| 135 | |
| 136 | * "git push" can be told to be --quiet. |
| 137 | |
| 138 | * "git push" pays attention to url.$base.pushInsteadOf and uses a URL |
| 139 | that is derived from the URL used for fetching. |
| 140 | |
| 141 | * informational output from "git reset" that lists the locally modified |
| 142 | paths is made consistent with that of "git checkout $another_branch". |
| 143 | |
| 144 | * "git submodule" learned to give submodule name to scripts run with |
| 145 | "foreach" subcommand. |
| 146 | |
| 147 | * various subcommands to "git submodule" learned --recursive option. |
| 148 | |
| 149 | * "git submodule summary" learned --files option to compare the work |
| 150 | tree vs the commit bound at submodule path, instead of comparing |
| 151 | the index. |
| 152 | |
| 153 | * "git upload-pack", which is the server side support for "git clone" and |
| 154 | "git fetch", can call a new post-upload-pack hook for statistics purposes. |
| 155 | |
| 156 | (developers) |
| 157 | |
| 158 | * With GIT_TEST_OPTS="--root=/p/a/t/h", tests can be run outside the |
| 159 | source directory; using tmpfs may give faster turnaround. |
| 160 | |
| 161 | * With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can |
| 162 | build for one location, and install into another location to tar it |
| 163 | up. |
| 164 | |
| 165 | Fixes since v1.6.4 |
| 166 | ------------------ |
| 167 | |
| 168 | All of the fixes in v1.6.4.X maintenance series are included in this |
| 169 | release, unless otherwise noted. |