made the pack completely portable and wrote relevent bat files to go with it
This commit is contained in:
1420
gitportable/mingw64/share/doc/connect/manual.html
Normal file
1420
gitportable/mingw64/share/doc/connect/manual.html
Normal file
File diff suppressed because it is too large
Load Diff
625
gitportable/mingw64/share/doc/connect/manual.txt
Normal file
625
gitportable/mingw64/share/doc/connect/manual.txt
Normal file
@@ -0,0 +1,625 @@
|
||||
SSH Proxy Command -- connect.c
|
||||
==============================
|
||||
|
||||
`connect.c` is a simple relaying command to make network connection
|
||||
via SOCKS and https proxy. It is mainly intended to be used as proxy
|
||||
command of OpenSSH. You can make SSH session beyond the firewall with
|
||||
this command,
|
||||
|
||||
Features of `connect.c` are:
|
||||
|
||||
* Supports SOCKS (version 4/4a/5) and https CONNECT method.
|
||||
* Supports NO-AUTH and USERPASS authentication of SOCKS5
|
||||
* You can input password from tty, `ssh-askpass` or environment variable.
|
||||
* Run on UNIX or Windows platform.
|
||||
* You can compile with various C compiler (cc, gcc, Visual C, Borland C. etc.)
|
||||
* Simple and general program independent from OpenSSH.
|
||||
* You can also relay local socket stream instead of standard I/O.
|
||||
|
||||
You can download source code
|
||||
(http://bitbucket.org/gotoh/connect/raw/tip/connect.c[connect.c])
|
||||
on the http://bitbucket.org/gotoh/connect/[project page].
|
||||
|
||||
Pre-compiled binary for MS Windows is also available on
|
||||
http://bitbucket.org/gotoh/connect/downloads/[download page].
|
||||
|
||||
|
||||
What is proxy command?
|
||||
----------------------
|
||||
|
||||
OpenSSH development team decides to stop supporting SOCKS and any
|
||||
other tunneling mechanism. It was aimed to separate complexity to
|
||||
support various mechanism of proxying from core code. And they
|
||||
recommends more flexible mechanism: ProxyCommand option instead.
|
||||
|
||||
Proxy command mechanism is delegation of network stream
|
||||
communication. If ProxyCommand options is specified, SSH invoke
|
||||
specified external command and talk with standard I/O of thid
|
||||
command. Invoked command undertakes network communication with
|
||||
relaying to/from standard input/output including iniitial
|
||||
communication or negotiation for proxying. Thus, ssh can split out
|
||||
proxying code into external command.
|
||||
|
||||
The `connect.c` program was made for this purpose.
|
||||
|
||||
How to Use
|
||||
----------
|
||||
|
||||
Get Source
|
||||
~~~~~~~~~~
|
||||
|
||||
You can get source code from http://bitbucket.org/gotoh/connect/downloads/[project download page].
|
||||
Pre-compiled MS Windows binary is also available there.
|
||||
|
||||
|
||||
Compile and Install
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
In most environment, you can compile `connect.c` simply. On UNIX
|
||||
environment, you can use cc or gcc. On Windows environment, you can
|
||||
use Microsoft Visual C, Borland C or Cygwin gcc.
|
||||
|
||||
UNIX cc:: `cc connect.c -o connect`
|
||||
UNIX gcc:: `gcc connect.c -o connect`
|
||||
Solaris:: `gcc connect.c -o connect -lnsl -lsocket -lresolv`
|
||||
Microsoft Visual C/C++:: `cl connect.c wsock32.lib advapi32.lib`
|
||||
Borland C:: `bcc32 connect.c wsock32.lib advapi32.lib`
|
||||
Cygwin gcc:: `gcc connect.c -o connect`
|
||||
Mac OS/Darwin:: `gcc connect.c -o connect -lresolv`
|
||||
|
||||
|
||||
To install connect command, simply copy compiled binary to directory
|
||||
in your `PATH` (ex. `/usr/local/bin`). Like this:
|
||||
|
||||
----
|
||||
$ cp connect /usr/local/bin
|
||||
----
|
||||
|
||||
Modify your `~/.ssh/config`
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Modify your `~/.ssh/config` file to use connect command as proxy
|
||||
command. For the case of SOCKS server is running on firewall host
|
||||
socks.local.net with port 1080, you can add `ProxyCommand` option in
|
||||
`~/.ssh/config`, like this:
|
||||
|
||||
----
|
||||
Host remote.outside.net
|
||||
ProxyCommand connect -S socks.local.net %h %p
|
||||
----
|
||||
|
||||
`%h` and `%p` will be replaced on invoking proxy command with target
|
||||
hostname and port specified to SSH command.
|
||||
|
||||
If you hate writing many entries of remote hosts, following example
|
||||
may help you.
|
||||
|
||||
----
|
||||
## Outside of the firewall, use connect command with SOCKS conenction.
|
||||
Host *
|
||||
ProxyCommand connect -S socks.local.net %h %p
|
||||
|
||||
## Inside of the firewall, use connect command with direct connection.
|
||||
Host *.local.net
|
||||
ProxyCommand connect %h %p
|
||||
----
|
||||
|
||||
If you want to use http proxy, use `-H` option instead of `-S` option
|
||||
in examle above, like this:
|
||||
|
||||
----
|
||||
## Outside of the firewall, with HTTP proxy
|
||||
Host *
|
||||
ProxyCommand connect -H proxy.local.net:8080 %h %p
|
||||
|
||||
## Inside of the firewall, direct
|
||||
Host *.local.net
|
||||
ProxyCommand connect %h %p
|
||||
----
|
||||
|
||||
|
||||
Use SSH
|
||||
~~~~~~~
|
||||
|
||||
After editing your `~/.ssh/config` file, you are ready to use ssh. You
|
||||
can execute ssh without any special options as if remote host is IP
|
||||
reachable host. Following is an example to execute hostname command on
|
||||
host `remote.outside.net`.
|
||||
|
||||
----
|
||||
local$ ssh remote.outside.net hostname
|
||||
Hello, this is remote.outside.net
|
||||
remote$
|
||||
----
|
||||
|
||||
|
||||
Have trouble?
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
If you have trouble, execute connect command from command line with `-d`
|
||||
option to see what is happened. Some debug message may appear and
|
||||
reports progress. This information may tell you what is wrong. In this
|
||||
example, error has occurred on authentication stage of SOCKS5
|
||||
protocol.
|
||||
|
||||
----
|
||||
$ connect -d -S socks.local.net unknown.remote.outside.net 110
|
||||
DEBUG: relay_method = SOCKS (2)
|
||||
DEBUG: relay_host=socks.local.net
|
||||
DEBUG: relay_port=1080
|
||||
DEBUG: relay_user=gotoh
|
||||
DEBUG: socks_version=5
|
||||
DEBUG: socks_resolve=REMOTE (2)
|
||||
DEBUG: local_type=stdio
|
||||
DEBUG: dest_host=unknown.remote.outside.net
|
||||
DEBUG: dest_port=110
|
||||
DEBUG: Program is $Revision: 1.20 $
|
||||
DEBUG: connecting to xxx.xxx.xxx.xxx:1080
|
||||
DEBUG: begin_socks_relay()
|
||||
DEBUG: atomic_out() [4 bytes]
|
||||
DEBUG: >>> 05 02 00 02
|
||||
DEBUG: atomic_in() [2 bytes]
|
||||
DEBUG: <<< 05 02
|
||||
DEBUG: auth method: USERPASS
|
||||
DEBUG: atomic_out() [some bytes]
|
||||
DEBUG: >>> xx xx xx xx ...
|
||||
DEBUG: atomic_in() [2 bytes]
|
||||
DEBUG: <<< 01 01
|
||||
ERROR: Authentication faield.
|
||||
FATAL: failed to begin relaying via SOCKS.
|
||||
----
|
||||
|
||||
|
||||
More Detail
|
||||
-----------
|
||||
|
||||
Command line usage is here:
|
||||
|
||||
----
|
||||
usage: connect [-dnhs45] [-R resolve] [-p local-port] [-w sec]
|
||||
[-H [user@]proxy-server[:port]]
|
||||
[-S [user@]socks-server[:port]]
|
||||
host port
|
||||
----
|
||||
|
||||
host and port is target hostname and port-number to connect.
|
||||
|
||||
|
||||
`-H` [user@]server[:port]::
|
||||
Specify hostname and port number of http proxy server to
|
||||
relay. If port is omitted, 80 is used.
|
||||
|
||||
`-h`::
|
||||
Use HTTP proxy via proxy server sepcified by environment variable
|
||||
`HTTP_PROXY`.
|
||||
|
||||
`-S` \[_user_@]_server_\[:_port_]::
|
||||
Specify hostname and port number of SOCKS server to
|
||||
relay. Like `-H` option, port number can be omit and default is 1080.
|
||||
|
||||
`-s`::
|
||||
Use SOCKS proxy via SOCKS server sepcified by environment variable
|
||||
`SOCKS5_SERVER`.
|
||||
|
||||
|
||||
`-4`:: Use SOCKS version 4 protocol.
|
||||
This option must be used with `-S`.
|
||||
`-5`:: Use SOCKS version 5 protocol.
|
||||
This option must be used with `-S`.
|
||||
|
||||
`-R` _method_:: The method to resolve hostname. 3 keywords (`local`,
|
||||
`remote`, `both`) or dot-notation IP address is allowed. Keyword
|
||||
both means; _"Try local first, then remote"_. If dot-notation IP
|
||||
address is specified, use this host as nameserver (UNIX
|
||||
only). Default is remote for SOCKS5 or local for others. On SOCKS4
|
||||
protocol, remote resolving method (remote and both) use protocol
|
||||
version 4a.
|
||||
|
||||
`-p` _port_:: Accept on local TCP port and relay it instead of standard input
|
||||
and output. With this option, program will terminate when remote or
|
||||
local TCP session is closed.
|
||||
|
||||
`-w` _timeout_:: Timeout seconds for connecting to remote host.
|
||||
|
||||
`-a` _auth_:: option specifiys user intended authentication methods
|
||||
separated by comma. Currently `userpass` and `none` are
|
||||
supported. Default is userpass. You can also specifying this parameter
|
||||
by the environment variable `SOCKS5_AUTH`.
|
||||
|
||||
`-d`: Run with debug message output. If you fail to connect, use this
|
||||
option to see what is done.
|
||||
|
||||
As additional feature,
|
||||
you can omit port argument when program name is special format
|
||||
containing port number itself like "connect-25". For example:
|
||||
|
||||
----
|
||||
$ ln -s connect connect-25
|
||||
$ ./connect-25 smtphost.outside.net
|
||||
220 smtphost.outside.net ESMTP Sendmail
|
||||
QUIT
|
||||
221 2.0.0 smtphost.remote.net closing connection
|
||||
$
|
||||
----
|
||||
|
||||
This example means that the command name "connect-25" indicates port
|
||||
number 25 so you can omit 2nd argument (and used if specified
|
||||
explicitly).
|
||||
This is usefull for the application which invokes only with hostname
|
||||
argument.
|
||||
|
||||
|
||||
Specifying user name via environment variables
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There are 5 environemnt variables to specify user name without command
|
||||
line option. This mechanism is usefull for the user who using another
|
||||
user name different from system account.
|
||||
|
||||
`SOCKS5_USER`::
|
||||
Used for SOCKS v5 access.
|
||||
`SOCKS4_USER`::
|
||||
Used for SOCKS v4 access.
|
||||
`SOCKS_USER`::
|
||||
Used for SOCKS v5 or v4 access and varaibles above are not defined.
|
||||
`HTTP_PROXY_USER`::
|
||||
Used for HTTP proxy access.
|
||||
`CONNECT_USER`::
|
||||
Used for all type of access if all above are not defined.
|
||||
|
||||
Following table describes how user name is determined. Left most number is order to check. If variable is not defined, check next variable, and so on.
|
||||
|
||||
[width="50%"]
|
||||
|====
|
||||
| | SOCKS v5 | SOCKS v4 | HTTP proxy
|
||||
| 1 | `SOCKS5_USER` | `SOCKS4_USER` .2+^| `HTTP_PROXY_USER`
|
||||
| 2 2+^| `SOCKS_USER`
|
||||
| 3 3+^| `CONNECT_USER`
|
||||
| 4 3+^| (query user name to system)
|
||||
|====
|
||||
|
||||
|
||||
Specifying password via environment variables
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There are 5 environemnt variables to specify password. If you use this
|
||||
feature, please note that it is not secure way.
|
||||
|
||||
`SOCKS5_PASSWD`::
|
||||
Used for SOCKS v5 access. This variables is compatible with NEC SOCKS implementation.
|
||||
`SOCKS5_PASSWORD`::
|
||||
Used for SOCKS v5 access if `SOCKS5_PASSWD` is not defined.
|
||||
`SOCKS_PASSWORD`::
|
||||
Used for SOCKS v5 (or v4) access all above is not defined.
|
||||
`HTTP_PROXY_PASSWORD`::
|
||||
Used for HTTP proxy access.
|
||||
`CONNECT_PASSWORD`::
|
||||
Used for all type of access if all above are not defined.
|
||||
|
||||
Following table describes how password is determined. Left most number
|
||||
is order to check. If variable is not defined, check next variable,
|
||||
and so on. Finally ask to user interactively using external program or
|
||||
tty input.
|
||||
|
||||
[width="50%"]
|
||||
|====
|
||||
| | SOCKS v5 | HTTP proxy
|
||||
| 1 | `SOCKS5_PASSWD` .2+^| `HTTP_PROXY_PASSWORD`
|
||||
| 2 | `SOCKS_PASSWORD`
|
||||
| 3 2+^| `CONNECT_PASSWORD`
|
||||
| 4 2+^| (ask to user interactively)
|
||||
|====
|
||||
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
SOCKS5 authentication
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Only NO-AUTH and USER/PASSWORD authentications are supported. GSSAPI
|
||||
authentication (RFC 1961) and other draft authentications (CHAP, EAP,
|
||||
MAF, etc.) is not supported.
|
||||
|
||||
|
||||
HTTP authentication
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
BASIC authentication is supported but DIGEST authentication is not.
|
||||
|
||||
|
||||
Switching proxy server on event
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
There is no mechanism to switch proxy server regarding to PC
|
||||
environment. This limitation might be bad news for mobile user. Since
|
||||
I do not want to make this program complex, I do not want to support
|
||||
although this feature is already requested. Please advice me if there
|
||||
is good idea of detecting environment to swich and simple way to
|
||||
specify conditioned directive of servers.
|
||||
|
||||
One tricky workaround exists. It is replacing `~/.ssh/config` file by
|
||||
script on ppp up/down.
|
||||
|
||||
There's another example of wrapper script (contributed by Darren
|
||||
Tucker). This script costs executing ifconfig and grep to detect
|
||||
current environment, but it works. Note that you should modify
|
||||
addresses if you use it.
|
||||
|
||||
----
|
||||
#!/bin/sh
|
||||
## ~/bin/myconnect --- Proxy server switching wrapper
|
||||
|
||||
if ifconfig eth0 |grep "inet addr:192\.168\.1" >/dev/null; then
|
||||
opts="-S 192.168.1.1:1080"
|
||||
elif ifconfig eth0 |grep "inet addr:10\." >/dev/null; then
|
||||
opts="-H 10.1.1.1:80"
|
||||
else
|
||||
opts="-s"
|
||||
fi
|
||||
exec /usr/local/bin/connect $opts $@
|
||||
----
|
||||
|
||||
|
||||
Tips
|
||||
----
|
||||
|
||||
Proxying socket connection
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In usual, `connect.c` relays network connection to/from standard
|
||||
input/output. By specifying -p option, however, `connect.c` relays local
|
||||
network stream instead of standard input/output. With this option,
|
||||
connect command waits connection from other program, then start
|
||||
relaying between both network stream.
|
||||
|
||||
This feature may be useful for the program which is hard to SOCKSify.
|
||||
|
||||
|
||||
Use with ssh-askpass command
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
`connect.c` ask you password when authentication is required. If you
|
||||
are using on tty/pty terminal, connect can input from terminal with
|
||||
prompt. But you can also use ssh-askpass program to input password. If
|
||||
you are graphical environment like X Window or MS Windows, and program
|
||||
does not have tty/pty, and environment variable `SSH_ASKPASS` is
|
||||
specified, then `connect.c` invoke command specified by environment
|
||||
variable SSH_ASKPASS to input password. ssh-askpass program might be
|
||||
installed if you are using OpenSSH on UNIX environment. On Windows
|
||||
environment, pre-compiled binary is available from here.
|
||||
|
||||
This feature is limited on window system environment.
|
||||
|
||||
And also useful on Emacs on MS Windows (NT Emacs or Meadow). It is
|
||||
hard to send passphrase to connect command (and also ssh) because
|
||||
external command is invoked on hidden terminal and do I/O with this
|
||||
terminal. Using ssh-askpass avoids this problem.
|
||||
|
||||
|
||||
Use for Network Stream of Emacs
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Although `connect.c` is made for OpenSSH, it is generic and independent
|
||||
from OpenSSH. So we can use this for other purpose. For example, you
|
||||
can use this command in Emacs to open network connection with remote
|
||||
host over the firewall via SOCKS or HTTP proxy without SOCKSifying
|
||||
Emacs itself.
|
||||
|
||||
There is sample code:
|
||||
http://bitbucket.org/gotoh/connect/src/tip/relay.el
|
||||
|
||||
With this code, you can use `relay-open-network-stream` function instead
|
||||
of `open-network-stream` to make network connection. See top comments of
|
||||
the source for more detail.
|
||||
|
||||
|
||||
Remote resolver
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
If you are SOCKS4 user on UNIX environment, you might want specify
|
||||
nameserver to resolve remote hostname. You can do it specifying `-R`
|
||||
option followed by IP address of resolver.
|
||||
|
||||
|
||||
Hopping Connection via SSH
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Conbination of ssh and connect command have more interesting
|
||||
usage. Following command makes indirect connection to host2:port from
|
||||
your current host via host1.
|
||||
|
||||
----
|
||||
$ ssh host1 connect host2 port
|
||||
----
|
||||
|
||||
This method is useful for the situations like:
|
||||
|
||||
* You are outside of organizasion now, but you want to access an
|
||||
internal host barriered by firewall.
|
||||
|
||||
* You want to use some service which is allowed only from some limited hosts.
|
||||
|
||||
For example, I want to use local NetNews service in my office from
|
||||
home. I cannot make NNTP session directly because NNTP host is
|
||||
barriered by firewall. Fortunately, I have ssh account on internal
|
||||
host and allowed using SOCKS5 on firewall from outside. So I use
|
||||
following command to connect to NNTP service.
|
||||
|
||||
----
|
||||
$ ssh host1 connect news 119
|
||||
200 news.my-office.com InterNetNews NNRP server INN 2.3.2 ready (posting ok).
|
||||
quit
|
||||
205 .
|
||||
$
|
||||
----
|
||||
|
||||
By combinating hopping connection and relay.el, I can read NetNews
|
||||
using http://www.gohome.org/wl/[Wanderlust] on Emacs at home.
|
||||
|
||||
----
|
||||
|
|
||||
External (internet) | Internal (office)
|
||||
|
|
||||
+------+ +----------+ +-------+ +-----------+
|
||||
| HOME | | firewall | | host1 | | NNTP host |
|
||||
+------+ +----------+ +-------+ +-----------+
|
||||
emacs <-------------- ssh ---------------> sshd <-- connect --> nntpd
|
||||
<-- connect --> socksd <-- SOCKS -->
|
||||
----
|
||||
|
||||
As an advanced example, you can use SSH hopping as fetchmail's plug-in
|
||||
program to access via secure tunnel. This method requires that connect
|
||||
program is insatalled on remote host. There's example of .fetchmailrc
|
||||
bellow. When fetchmail access to mail-server, you will login to remote
|
||||
host using SSH then execute connect program on remote host to relay
|
||||
conversation with pop server. Thus fetchmail can retrieve mails in
|
||||
secure.
|
||||
|
||||
----
|
||||
poll mail-server
|
||||
protocol pop3
|
||||
plugin "ssh %h connect localhost %p"
|
||||
username "username"
|
||||
password "password"
|
||||
----
|
||||
|
||||
|
||||
Break The More Restricted Wall
|
||||
------------------------------
|
||||
|
||||
If firewall does not provide SOCKS nor HTTPS other than port 443, you
|
||||
cannot break the wall in usual way. But if you have you own host which
|
||||
is accessible from internet, you can make ssh connection to your own
|
||||
host by configuring sshd as waiting at port 443 instead of standard
|
||||
22. By this, you can login to your own host via port 443. Once you
|
||||
have logged-in to extenal home machine, you can execute connect as
|
||||
second hop to make connection from your own host to final target host,
|
||||
like this:
|
||||
|
||||
----
|
||||
internal$ cat ~/.ssh/config
|
||||
Host home
|
||||
ProxyCommand connect -H firewall:8080 %h 443
|
||||
|
||||
Host server # internal
|
||||
ProxyCommand ssh home connect %h %p
|
||||
|
||||
internal$ ssh home
|
||||
You are logged in to home!
|
||||
home# exit
|
||||
internal$ ssh server
|
||||
You are logged in to server!
|
||||
server# exit
|
||||
internal$
|
||||
----
|
||||
|
||||
This way is similar to "Hopping connection via SSH" except configuring
|
||||
outer sshd as waiting at port 443 (https). This means that you have a
|
||||
capability to break the strongly restricted wall if you have own host
|
||||
out side of the wall.
|
||||
|
||||
----
|
||||
|
|
||||
Internal (office) | External (internet)
|
||||
|
|
||||
+--------+ +----------+ +------+ +--------+
|
||||
| office | | firewall | | home | | server |
|
||||
+--------+ +----------+ +------+ +--------+
|
||||
<------------------ ssh --------------------->sshd:443
|
||||
<-- connect --> http-proxy <-- https:443 --> any
|
||||
connect <-- tcp --> port
|
||||
----
|
||||
|
||||
NOTE: If you wanna use this, you should give up hosting https
|
||||
service at port 443 on you external host 'home'.
|
||||
|
||||
|
||||
F.Y.I.
|
||||
------
|
||||
|
||||
Difference between SOCKS versions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
SOCKS version 4 is first popular implementation which is documented
|
||||
http://www.socks.nec.com/protocol/socks4.protocol[here]. Since this
|
||||
protocol provide IP address based requesting, client program should
|
||||
resolve name of outer host by itself. Version 4a (documented
|
||||
http://www.socks.nec.com/protocol/socks4a.protocol[here]) is
|
||||
enhanced to allow request by hostname instead of IP address.
|
||||
|
||||
SOCKS version 5 is re-designed protocol stands on experience of
|
||||
version 4 and 4a. There is no compativility with previous
|
||||
versions. Instead, there's some improvement: IPv6 support, request by
|
||||
hostname, UDP proxying, etc.
|
||||
|
||||
|
||||
Configuration to use HTTPS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Many http proxy servers implementation supports https CONNECT method
|
||||
(SLL). You might add configuration to allow using https. For the
|
||||
example of http://www.delegate.org/delegate/[DeleGate] (DeleGate is a
|
||||
multi-purpose application level gateway, or a proxy server) , you
|
||||
should add https to REMITTABLE parameter to allow HTTP-Proxy like
|
||||
this:
|
||||
|
||||
----
|
||||
delegated -Pxxxx ...... REMITTABLE='+,https' ...
|
||||
----
|
||||
|
||||
For the case of Squid, you should allow target ports via https by ACL,
|
||||
and so on.
|
||||
|
||||
|
||||
SOCKS5 Servers
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
http://www.socks.nec.com/refsoftware.html[NEC SOCKS Reference Implementation]::
|
||||
Reference implementation of SOKCS server and library.
|
||||
|
||||
http://www.inet.no/dante/index.html[Dante]::
|
||||
Dante is free implementation of SOKCS server and library. Many
|
||||
enhancements and modulalized.
|
||||
|
||||
http://www.delegate.org/delegate/[DeleGate]::
|
||||
DeleGate is multi function proxy service provider. DeleGate 5.x.x
|
||||
or earlier can be SOCKS4 server, and 6.x.x can be SOCKS5 and
|
||||
SOCKS4 server. and 7.7.0 or later can be SOCKS5 and SOCKS4a
|
||||
server.
|
||||
|
||||
|
||||
Specifications
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
http://www.socks.nec.com/protocol/socks4.protocol[socks4.protocol.txt]::
|
||||
SOCKS: A protocol for TCP proxy across firewalls
|
||||
http://www.socks.nec.com/protocol/socks4a.protocol[socks4a.protocol.txt]::
|
||||
SOCKS 4A: A Simple Extension to SOCKS 4 Protocol
|
||||
http://www.socks.nec.com/rfc/rfc1928.txt[RFC 1928]::
|
||||
SOCKS Protocol Version 5
|
||||
http://www.socks.nec.com/rfc/rfc1929.txt[RFC 1929]::
|
||||
Username/Password Authentication for SOCKS V5
|
||||
http://www.ietf.org/rfc/rfc2616.txt[RFC 2616]::
|
||||
Hypertext Transfer Protocol -- HTTP/1.1
|
||||
http://www.ietf.org/rfc/rfc2617.txt[RFC 2617]::
|
||||
HTTP Authentication: Basic and Digest Access Authentication
|
||||
|
||||
|
||||
Related Links
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* http://www.openssh.org/[OpenSSH Home]
|
||||
* http://www.ssh.com/[Proprietary SSH]
|
||||
* http://www.taiyo.co.jp/~gotoh/ssh/openssh-socks.html[Using OpenSSH through a SOCKS compatible PROXY on your LAN] (J. Grant)
|
||||
|
||||
|
||||
Similars
|
||||
~~~~~~~~
|
||||
|
||||
http://proxytunnel.sourceforge.net/[Proxy Tunnel]:: Proxying command using https CONNECT.
|
||||
http://www.snurgle.org/~griffon/ssh-https-tunnel[stunnel]:: Proxy through an https tunnel (Perl script)
|
||||
|
||||
|
||||
// This document is rescured from the document
|
||||
// in the internet web cache.
|
||||
// Original date of this document is 2004-09-06.
|
||||
10
gitportable/mingw64/share/doc/expat/AUTHORS
Normal file
10
gitportable/mingw64/share/doc/expat/AUTHORS
Normal file
@@ -0,0 +1,10 @@
|
||||
Expat is brought to you by:
|
||||
|
||||
Clark Cooper
|
||||
Fred L. Drake, Jr.
|
||||
Greg Stein
|
||||
James Clark
|
||||
Karl Waclawek
|
||||
Rhodri James
|
||||
Sebastian Pipping
|
||||
Steven Solie
|
||||
1634
gitportable/mingw64/share/doc/expat/changelog
Normal file
1634
gitportable/mingw64/share/doc/expat/changelog
Normal file
File diff suppressed because it is too large
Load Diff
198
gitportable/mingw64/share/doc/git-doc/BreakingChanges.adoc
Normal file
198
gitportable/mingw64/share/doc/git-doc/BreakingChanges.adoc
Normal file
@@ -0,0 +1,198 @@
|
||||
= Upcoming breaking changes
|
||||
|
||||
The Git project aims to ensure backwards compatibility to the best extent
|
||||
possible. Minor releases will not break backwards compatibility unless there is
|
||||
a very strong reason to do so, like for example a security vulnerability.
|
||||
|
||||
Regardless of that, due to the age of the Git project, it is only natural to
|
||||
accumulate a backlog of backwards-incompatible changes that will eventually be
|
||||
required to keep the project aligned with a changing world. These changes fall
|
||||
into several categories:
|
||||
|
||||
* Changes to long established defaults.
|
||||
* Concepts that have been replaced with a superior design.
|
||||
* Concepts, commands, configuration or options that have been lacking in major
|
||||
ways and that cannot be fixed and which will thus be removed without any
|
||||
replacement.
|
||||
|
||||
Explicitly not included in this list are fixes to minor bugs that may cause a
|
||||
change in user-visible behavior.
|
||||
|
||||
The Git project irregularly releases breaking versions that deliberately break
|
||||
backwards compatibility with older versions. This is done to ensure that Git
|
||||
remains relevant, safe and maintainable going forward. The release cadence of
|
||||
breaking versions is typically measured in multiple years. We had the following
|
||||
major breaking releases in the past:
|
||||
|
||||
* Git 1.6.0, released in August 2008.
|
||||
* Git 2.0, released in May 2014.
|
||||
|
||||
We use <major>.<minor> release numbers these days, starting from Git 2.0. For
|
||||
future releases, our plan is to increment <major> in the release number when we
|
||||
make the next breaking release. Before Git 2.0, the release numbers were
|
||||
1.<major>.<minor> with the intention to increment <major> for "usual" breaking
|
||||
releases, reserving the jump to Git 2.0 for really large backward-compatibility
|
||||
breaking changes.
|
||||
|
||||
The intent of this document is to track upcoming deprecations for future
|
||||
breaking releases. Furthermore, this document also tracks what will _not_ be
|
||||
deprecated. This is done such that the outcome of discussions document both
|
||||
when the discussion favors deprecation, but also when it rejects a deprecation.
|
||||
|
||||
Items should have a clear summary of the reasons why we do or do not want to
|
||||
make the described change that can be easily understood without having to read
|
||||
the mailing list discussions. If there are alternatives to the changed feature,
|
||||
those alternatives should be pointed out to our users.
|
||||
|
||||
All items should be accompanied by references to relevant mailing list threads
|
||||
where the deprecation was discussed. These references use message-IDs, which
|
||||
can visited via
|
||||
|
||||
https://lore.kernel.org/git/$message_id/
|
||||
|
||||
to see the message and its surrounding discussion. Such a reference is there to
|
||||
make it easier for you to find how the project reached consensus on the
|
||||
described item back then.
|
||||
|
||||
This is a living document as the environment surrounding the project changes
|
||||
over time. If circumstances change, an earlier decision to deprecate or change
|
||||
something may need to be revisited from time to time. So do not take items on
|
||||
this list to mean "it is settled, do not waste our time bringing it up again".
|
||||
|
||||
== Procedure
|
||||
|
||||
Discussing the desire to make breaking changes, declaring that breaking
|
||||
changes are made at a certain version boundary, and recording these
|
||||
decisions in this document, are necessary but not sufficient.
|
||||
Because such changes are expected to be numerous, and the design and
|
||||
implementation of them are expected to span over time, they have to
|
||||
be deployable trivially at such a version boundary, prepared over long
|
||||
time.
|
||||
|
||||
The breaking changes MUST be guarded with the a compile-time switch,
|
||||
WITH_BREAKING_CHANGES, to help this process. When built with it,
|
||||
the resulting Git binary together with its documentation would
|
||||
behave as if these breaking changes slated for the next big version
|
||||
boundary are already in effect. We also have a CI job to exercise
|
||||
the work-in-progress version of Git with these breaking changes.
|
||||
|
||||
|
||||
== Git 3.0
|
||||
|
||||
The following subsections document upcoming breaking changes for Git 3.0. There
|
||||
is no planned release date for this breaking version yet.
|
||||
|
||||
Proposed changes and removals only include items which are "ready" to be done.
|
||||
In other words, this is not supposed to be a wishlist of features that should
|
||||
be changed to or replaced in case the alternative was implemented already.
|
||||
|
||||
=== Changes
|
||||
|
||||
* The default hash function for new repositories will be changed from "sha1"
|
||||
to "sha256". SHA-1 has been deprecated by NIST in 2011 and is nowadays
|
||||
recommended against in FIPS 140-2 and similar certifications. Furthermore,
|
||||
there are practical attacks on SHA-1 that weaken its cryptographic properties:
|
||||
+
|
||||
** The SHAppening (2015). The first demonstration of a practical attack
|
||||
against SHA-1 with 2^57 operations.
|
||||
** SHAttered (2017). Generation of two valid PDF files with 2^63 operations.
|
||||
** Birthday-Near-Collision (2019). This attack allows for chosen prefix
|
||||
attacks with 2^68 operations.
|
||||
** Shambles (2020). This attack allows for chosen prefix attacks with 2^63
|
||||
operations.
|
||||
+
|
||||
While we have protections in place against known attacks, it is expected
|
||||
that more attacks against SHA-1 will be found by future research. Paired
|
||||
with the ever-growing capability of hardware, it is only a matter of time
|
||||
before SHA-1 will be considered broken completely. We want to be prepared
|
||||
and will thus change the default hash algorithm to "sha256" for newly
|
||||
initialized repositories.
|
||||
+
|
||||
An important requirement for this change is that the ecosystem is ready to
|
||||
support the "sha256" object format. This includes popular Git libraries,
|
||||
applications and forges.
|
||||
+
|
||||
There is no plan to deprecate the "sha1" object format at this point in time.
|
||||
+
|
||||
Cf. <2f5de416-04ba-c23d-1e0b-83bb655829a7@zombino.com>,
|
||||
<20170223155046.e7nxivfwqqoprsqj@LykOS.localdomain>,
|
||||
<CA+EOSBncr=4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@mail.gmail.com>.
|
||||
|
||||
=== Removals
|
||||
|
||||
* Support for grafting commits has long been superseded by git-replace(1).
|
||||
Grafts are inferior to replacement refs:
|
||||
+
|
||||
** Grafts are a local-only mechanism and cannot be shared across
|
||||
repositories.
|
||||
** Grafts can lead to hard-to-diagnose problems when transferring objects
|
||||
between repositories.
|
||||
+
|
||||
The grafting mechanism has been marked as outdated since e650d0643b (docs: mark
|
||||
info/grafts as outdated, 2014-03-05) and will be removed.
|
||||
+
|
||||
Cf. <20140304174806.GA11561@sigill.intra.peff.net>.
|
||||
|
||||
* The git-pack-redundant(1) command can be used to remove redundant pack files.
|
||||
The subcommand is unusably slow and the reason why nobody reports it as a
|
||||
performance bug is suspected to be the absence of users. We have nominated
|
||||
the command for removal and have started to emit a user-visible warning in
|
||||
c3b58472be (pack-redundant: gauge the usage before proposing its removal,
|
||||
2020-08-25) whenever the command is executed.
|
||||
+
|
||||
So far there was a single complaint about somebody still using the command, but
|
||||
that complaint did not cause us to reverse course. On the contrary, we have
|
||||
doubled down on the deprecation and starting with 4406522b76 (pack-redundant:
|
||||
escalate deprecation warning to an error, 2023-03-23), the command dies unless
|
||||
the user passes the `--i-still-use-this` option.
|
||||
+
|
||||
There have not been any subsequent complaints, so this command will finally be
|
||||
removed.
|
||||
+
|
||||
Cf. <xmqq1rjuz6n3.fsf_-_@gitster.c.googlers.com>,
|
||||
<CAKvOHKAFXQwt4D8yUCCkf_TQL79mYaJ=KAKhtpDNTvHJFuX1NA@mail.gmail.com>,
|
||||
<20230323204047.GA9290@coredump.intra.peff.net>,
|
||||
|
||||
* Support for storing shorthands for remote URLs in "$GIT_COMMON_DIR/branches/"
|
||||
and "$GIT_COMMON_DIR/remotes/" has been long superseded by storing remotes in
|
||||
the repository configuration.
|
||||
+
|
||||
The mechanism has originally been introduced in f170e4b39d ([PATCH] fetch/pull:
|
||||
short-hand notation for remote repositories., 2005-07-16) and was superseded by
|
||||
6687f8fea2 ([PATCH] Use .git/remote/origin, not .git/branches/origin.,
|
||||
2005-08-20), where we switched from ".git/branches/" to ".git/remotes/". That
|
||||
commit already mentions an upcoming deprecation of the ".git/branches/"
|
||||
directory, and starting with a1d4aa7424 (Add repository-layout document.,
|
||||
2005-09-01) we have also marked this layout as deprecated. Eventually we also
|
||||
started to migrate away from ".git/remotes/" in favor of config-based remotes,
|
||||
and we have marked the directory as legacy in 3d3d282146 (Documentation:
|
||||
Grammar correction, wording fixes and cleanup, 2011-08-23)
|
||||
+
|
||||
As our documentation mentions, these directories are unlikely to be used in
|
||||
modern repositories and most users aren't even aware of these mechanisms. They
|
||||
have been deprecated for almost 20 years and 14 years respectively, and we are
|
||||
not aware of any active users that have complained about this deprecation.
|
||||
Furthermore, the ".git/branches/" directory is nowadays misleadingly named and
|
||||
may cause confusion as "branches" are almost exclusively used in the context of
|
||||
references.
|
||||
+
|
||||
These features will be removed.
|
||||
|
||||
== Superseded features that will not be deprecated
|
||||
|
||||
Some features have gained newer replacements that aim to improve the design in
|
||||
certain ways. The fact that there is a replacement does not automatically mean
|
||||
that the old way of doing things will eventually be removed. This section tracks
|
||||
those features with newer alternatives.
|
||||
|
||||
* The features git-checkout(1) offers are covered by the pair of commands
|
||||
git-restore(1) and git-switch(1). Because the use of git-checkout(1) is still
|
||||
widespread, and it is not expected that this will change anytime soon, all
|
||||
three commands will stay.
|
||||
+
|
||||
This decision may get revisited in case we ever figure out that there are
|
||||
almost no users of any of the commands anymore.
|
||||
+
|
||||
Cf. <xmqqttjazwwa.fsf@gitster.g>,
|
||||
<xmqqleeubork.fsf@gitster.g>,
|
||||
<112b6568912a6de6672bf5592c3a718e@manjaro.org>.
|
||||
74
gitportable/mingw64/share/doc/git-doc/DecisionMaking.adoc
Normal file
74
gitportable/mingw64/share/doc/git-doc/DecisionMaking.adoc
Normal file
@@ -0,0 +1,74 @@
|
||||
Decision-Making Process in the Git Project
|
||||
==========================================
|
||||
|
||||
Introduction
|
||||
------------
|
||||
This document describes the current decision-making process in the Git
|
||||
project. It is a descriptive rather than prescriptive doc; that is, we want to
|
||||
describe how things work in practice rather than explicitly recommending any
|
||||
particular process or changes to the current process.
|
||||
|
||||
Here we document how the project makes decisions for discussions
|
||||
(with or without patches), in scale larger than an individual patch
|
||||
series (which is fully covered by the SubmittingPatches document).
|
||||
|
||||
|
||||
Larger Discussions (with patches)
|
||||
---------------------------------
|
||||
As with discussions on an individual patch series, starting a larger-scale
|
||||
discussion often begins by sending a patch or series to the list. This might
|
||||
take the form of an initial design doc, with implementation following in later
|
||||
iterations of the series (for example,
|
||||
link:https://lore.kernel.org/git/0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com/[adding unit tests] or
|
||||
link:https://lore.kernel.org/git/20200420235310.94493-1-emilyshaffer@google.com/[config-based hooks]),
|
||||
or it might include a full implementation from the beginning.
|
||||
In either case, discussion progresses the same way for an individual patch series,
|
||||
until consensus is reached or the topic is dropped.
|
||||
|
||||
|
||||
Larger Discussions (without patches)
|
||||
------------------------------------
|
||||
Occasionally, larger discussions might occur without an associated patch series.
|
||||
These may be very large-scale technical decisions that are beyond the scope of
|
||||
even a single large patch series, or they may be more open-ended,
|
||||
policy-oriented discussions (examples:
|
||||
link:https://lore.kernel.org/git/ZZ77NQkSuiRxRDwt@nand.local/[introducing Rust]
|
||||
or link:https://lore.kernel.org/git/YHofmWcIAidkvJiD@google.com/[improving submodule UX]).
|
||||
In either case, discussion progresses as described above for general patch series.
|
||||
|
||||
For larger discussions without a patch series or other concrete implementation,
|
||||
it may be hard to judge when consensus has been reached, as there are not any
|
||||
official guidelines. If discussion stalls at this point, it may be helpful to
|
||||
restart discussion with an RFC patch series (such as a partial, unfinished
|
||||
implementation or proof of concept) that can be more easily debated.
|
||||
|
||||
When consensus is reached that it is a good idea, the original
|
||||
proposer is expected to coordinate the effort to make it happen,
|
||||
with help from others who were involved in the discussion, as
|
||||
needed.
|
||||
|
||||
For decisions that require code changes, it is often the case that the original
|
||||
proposer will follow up with a patch series, although it is also common for
|
||||
other interested parties to provide an implementation (or parts of the
|
||||
implementation, for very large changes).
|
||||
|
||||
For non-technical decisions such as community norms or processes, it is up to
|
||||
the community as a whole to implement and sustain agreed-upon changes.
|
||||
The project leadership committee (PLC) may help the implementation of
|
||||
policy decisions.
|
||||
|
||||
|
||||
Other Discussion Venues
|
||||
-----------------------
|
||||
Occasionally decision proposals are presented off-list, e.g. at the semi-regular
|
||||
Contributors' Summit. While higher-bandwidth face-to-face discussion is often
|
||||
useful for quickly reaching consensus among attendees, generally we expect to
|
||||
summarize the discussion in notes that can later be presented on-list. For an
|
||||
example, see the thread
|
||||
link:https://lore.kernel.org/git/AC2EB721-2979-43FD-922D-C5076A57F24B@jramsay.com.au/[Notes
|
||||
from Git Contributor Summit, Los Angeles (April 5, 2020)] by James Ramsay.
|
||||
|
||||
We prefer that "official" discussion happens on the list so that the full
|
||||
community has opportunity to engage in discussion. This also means that the
|
||||
mailing list archives contain a more-or-less complete history of project
|
||||
discussions and decisions.
|
||||
545
gitportable/mingw64/share/doc/git-doc/DecisionMaking.html
Normal file
545
gitportable/mingw64/share/doc/git-doc/DecisionMaking.html
Normal file
@@ -0,0 +1,545 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<meta name="generator" content="Asciidoctor 2.0.23"/>
|
||||
<title>Decision-Making Process in the Git Project</title>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
|
||||
<style>
|
||||
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
|
||||
/* Uncomment the following line when using as a custom stylesheet */
|
||||
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
|
||||
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
|
||||
a{background:none}
|
||||
a:focus{outline:thin dotted}
|
||||
a:active,a:hover{outline:0}
|
||||
h1{font-size:2em;margin:.67em 0}
|
||||
b,strong{font-weight:bold}
|
||||
abbr{font-size:.9em}
|
||||
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
|
||||
dfn{font-style:italic}
|
||||
hr{height:0}
|
||||
mark{background:#ff0;color:#000}
|
||||
code,kbd,pre,samp{font-family:monospace;font-size:1em}
|
||||
pre{white-space:pre-wrap}
|
||||
q{quotes:"\201C" "\201D" "\2018" "\2019"}
|
||||
small{font-size:80%}
|
||||
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
|
||||
sup{top:-.5em}
|
||||
sub{bottom:-.25em}
|
||||
img{border:0}
|
||||
svg:not(:root){overflow:hidden}
|
||||
figure{margin:0}
|
||||
audio,video{display:inline-block}
|
||||
audio:not([controls]){display:none;height:0}
|
||||
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
|
||||
legend{border:0;padding:0}
|
||||
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
|
||||
button,input{line-height:normal}
|
||||
button,select{text-transform:none}
|
||||
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
|
||||
button[disabled],html input[disabled]{cursor:default}
|
||||
input[type=checkbox],input[type=radio]{padding:0}
|
||||
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
|
||||
textarea{overflow:auto;vertical-align:top}
|
||||
table{border-collapse:collapse;border-spacing:0}
|
||||
*,::before,::after{box-sizing:border-box}
|
||||
html,body{font-size:100%}
|
||||
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
|
||||
a:hover{cursor:pointer}
|
||||
img,object,embed{max-width:100%;height:auto}
|
||||
object,embed{height:100%}
|
||||
img{-ms-interpolation-mode:bicubic}
|
||||
.left{float:left!important}
|
||||
.right{float:right!important}
|
||||
.text-left{text-align:left!important}
|
||||
.text-right{text-align:right!important}
|
||||
.text-center{text-align:center!important}
|
||||
.text-justify{text-align:justify!important}
|
||||
.hide{display:none}
|
||||
img,object,svg{display:inline-block;vertical-align:middle}
|
||||
textarea{height:auto;min-height:50px}
|
||||
select{width:100%}
|
||||
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
|
||||
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
|
||||
a{color:#2156a5;text-decoration:underline;line-height:inherit}
|
||||
a:hover,a:focus{color:#1d4b8f}
|
||||
a img{border:0}
|
||||
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
|
||||
p aside{font-size:.875em;line-height:1.35;font-style:italic}
|
||||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
|
||||
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
|
||||
h1{font-size:2.125em}
|
||||
h2{font-size:1.6875em}
|
||||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
|
||||
h4,h5{font-size:1.125em}
|
||||
h6{font-size:1em}
|
||||
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
|
||||
em,i{font-style:italic;line-height:inherit}
|
||||
strong,b{font-weight:bold;line-height:inherit}
|
||||
small{font-size:60%;line-height:inherit}
|
||||
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
|
||||
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
|
||||
ul,ol{margin-left:1.5em}
|
||||
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
|
||||
ul.circle{list-style-type:circle}
|
||||
ul.disc{list-style-type:disc}
|
||||
ul.square{list-style-type:square}
|
||||
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
|
||||
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
|
||||
dl dt{margin-bottom:.3125em;font-weight:bold}
|
||||
dl dd{margin-bottom:1.25em}
|
||||
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
|
||||
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
|
||||
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
|
||||
h1{font-size:2.75em}
|
||||
h2{font-size:2.3125em}
|
||||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
|
||||
h4{font-size:1.4375em}}
|
||||
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
|
||||
table thead,table tfoot{background:#f7f8f7}
|
||||
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
|
||||
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
|
||||
table tr.even,table tr.alt{background:#f8f8f7}
|
||||
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
|
||||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
|
||||
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
|
||||
.center{margin-left:auto;margin-right:auto}
|
||||
.stretch{width:100%}
|
||||
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
|
||||
.clearfix::after,.float-group::after{clear:both}
|
||||
:not(pre).nobreak{word-wrap:normal}
|
||||
:not(pre).nowrap{white-space:nowrap}
|
||||
:not(pre).pre-wrap{white-space:pre-wrap}
|
||||
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
|
||||
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
|
||||
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
|
||||
pre>code{display:block}
|
||||
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
|
||||
em em{font-style:normal}
|
||||
strong strong{font-weight:400}
|
||||
.keyseq{color:rgba(51,51,51,.8)}
|
||||
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
|
||||
.keyseq kbd:first-child{margin-left:0}
|
||||
.keyseq kbd:last-child{margin-right:0}
|
||||
.menuseq,.menuref{color:#000}
|
||||
.menuseq b:not(.caret),.menuref{font-weight:inherit}
|
||||
.menuseq{word-spacing:-.02em}
|
||||
.menuseq b.caret{font-size:1.25em;line-height:.8}
|
||||
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
|
||||
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
|
||||
b.button::before{content:"[";padding:0 3px 0 2px}
|
||||
b.button::after{content:"]";padding:0 2px 0 3px}
|
||||
p a>code:hover{color:rgba(0,0,0,.9)}
|
||||
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
|
||||
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
|
||||
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
|
||||
#content{margin-top:1.25em}
|
||||
#content::before{content:none}
|
||||
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
|
||||
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
|
||||
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
|
||||
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
|
||||
#header .details span:first-child{margin-left:-.125em}
|
||||
#header .details span.email a{color:rgba(0,0,0,.85)}
|
||||
#header .details br{display:none}
|
||||
#header .details br+span::before{content:"\00a0\2013\00a0"}
|
||||
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
|
||||
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
|
||||
#header #revnumber{text-transform:capitalize}
|
||||
#header #revnumber::after{content:"\00a0"}
|
||||
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
|
||||
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
|
||||
#toc>ul{margin-left:.125em}
|
||||
#toc ul.sectlevel0>li>a{font-style:italic}
|
||||
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
|
||||
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
|
||||
#toc li{line-height:1.3334;margin-top:.3334em}
|
||||
#toc a{text-decoration:none}
|
||||
#toc a:active{text-decoration:underline}
|
||||
#toctitle{color:#7a2518;font-size:1.2em}
|
||||
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
|
||||
body.toc2{padding-left:15em;padding-right:0}
|
||||
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
|
||||
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
|
||||
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
|
||||
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
|
||||
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
|
||||
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
|
||||
body.toc2.toc-right{padding-left:0;padding-right:15em}
|
||||
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
|
||||
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
|
||||
#toc.toc2{width:20em}
|
||||
#toc.toc2 #toctitle{font-size:1.375em}
|
||||
#toc.toc2>ul{font-size:.95em}
|
||||
#toc.toc2 ul ul{padding-left:1.25em}
|
||||
body.toc2.toc-right{padding-left:0;padding-right:20em}}
|
||||
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
|
||||
#content #toc>:first-child{margin-top:0}
|
||||
#content #toc>:last-child{margin-bottom:0}
|
||||
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
|
||||
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
|
||||
#content{margin-bottom:.625em}
|
||||
.sect1{padding-bottom:.625em}
|
||||
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
|
||||
.sect1{padding-bottom:1.25em}}
|
||||
.sect1:last-child{padding-bottom:0}
|
||||
.sect1+.sect1{border-top:1px solid #e7e7e9}
|
||||
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
|
||||
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
|
||||
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
|
||||
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
|
||||
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
|
||||
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
|
||||
details{margin-left:1.25rem}
|
||||
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
|
||||
details>summary::-webkit-details-marker{display:none}
|
||||
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
|
||||
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
|
||||
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
|
||||
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
|
||||
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
|
||||
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
|
||||
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
|
||||
.admonitionblock>table td.icon{text-align:center;width:80px}
|
||||
.admonitionblock>table td.icon img{max-width:none}
|
||||
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
|
||||
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
|
||||
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
|
||||
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
|
||||
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
|
||||
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
|
||||
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
|
||||
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
|
||||
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
|
||||
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
|
||||
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
|
||||
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
|
||||
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
|
||||
.listingblock>.content{position:relative}
|
||||
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
|
||||
.listingblock:hover code[data-lang]::before{display:block}
|
||||
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
|
||||
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
|
||||
.listingblock pre.highlightjs{padding:0}
|
||||
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
|
||||
.listingblock pre.prettyprint{border-width:0}
|
||||
.prettyprint{background:#f7f7f8}
|
||||
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
|
||||
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
|
||||
pre.prettyprint li code[data-lang]::before{opacity:1}
|
||||
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
|
||||
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
|
||||
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
|
||||
table.linenotable td.code{padding-left:.75em}
|
||||
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
||||
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
|
||||
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
|
||||
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
|
||||
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
|
||||
.quoteblock blockquote{margin:0;padding:0;border:0}
|
||||
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
|
||||
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
|
||||
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
|
||||
.verseblock{margin:0 1em 1.25em}
|
||||
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
|
||||
.verseblock pre strong{font-weight:400}
|
||||
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
|
||||
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
|
||||
.quoteblock .attribution br,.verseblock .attribution br{display:none}
|
||||
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
|
||||
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
|
||||
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
|
||||
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
|
||||
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
|
||||
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
|
||||
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
|
||||
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
|
||||
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
|
||||
p.tableblock:last-child{margin-bottom:0}
|
||||
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
|
||||
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
|
||||
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
|
||||
table.grid-all>*>tr>*{border-width:1px}
|
||||
table.grid-cols>*>tr>*{border-width:0 1px}
|
||||
table.grid-rows>*>tr>*{border-width:1px 0}
|
||||
table.frame-all{border-width:1px}
|
||||
table.frame-ends{border-width:1px 0}
|
||||
table.frame-sides{border-width:0 1px}
|
||||
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
|
||||
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
|
||||
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
|
||||
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
|
||||
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
|
||||
th.halign-left,td.halign-left{text-align:left}
|
||||
th.halign-right,td.halign-right{text-align:right}
|
||||
th.halign-center,td.halign-center{text-align:center}
|
||||
th.valign-top,td.valign-top{vertical-align:top}
|
||||
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
|
||||
th.valign-middle,td.valign-middle{vertical-align:middle}
|
||||
table thead th,table tfoot th{font-weight:bold}
|
||||
tbody tr th{background:#f7f8f7}
|
||||
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
|
||||
p.tableblock>code:only-child{background:none;padding:0}
|
||||
p.tableblock{font-size:1em}
|
||||
ol{margin-left:1.75em}
|
||||
ul li ol{margin-left:1.5em}
|
||||
dl dd{margin-left:1.125em}
|
||||
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
|
||||
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
|
||||
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
|
||||
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
|
||||
ul.unstyled,ol.unstyled{margin-left:0}
|
||||
li>p:empty:only-child::before{content:"";display:inline-block}
|
||||
ul.checklist>li>p:first-child{margin-left:-1em}
|
||||
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
|
||||
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
|
||||
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
|
||||
ul.inline>li{margin-left:1.25em}
|
||||
.unstyled dl dt{font-weight:400;font-style:normal}
|
||||
ol.arabic{list-style-type:decimal}
|
||||
ol.decimal{list-style-type:decimal-leading-zero}
|
||||
ol.loweralpha{list-style-type:lower-alpha}
|
||||
ol.upperalpha{list-style-type:upper-alpha}
|
||||
ol.lowerroman{list-style-type:lower-roman}
|
||||
ol.upperroman{list-style-type:upper-roman}
|
||||
ol.lowergreek{list-style-type:lower-greek}
|
||||
.hdlist>table,.colist>table{border:0;background:none}
|
||||
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
|
||||
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
|
||||
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
|
||||
td.hdlist2{word-wrap:anywhere}
|
||||
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
|
||||
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
|
||||
.colist td:not([class]):first-child img{max-width:none}
|
||||
.colist td:not([class]):last-child{padding:.25em 0}
|
||||
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
|
||||
.imageblock.left{margin:.25em .625em 1.25em 0}
|
||||
.imageblock.right{margin:.25em 0 1.25em .625em}
|
||||
.imageblock>.title{margin-bottom:0}
|
||||
.imageblock.thumb,.imageblock.th{border-width:6px}
|
||||
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
|
||||
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
|
||||
.image.left{margin-right:.625em}
|
||||
.image.right{margin-left:.625em}
|
||||
a.image{text-decoration:none;display:inline-block}
|
||||
a.image object{pointer-events:none}
|
||||
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
|
||||
sup.footnote a,sup.footnoteref a{text-decoration:none}
|
||||
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
|
||||
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
|
||||
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
|
||||
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
|
||||
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
|
||||
#footnotes .footnote:last-of-type{margin-bottom:0}
|
||||
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
|
||||
div.unbreakable{page-break-inside:avoid}
|
||||
.big{font-size:larger}
|
||||
.small{font-size:smaller}
|
||||
.underline{text-decoration:underline}
|
||||
.overline{text-decoration:overline}
|
||||
.line-through{text-decoration:line-through}
|
||||
.aqua{color:#00bfbf}
|
||||
.aqua-background{background:#00fafa}
|
||||
.black{color:#000}
|
||||
.black-background{background:#000}
|
||||
.blue{color:#0000bf}
|
||||
.blue-background{background:#0000fa}
|
||||
.fuchsia{color:#bf00bf}
|
||||
.fuchsia-background{background:#fa00fa}
|
||||
.gray{color:#606060}
|
||||
.gray-background{background:#7d7d7d}
|
||||
.green{color:#006000}
|
||||
.green-background{background:#007d00}
|
||||
.lime{color:#00bf00}
|
||||
.lime-background{background:#00fa00}
|
||||
.maroon{color:#600000}
|
||||
.maroon-background{background:#7d0000}
|
||||
.navy{color:#000060}
|
||||
.navy-background{background:#00007d}
|
||||
.olive{color:#606000}
|
||||
.olive-background{background:#7d7d00}
|
||||
.purple{color:#600060}
|
||||
.purple-background{background:#7d007d}
|
||||
.red{color:#bf0000}
|
||||
.red-background{background:#fa0000}
|
||||
.silver{color:#909090}
|
||||
.silver-background{background:#bcbcbc}
|
||||
.teal{color:#006060}
|
||||
.teal-background{background:#007d7d}
|
||||
.white{color:#bfbfbf}
|
||||
.white-background{background:#fafafa}
|
||||
.yellow{color:#bfbf00}
|
||||
.yellow-background{background:#fafa00}
|
||||
span.icon>.fa{cursor:default}
|
||||
a span.icon>.fa{cursor:inherit}
|
||||
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
|
||||
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
|
||||
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
|
||||
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
|
||||
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
|
||||
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
|
||||
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
|
||||
.conum[data-value] *{color:#fff!important}
|
||||
.conum[data-value]+b{display:none}
|
||||
.conum[data-value]::after{content:attr(data-value)}
|
||||
pre .conum[data-value]{position:relative;top:-.125em}
|
||||
b.conum *{color:inherit!important}
|
||||
.conum:not([data-value]):empty{display:none}
|
||||
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
|
||||
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
|
||||
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
|
||||
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
|
||||
p{margin-bottom:1.25rem}
|
||||
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
|
||||
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
|
||||
.print-only{display:none!important}
|
||||
@page{margin:1.25cm .75cm}
|
||||
@media print{*{box-shadow:none!important;text-shadow:none!important}
|
||||
html{font-size:80%}
|
||||
a{color:inherit!important;text-decoration:underline!important}
|
||||
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
|
||||
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
|
||||
abbr[title]{border-bottom:1px dotted}
|
||||
abbr[title]::after{content:" (" attr(title) ")"}
|
||||
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
|
||||
thead{display:table-header-group}
|
||||
svg{max-width:100%}
|
||||
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
|
||||
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
|
||||
#header,#content,#footnotes,#footer{max-width:none}
|
||||
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
|
||||
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
|
||||
body.book #header{text-align:center}
|
||||
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
|
||||
body.book #header .details{border:0!important;display:block;padding:0!important}
|
||||
body.book #header .details span:first-child{margin-left:0!important}
|
||||
body.book #header .details br{display:block}
|
||||
body.book #header .details br+span::before{content:none!important}
|
||||
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
|
||||
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
|
||||
.listingblock code[data-lang]::before{display:block}
|
||||
#footer{padding:0 .9375em}
|
||||
.hide-on-print{display:none!important}
|
||||
.print-only{display:block!important}
|
||||
.hide-for-print{display:none!important}
|
||||
.show-for-print{display:inherit!important}}
|
||||
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
|
||||
.sect1{padding:0!important}
|
||||
.sect1+.sect1{border:0}
|
||||
#footer{background:none}
|
||||
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
|
||||
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
|
||||
</style>
|
||||
<style>
|
||||
pre>code {
|
||||
display: inline;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="article">
|
||||
<div id="header">
|
||||
<h1>Decision-Making Process in the Git Project</h1>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div class="sect1">
|
||||
<h2 id="_introduction">Introduction</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>This document describes the current decision-making process in the Git
|
||||
project. It is a descriptive rather than prescriptive doc; that is, we want to
|
||||
describe how things work in practice rather than explicitly recommending any
|
||||
particular process or changes to the current process.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Here we document how the project makes decisions for discussions
|
||||
(with or without patches), in scale larger than an individual patch
|
||||
series (which is fully covered by the SubmittingPatches document).</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_larger_discussions_with_patches">Larger Discussions (with patches)</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>As with discussions on an individual patch series, starting a larger-scale
|
||||
discussion often begins by sending a patch or series to the list. This might
|
||||
take the form of an initial design doc, with implementation following in later
|
||||
iterations of the series (for example,
|
||||
<a href="https://lore.kernel.org/git/0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com/">adding unit tests</a> or
|
||||
<a href="https://lore.kernel.org/git/20200420235310.94493-1-emilyshaffer@google.com/">config-based hooks</a>),
|
||||
or it might include a full implementation from the beginning.
|
||||
In either case, discussion progresses the same way for an individual patch series,
|
||||
until consensus is reached or the topic is dropped.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_larger_discussions_without_patches">Larger Discussions (without patches)</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Occasionally, larger discussions might occur without an associated patch series.
|
||||
These may be very large-scale technical decisions that are beyond the scope of
|
||||
even a single large patch series, or they may be more open-ended,
|
||||
policy-oriented discussions (examples:
|
||||
<a href="https://lore.kernel.org/git/ZZ77NQkSuiRxRDwt@nand.local/">introducing Rust</a>
|
||||
or <a href="https://lore.kernel.org/git/YHofmWcIAidkvJiD@google.com/">improving submodule UX</a>).
|
||||
In either case, discussion progresses as described above for general patch series.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>For larger discussions without a patch series or other concrete implementation,
|
||||
it may be hard to judge when consensus has been reached, as there are not any
|
||||
official guidelines. If discussion stalls at this point, it may be helpful to
|
||||
restart discussion with an RFC patch series (such as a partial, unfinished
|
||||
implementation or proof of concept) that can be more easily debated.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>When consensus is reached that it is a good idea, the original
|
||||
proposer is expected to coordinate the effort to make it happen,
|
||||
with help from others who were involved in the discussion, as
|
||||
needed.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>For decisions that require code changes, it is often the case that the original
|
||||
proposer will follow up with a patch series, although it is also common for
|
||||
other interested parties to provide an implementation (or parts of the
|
||||
implementation, for very large changes).</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>For non-technical decisions such as community norms or processes, it is up to
|
||||
the community as a whole to implement and sustain agreed-upon changes.
|
||||
The project leadership committee (PLC) may help the implementation of
|
||||
policy decisions.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="_other_discussion_venues">Other Discussion Venues</h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Occasionally decision proposals are presented off-list, e.g. at the semi-regular
|
||||
Contributors' Summit. While higher-bandwidth face-to-face discussion is often
|
||||
useful for quickly reaching consensus among attendees, generally we expect to
|
||||
summarize the discussion in notes that can later be presented on-list. For an
|
||||
example, see the thread
|
||||
<a href="https://lore.kernel.org/git/AC2EB721-2979-43FD-922D-C5076A57F24B@jramsay.com.au/">Notes
|
||||
from Git Contributor Summit, Los Angeles (April 5, 2020)</a> by James Ramsay.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>We prefer that "official" discussion happens on the list so that the full
|
||||
community has opportunity to engage in discussion. This also means that the
|
||||
mailing list archives contain a more-or-less complete history of project
|
||||
discussions and decisions.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div id="footer-text">
|
||||
Last updated 2025-03-17 07:09:38 UTC
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
1395
gitportable/mingw64/share/doc/git-doc/MyFirstContribution.adoc
Normal file
1395
gitportable/mingw64/share/doc/git-doc/MyFirstContribution.adoc
Normal file
File diff suppressed because it is too large
Load Diff
2246
gitportable/mingw64/share/doc/git-doc/MyFirstContribution.html
Normal file
2246
gitportable/mingw64/share/doc/git-doc/MyFirstContribution.html
Normal file
File diff suppressed because it is too large
Load Diff
898
gitportable/mingw64/share/doc/git-doc/MyFirstObjectWalk.adoc
Normal file
898
gitportable/mingw64/share/doc/git-doc/MyFirstObjectWalk.adoc
Normal file
@@ -0,0 +1,898 @@
|
||||
= My First Object Walk
|
||||
|
||||
== What's an Object Walk?
|
||||
|
||||
The object walk is a key concept in Git - this is the process that underpins
|
||||
operations like object transfer and fsck. Beginning from a given commit, the
|
||||
list of objects is found by walking parent relationships between commits (commit
|
||||
X based on commit W) and containment relationships between objects (tree Y is
|
||||
contained within commit X, and blob Z is located within tree Y, giving our
|
||||
working tree for commit X something like `y/z.txt`).
|
||||
|
||||
A related concept is the revision walk, which is focused on commit objects and
|
||||
their parent relationships and does not delve into other object types. The
|
||||
revision walk is used for operations like `git log`.
|
||||
|
||||
=== Related Reading
|
||||
|
||||
- `Documentation/user-manual.adoc` under "Hacking Git" contains some coverage of
|
||||
the revision walker in its various incarnations.
|
||||
- `revision.h`
|
||||
- https://eagain.net/articles/git-for-computer-scientists/[Git for Computer Scientists]
|
||||
gives a good overview of the types of objects in Git and what your object
|
||||
walk is really describing.
|
||||
|
||||
== Setting Up
|
||||
|
||||
Create a new branch from `master`.
|
||||
|
||||
----
|
||||
git checkout -b revwalk origin/master
|
||||
----
|
||||
|
||||
We'll put our fiddling into a new command. For fun, let's name it `git walken`.
|
||||
Open up a new file `builtin/walken.c` and set up the command handler:
|
||||
|
||||
----
|
||||
/*
|
||||
* "git walken"
|
||||
*
|
||||
* Part of the "My First Object Walk" tutorial.
|
||||
*/
|
||||
|
||||
#include "builtin.h"
|
||||
#include "trace.h"
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
trace_printf(_("cmd_walken incoming...\n"));
|
||||
return 0;
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: `trace_printf()`, defined in `trace.h`, differs from `printf()` in
|
||||
that it can be turned on or off at runtime. For the purposes of this
|
||||
tutorial, we will write `walken` as though it is intended for use as
|
||||
a "plumbing" command: that is, a command which is used primarily in
|
||||
scripts, rather than interactively by humans (a "porcelain" command).
|
||||
So we will send our debug output to `trace_printf()` instead.
|
||||
When running, enable trace output by setting the environment variable `GIT_TRACE`.
|
||||
|
||||
Add usage text and `-h` handling, like all subcommands should consistently do
|
||||
(our test suite will notice and complain if you fail to do so).
|
||||
We'll need to include the `parse-options.h` header.
|
||||
|
||||
----
|
||||
#include "parse-options.h"
|
||||
|
||||
...
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
const char * const walken_usage[] = {
|
||||
N_("git walken"),
|
||||
NULL,
|
||||
};
|
||||
struct option options[] = {
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
argc = parse_options(argc, argv, prefix, options, walken_usage, 0);
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Also add the relevant line in `builtin.h` near `cmd_whatchanged()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix);
|
||||
----
|
||||
|
||||
Include the command in `git.c` in `commands[]` near the entry for `whatchanged`,
|
||||
maintaining alphabetical ordering:
|
||||
|
||||
----
|
||||
{ "walken", cmd_walken, RUN_SETUP },
|
||||
----
|
||||
|
||||
Add it to the `Makefile` near the line for `builtin/worktree.o`:
|
||||
|
||||
----
|
||||
BUILTIN_OBJS += builtin/walken.o
|
||||
----
|
||||
|
||||
Build and test out your command, without forgetting to ensure the `DEVELOPER`
|
||||
flag is set, and with `GIT_TRACE` enabled so the debug output can be seen:
|
||||
|
||||
----
|
||||
$ echo DEVELOPER=1 >>config.mak
|
||||
$ make
|
||||
$ GIT_TRACE=1 ./bin-wrappers/git walken
|
||||
----
|
||||
|
||||
NOTE: For a more exhaustive overview of the new command process, take a look at
|
||||
`Documentation/MyFirstContribution.adoc`.
|
||||
|
||||
NOTE: A reference implementation can be found at
|
||||
https://github.com/nasamuffin/git/tree/revwalk.
|
||||
|
||||
=== `struct rev_cmdline_info`
|
||||
|
||||
The definition of `struct rev_cmdline_info` can be found in `revision.h`.
|
||||
|
||||
This struct is contained within the `rev_info` struct and is used to reflect
|
||||
parameters provided by the user over the CLI.
|
||||
|
||||
`nr` represents the number of `rev_cmdline_entry` present in the array.
|
||||
|
||||
`alloc` is used by the `ALLOC_GROW` macro. Check `alloc.h` - this variable is
|
||||
used to track the allocated size of the list.
|
||||
|
||||
Per entry, we find:
|
||||
|
||||
`item` is the object provided upon which to base the object walk. Items in Git
|
||||
can be blobs, trees, commits, or tags. (See `Documentation/gittutorial-2.adoc`.)
|
||||
|
||||
`name` is the object ID (OID) of the object - a hex string you may be familiar
|
||||
with from using Git to organize your source in the past. Check the tutorial
|
||||
mentioned above towards the top for a discussion of where the OID can come
|
||||
from.
|
||||
|
||||
`whence` indicates some information about what to do with the parents of the
|
||||
specified object. We'll explore this flag more later on; take a look at
|
||||
`Documentation/revisions.adoc` to get an idea of what could set the `whence`
|
||||
value.
|
||||
|
||||
`flags` are used to hint the beginning of the revision walk and are the first
|
||||
block under the `#include`s in `revision.h`. The most likely ones to be set in
|
||||
the `rev_cmdline_info` are `UNINTERESTING` and `BOTTOM`, but these same flags
|
||||
can be used during the walk, as well.
|
||||
|
||||
=== `struct rev_info`
|
||||
|
||||
This one is quite a bit longer, and many fields are only used during the walk
|
||||
by `revision.c` - not configuration options. Most of the configurable flags in
|
||||
`struct rev_info` have a mirror in `Documentation/rev-list-options.adoc`. It's a
|
||||
good idea to take some time and read through that document.
|
||||
|
||||
== Basic Commit Walk
|
||||
|
||||
First, let's see if we can replicate the output of `git log --oneline`. We'll
|
||||
refer back to the implementation frequently to discover norms when performing
|
||||
an object walk of our own.
|
||||
|
||||
To do so, we'll first find all the commits, in order, which preceded the current
|
||||
commit. We'll extract the name and subject of the commit from each.
|
||||
|
||||
Ideally, we will also be able to find out which ones are currently at the tip of
|
||||
various branches.
|
||||
|
||||
=== Setting Up
|
||||
|
||||
Preparing for your object walk has some distinct stages.
|
||||
|
||||
1. Perform default setup for this mode, and others which may be invoked.
|
||||
2. Check configuration files for relevant settings.
|
||||
3. Set up the `rev_info` struct.
|
||||
4. Tweak the initialized `rev_info` to suit the current walk.
|
||||
5. Prepare the `rev_info` for the walk.
|
||||
6. Iterate over the objects, processing each one.
|
||||
|
||||
==== Default Setups
|
||||
|
||||
Before examining configuration files which may modify command behavior, set up
|
||||
default state for switches or options your command may have. If your command
|
||||
utilizes other Git components, ask them to set up their default states as well.
|
||||
For instance, `git log` takes advantage of `grep` and `diff` functionality, so
|
||||
its `init_log_defaults()` sets its own state (`decoration_style`) and asks
|
||||
`grep` and `diff` to initialize themselves by calling each of their
|
||||
initialization functions.
|
||||
|
||||
==== Configuring From `.gitconfig`
|
||||
|
||||
Next, we should have a look at any relevant configuration settings (i.e.,
|
||||
settings readable and settable from `git config`). This is done by providing a
|
||||
callback to `git_config()`; within that callback, you can also invoke methods
|
||||
from other components you may need that need to intercept these options. Your
|
||||
callback will be invoked once per each configuration value which Git knows about
|
||||
(global, local, worktree, etc.).
|
||||
|
||||
Similarly to the default values, we don't have anything to do here yet
|
||||
ourselves; however, we should call `git_default_config()` if we aren't calling
|
||||
any other existing config callbacks.
|
||||
|
||||
Add a new function to `builtin/walken.c`.
|
||||
We'll also need to include the `config.h` header:
|
||||
|
||||
----
|
||||
#include "config.h"
|
||||
|
||||
...
|
||||
|
||||
static int git_walken_config(const char *var, const char *value,
|
||||
const struct config_context *ctx, void *cb)
|
||||
{
|
||||
/*
|
||||
* For now, we don't have any custom configuration, so fall back to
|
||||
* the default config.
|
||||
*/
|
||||
return git_default_config(var, value, ctx, cb);
|
||||
}
|
||||
----
|
||||
|
||||
Make sure to invoke `git_config()` with it in your `cmd_walken()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
...
|
||||
|
||||
git_config(git_walken_config, NULL);
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
==== Setting Up `rev_info`
|
||||
|
||||
Now that we've gathered external configuration and options, it's time to
|
||||
initialize the `rev_info` object which we will use to perform the walk. This is
|
||||
typically done by calling `repo_init_revisions()` with the repository you intend
|
||||
to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info`
|
||||
struct.
|
||||
|
||||
Add the `struct rev_info` and the `repo_init_revisions()` call.
|
||||
We'll also need to include the `revision.h` header:
|
||||
|
||||
----
|
||||
#include "revision.h"
|
||||
|
||||
...
|
||||
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
/* This can go wherever you like in your declarations.*/
|
||||
struct rev_info rev;
|
||||
...
|
||||
|
||||
/* This should go after the git_config() call. */
|
||||
repo_init_revisions(the_repository, &rev, prefix);
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
==== Tweaking `rev_info` For the Walk
|
||||
|
||||
We're getting close, but we're still not quite ready to go. Now that `rev` is
|
||||
initialized, we can modify it to fit our needs. This is usually done within a
|
||||
helper for clarity, so let's add one:
|
||||
|
||||
----
|
||||
static void final_rev_info_setup(struct rev_info *rev)
|
||||
{
|
||||
/*
|
||||
* We want to mimic the appearance of `git log --oneline`, so let's
|
||||
* force oneline format.
|
||||
*/
|
||||
get_commit_format("oneline", rev);
|
||||
|
||||
/* Start our object walk at HEAD. */
|
||||
add_head_to_pending(rev);
|
||||
}
|
||||
----
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Instead of using the shorthand `add_head_to_pending()`, you could do
|
||||
something like this:
|
||||
----
|
||||
struct setup_revision_opt opt;
|
||||
|
||||
memset(&opt, 0, sizeof(opt));
|
||||
opt.def = "HEAD";
|
||||
opt.revarg_opt = REVARG_COMMITTISH;
|
||||
setup_revisions(argc, argv, rev, &opt);
|
||||
----
|
||||
Using a `setup_revision_opt` gives you finer control over your walk's starting
|
||||
point.
|
||||
====
|
||||
|
||||
Then let's invoke `final_rev_info_setup()` after the call to
|
||||
`repo_init_revisions()`:
|
||||
|
||||
----
|
||||
int cmd_walken(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
...
|
||||
|
||||
final_rev_info_setup(&rev);
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Later, we may wish to add more arguments to `final_rev_info_setup()`. But for
|
||||
now, this is all we need.
|
||||
|
||||
==== Preparing `rev_info` For the Walk
|
||||
|
||||
Now that `rev` is all initialized and configured, we've got one more setup step
|
||||
before we get rolling. We can do this in a helper, which will both prepare the
|
||||
`rev_info` for the walk, and perform the walk itself. Let's start the helper
|
||||
with the call to `prepare_revision_walk()`, which can return an error without
|
||||
dying on its own:
|
||||
|
||||
----
|
||||
static void walken_commit_walk(struct rev_info *rev)
|
||||
{
|
||||
if (prepare_revision_walk(rev))
|
||||
die(_("revision walk setup failed"));
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: `die()` prints to `stderr` and exits the program. Since it will print to
|
||||
`stderr` it's likely to be seen by a human, so we will localize it.
|
||||
|
||||
==== Performing the Walk!
|
||||
|
||||
Finally! We are ready to begin the walk itself. Now we can see that `rev_info`
|
||||
can also be used as an iterator; we move to the next item in the walk by using
|
||||
`get_revision()` repeatedly. Add the listed variable declarations at the top and
|
||||
the walk loop below the `prepare_revision_walk()` call within your
|
||||
`walken_commit_walk()`:
|
||||
|
||||
----
|
||||
#include "pretty.h"
|
||||
|
||||
...
|
||||
|
||||
static void walken_commit_walk(struct rev_info *rev)
|
||||
{
|
||||
struct commit *commit;
|
||||
struct strbuf prettybuf = STRBUF_INIT;
|
||||
|
||||
...
|
||||
|
||||
while ((commit = get_revision(rev))) {
|
||||
strbuf_reset(&prettybuf);
|
||||
pp_commit_easy(CMIT_FMT_ONELINE, commit, &prettybuf);
|
||||
puts(prettybuf.buf);
|
||||
}
|
||||
strbuf_release(&prettybuf);
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: `puts()` prints a `char*` to `stdout`. Since this is the part of the
|
||||
command we expect to be machine-parsed, we're sending it directly to stdout.
|
||||
|
||||
Give it a shot.
|
||||
|
||||
----
|
||||
$ make
|
||||
$ ./bin-wrappers/git walken
|
||||
----
|
||||
|
||||
You should see all of the subject lines of all the commits in
|
||||
your tree's history, in order, ending with the initial commit, "Initial revision
|
||||
of "git", the information manager from hell". Congratulations! You've written
|
||||
your first revision walk. You can play with printing some additional fields
|
||||
from each commit if you're curious; have a look at the functions available in
|
||||
`commit.h`.
|
||||
|
||||
=== Adding a Filter
|
||||
|
||||
Next, let's try to filter the commits we see based on their author. This is
|
||||
equivalent to running `git log --author=<pattern>`. We can add a filter by
|
||||
modifying `rev_info.grep_filter`, which is a `struct grep_opt`.
|
||||
|
||||
First some setup. Add `grep_config()` to `git_walken_config()`:
|
||||
|
||||
----
|
||||
static int git_walken_config(const char *var, const char *value,
|
||||
const struct config_context *ctx, void *cb)
|
||||
{
|
||||
grep_config(var, value, ctx, cb);
|
||||
return git_default_config(var, value, ctx, cb);
|
||||
}
|
||||
----
|
||||
|
||||
Next, we can modify the `grep_filter`. This is done with convenience functions
|
||||
found in `grep.h`. For fun, we're filtering to only commits from folks using a
|
||||
`gmail.com` email address - a not-very-precise guess at who may be working on
|
||||
Git as a hobby. Since we're checking the author, which is a specific line in the
|
||||
header, we'll use the `append_header_grep_pattern()` helper. We can use
|
||||
the `enum grep_header_field` to indicate which part of the commit header we want
|
||||
to search.
|
||||
|
||||
In `final_rev_info_setup()`, add your filter line:
|
||||
|
||||
----
|
||||
static void final_rev_info_setup(int argc, const char **argv,
|
||||
const char *prefix, struct rev_info *rev)
|
||||
{
|
||||
...
|
||||
|
||||
append_header_grep_pattern(&rev->grep_filter, GREP_HEADER_AUTHOR,
|
||||
"gmail");
|
||||
compile_grep_patterns(&rev->grep_filter);
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
`append_header_grep_pattern()` adds your new "gmail" pattern to `rev_info`, but
|
||||
it won't work unless we compile it with `compile_grep_patterns()`.
|
||||
|
||||
NOTE: If you are using `setup_revisions()` (for example, if you are passing a
|
||||
`setup_revision_opt` instead of using `add_head_to_pending()`), you don't need
|
||||
to call `compile_grep_patterns()` because `setup_revisions()` calls it for you.
|
||||
|
||||
NOTE: We could add the same filter via the `append_grep_pattern()` helper if we
|
||||
wanted to, but `append_header_grep_pattern()` adds the `enum grep_context` and
|
||||
`enum grep_pat_token` for us.
|
||||
|
||||
=== Changing the Order
|
||||
|
||||
There are a few ways that we can change the order of the commits during a
|
||||
revision walk. Firstly, we can use the `enum rev_sort_order` to choose from some
|
||||
typical orderings.
|
||||
|
||||
`topo_order` is the same as `git log --topo-order`: we avoid showing a parent
|
||||
before all of its children have been shown, and we avoid mixing commits which
|
||||
are in different lines of history. (`git help log`'s section on `--topo-order`
|
||||
has a very nice diagram to illustrate this.)
|
||||
|
||||
Let's see what happens when we run with `REV_SORT_BY_COMMIT_DATE` as opposed to
|
||||
`REV_SORT_BY_AUTHOR_DATE`. Add the following:
|
||||
|
||||
----
|
||||
static void final_rev_info_setup(int argc, const char **argv,
|
||||
const char *prefix, struct rev_info *rev)
|
||||
{
|
||||
...
|
||||
|
||||
rev->topo_order = 1;
|
||||
rev->sort_order = REV_SORT_BY_COMMIT_DATE;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Let's output this into a file so we can easily diff it with the walk sorted by
|
||||
author date.
|
||||
|
||||
----
|
||||
$ make
|
||||
$ ./bin-wrappers/git walken > commit-date.txt
|
||||
----
|
||||
|
||||
Then, let's sort by author date and run it again.
|
||||
|
||||
----
|
||||
static void final_rev_info_setup(int argc, const char **argv,
|
||||
const char *prefix, struct rev_info *rev)
|
||||
{
|
||||
...
|
||||
|
||||
rev->topo_order = 1;
|
||||
rev->sort_order = REV_SORT_BY_AUTHOR_DATE;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
----
|
||||
$ make
|
||||
$ ./bin-wrappers/git walken > author-date.txt
|
||||
----
|
||||
|
||||
Finally, compare the two. This is a little less helpful without object names or
|
||||
dates, but hopefully we get the idea.
|
||||
|
||||
----
|
||||
$ diff -u commit-date.txt author-date.txt
|
||||
----
|
||||
|
||||
This display indicates that commits can be reordered after they're written, for
|
||||
example with `git rebase`.
|
||||
|
||||
Let's try one more reordering of commits. `rev_info` exposes a `reverse` flag.
|
||||
Set that flag somewhere inside of `final_rev_info_setup()`:
|
||||
|
||||
----
|
||||
static void final_rev_info_setup(int argc, const char **argv, const char *prefix,
|
||||
struct rev_info *rev)
|
||||
{
|
||||
...
|
||||
|
||||
rev->reverse = 1;
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
Run your walk again and note the difference in order. (If you remove the grep
|
||||
pattern, you should see the last commit this call gives you as your current
|
||||
HEAD.)
|
||||
|
||||
== Basic Object Walk
|
||||
|
||||
So far we've been walking only commits. But Git has more types of objects than
|
||||
that! Let's see if we can walk _all_ objects, and find out some information
|
||||
about each one.
|
||||
|
||||
We can base our work on an example. `git pack-objects` prepares all kinds of
|
||||
objects for packing into a bitmap or packfile. The work we are interested in
|
||||
resides in `builtin/pack-objects.c:get_object_list()`; examination of that
|
||||
function shows that the all-object walk is being performed by
|
||||
`traverse_commit_list()` or `traverse_commit_list_filtered()`. Those two
|
||||
functions reside in `list-objects.c`; examining the source shows that, despite
|
||||
the name, these functions traverse all kinds of objects. Let's have a look at
|
||||
the arguments to `traverse_commit_list()`.
|
||||
|
||||
- `struct rev_info *revs`: This is the `rev_info` used for the walk. If
|
||||
its `filter` member is not `NULL`, then `filter` contains information for
|
||||
how to filter the object list.
|
||||
- `show_commit_fn show_commit`: A callback which will be used to handle each
|
||||
individual commit object.
|
||||
- `show_object_fn show_object`: A callback which will be used to handle each
|
||||
non-commit object (so each blob, tree, or tag).
|
||||
- `void *show_data`: A context buffer which is passed in turn to `show_commit`
|
||||
and `show_object`.
|
||||
|
||||
In addition, `traverse_commit_list_filtered()` has an additional parameter:
|
||||
|
||||
- `struct oidset *omitted`: A linked-list of object IDs which the provided
|
||||
filter caused to be omitted.
|
||||
|
||||
It looks like these methods use callbacks we provide instead of needing us
|
||||
to call it repeatedly ourselves. Cool! Let's add the callbacks first.
|
||||
|
||||
For the sake of this tutorial, we'll simply keep track of how many of each kind
|
||||
of object we find. At file scope in `builtin/walken.c` add the following
|
||||
tracking variables:
|
||||
|
||||
----
|
||||
static int commit_count;
|
||||
static int tag_count;
|
||||
static int blob_count;
|
||||
static int tree_count;
|
||||
----
|
||||
|
||||
Commits are handled by a different callback than other objects; let's do that
|
||||
one first:
|
||||
|
||||
----
|
||||
static void walken_show_commit(struct commit *cmt, void *buf)
|
||||
{
|
||||
commit_count++;
|
||||
}
|
||||
----
|
||||
|
||||
The `cmt` argument is fairly self-explanatory. But it's worth mentioning that
|
||||
the `buf` argument is actually the context buffer that we can provide to the
|
||||
traversal calls - `show_data`, which we mentioned a moment ago.
|
||||
|
||||
Since we have the `struct commit` object, we can look at all the same parts that
|
||||
we looked at in our earlier commit-only walk. For the sake of this tutorial,
|
||||
though, we'll just increment the commit counter and move on.
|
||||
|
||||
The callback for non-commits is a little different, as we'll need to check
|
||||
which kind of object we're dealing with:
|
||||
|
||||
----
|
||||
static void walken_show_object(struct object *obj, const char *str, void *buf)
|
||||
{
|
||||
switch (obj->type) {
|
||||
case OBJ_TREE:
|
||||
tree_count++;
|
||||
break;
|
||||
case OBJ_BLOB:
|
||||
blob_count++;
|
||||
break;
|
||||
case OBJ_TAG:
|
||||
tag_count++;
|
||||
break;
|
||||
case OBJ_COMMIT:
|
||||
BUG("unexpected commit object in walken_show_object\n");
|
||||
default:
|
||||
BUG("unexpected object type %s in walken_show_object\n",
|
||||
type_name(obj->type));
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
Again, `obj` is fairly self-explanatory, and we can guess that `buf` is the same
|
||||
context pointer that `walken_show_commit()` receives: the `show_data` argument
|
||||
to `traverse_commit_list()` and `traverse_commit_list_filtered()`. Finally,
|
||||
`str` contains the name of the object, which ends up being something like
|
||||
`foo.txt` (blob), `bar/baz` (tree), or `v1.2.3` (tag).
|
||||
|
||||
To help assure us that we aren't double-counting commits, we'll include some
|
||||
complaining if a commit object is routed through our non-commit callback; we'll
|
||||
also complain if we see an invalid object type. Since those two cases should be
|
||||
unreachable, and would only change in the event of a semantic change to the Git
|
||||
codebase, we complain by using `BUG()` - which is a signal to a developer that
|
||||
the change they made caused unintended consequences, and the rest of the
|
||||
codebase needs to be updated to understand that change. `BUG()` is not intended
|
||||
to be seen by the public, so it is not localized.
|
||||
|
||||
Our main object walk implementation is substantially different from our commit
|
||||
walk implementation, so let's make a new function to perform the object walk. We
|
||||
can perform setup which is applicable to all objects here, too, to keep separate
|
||||
from setup which is applicable to commit-only walks.
|
||||
|
||||
We'll start by enabling all types of objects in the `struct rev_info`. We'll
|
||||
also turn on `tree_blobs_in_commit_order`, which means that we will walk a
|
||||
commit's tree and everything it points to immediately after we find each commit,
|
||||
as opposed to waiting for the end and walking through all trees after the commit
|
||||
history has been discovered. With the appropriate settings configured, we are
|
||||
ready to call `prepare_revision_walk()`.
|
||||
|
||||
----
|
||||
static void walken_object_walk(struct rev_info *rev)
|
||||
{
|
||||
rev->tree_objects = 1;
|
||||
rev->blob_objects = 1;
|
||||
rev->tag_objects = 1;
|
||||
rev->tree_blobs_in_commit_order = 1;
|
||||
|
||||
if (prepare_revision_walk(rev))
|
||||
die(_("revision walk setup failed"));
|
||||
|
||||
commit_count = 0;
|
||||
tag_count = 0;
|
||||
blob_count = 0;
|
||||
tree_count = 0;
|
||||
----
|
||||
|
||||
Let's start by calling just the unfiltered walk and reporting our counts.
|
||||
Complete your implementation of `walken_object_walk()`.
|
||||
We'll also need to include the `list-objects.h` header.
|
||||
|
||||
----
|
||||
#include "list-objects.h"
|
||||
|
||||
...
|
||||
|
||||
traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
|
||||
|
||||
printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count,
|
||||
blob_count, tag_count, tree_count);
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: This output is intended to be machine-parsed. Therefore, we are not
|
||||
sending it to `trace_printf()`, and we are not localizing it - we need scripts
|
||||
to be able to count on the formatting to be exactly the way it is shown here.
|
||||
If we were intending this output to be read by humans, we would need to localize
|
||||
it with `_()`.
|
||||
|
||||
Finally, we'll ask `cmd_walken()` to use the object walk instead. Discussing
|
||||
command line options is out of scope for this tutorial, so we'll just hardcode
|
||||
a branch we can change at compile time. Where you call `final_rev_info_setup()`
|
||||
and `walken_commit_walk()`, instead branch like so:
|
||||
|
||||
----
|
||||
if (1) {
|
||||
add_head_to_pending(&rev);
|
||||
walken_object_walk(&rev);
|
||||
} else {
|
||||
final_rev_info_setup(argc, argv, prefix, &rev);
|
||||
walken_commit_walk(&rev);
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: For simplicity, we've avoided all the filters and sorts we applied in
|
||||
`final_rev_info_setup()` and simply added `HEAD` to our pending queue. If you
|
||||
want, you can certainly use the filters we added before by moving
|
||||
`final_rev_info_setup()` out of the conditional and removing the call to
|
||||
`add_head_to_pending()`.
|
||||
|
||||
Now we can try to run our command! It should take noticeably longer than the
|
||||
commit walk, but an examination of the output will give you an idea why. Your
|
||||
output should look similar to this example, but with different counts:
|
||||
|
||||
----
|
||||
Object walk completed. Found 55733 commits, 100274 blobs, 0 tags, and 104210 trees.
|
||||
----
|
||||
|
||||
This makes sense. We have more trees than commits because the Git project has
|
||||
lots of subdirectories which can change, plus at least one tree per commit. We
|
||||
have no tags because we started on a commit (`HEAD`) and while tags can point to
|
||||
commits, commits can't point to tags.
|
||||
|
||||
NOTE: You will have different counts when you run this yourself! The number of
|
||||
objects grows along with the Git project.
|
||||
|
||||
=== Adding a Filter
|
||||
|
||||
There are a handful of filters that we can apply to the object walk laid out in
|
||||
`Documentation/rev-list-options.adoc`. These filters are typically useful for
|
||||
operations such as creating packfiles or performing a partial clone. They are
|
||||
defined in `list-objects-filter-options.h`. For the purposes of this tutorial we
|
||||
will use the "tree:1" filter, which causes the walk to omit all trees and blobs
|
||||
which are not directly referenced by commits reachable from the commit in
|
||||
`pending` when the walk begins. (`pending` is the list of objects which need to
|
||||
be traversed during a walk; you can imagine a breadth-first tree traversal to
|
||||
help understand. In our case, that means we omit trees and blobs not directly
|
||||
referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only
|
||||
`HEAD` in the `pending` list.)
|
||||
|
||||
For now, we are not going to track the omitted objects, so we'll replace those
|
||||
parameters with `NULL`. For the sake of simplicity, we'll add a simple
|
||||
build-time branch to use our filter or not. Preface the line calling
|
||||
`traverse_commit_list()` with the following, which will remind us which kind of
|
||||
walk we've just performed:
|
||||
|
||||
----
|
||||
if (0) {
|
||||
/* Unfiltered: */
|
||||
trace_printf(_("Unfiltered object walk.\n"));
|
||||
} else {
|
||||
trace_printf(
|
||||
_("Filtered object walk with filterspec 'tree:1'.\n"));
|
||||
|
||||
parse_list_objects_filter(&rev->filter, "tree:1");
|
||||
}
|
||||
traverse_commit_list(rev, walken_show_commit,
|
||||
walken_show_object, NULL);
|
||||
----
|
||||
|
||||
The `rev->filter` member is usually built directly from a command
|
||||
line argument, so the module provides an easy way to build one from a string.
|
||||
Even though we aren't taking user input right now, we can still build one with
|
||||
a hardcoded string using `parse_list_objects_filter()`.
|
||||
|
||||
With the filter spec "tree:1", we are expecting to see _only_ the root tree for
|
||||
each commit; therefore, the tree object count should be less than or equal to
|
||||
the number of commits. (For an example of why that's true: `git commit --revert`
|
||||
points to the same tree object as its grandparent.)
|
||||
|
||||
=== Counting Omitted Objects
|
||||
|
||||
We also have the capability to enumerate all objects which were omitted by a
|
||||
filter, like with `git log --filter=<spec> --filter-print-omitted`. To do this,
|
||||
change `traverse_commit_list()` to `traverse_commit_list_filtered()`, which is
|
||||
able to populate an `omitted` list. Asking for this list of filtered objects
|
||||
may cause performance degradations, however, because in this case, despite
|
||||
filtering objects, the possibly much larger set of all reachable objects must
|
||||
be processed in order to populate that list.
|
||||
|
||||
First, add the `struct oidset` and related items we will use to iterate it:
|
||||
|
||||
----
|
||||
#include "oidset.h"
|
||||
|
||||
...
|
||||
|
||||
static void walken_object_walk(
|
||||
...
|
||||
|
||||
struct oidset omitted;
|
||||
struct oidset_iter oit;
|
||||
struct object_id *oid = NULL;
|
||||
int omitted_count = 0;
|
||||
oidset_init(&omitted, 0);
|
||||
|
||||
...
|
||||
----
|
||||
|
||||
Replace the call to `traverse_commit_list()` with
|
||||
`traverse_commit_list_filtered()` and pass a pointer to the `omitted` oidset
|
||||
defined and initialized above:
|
||||
|
||||
----
|
||||
...
|
||||
|
||||
traverse_commit_list_filtered(rev,
|
||||
walken_show_commit, walken_show_object, NULL, &omitted);
|
||||
|
||||
...
|
||||
----
|
||||
|
||||
Then, after your traversal, the `oidset` traversal is pretty straightforward.
|
||||
Count all the objects within and modify the print statement:
|
||||
|
||||
----
|
||||
/* Count the omitted objects. */
|
||||
oidset_iter_init(&omitted, &oit);
|
||||
|
||||
while ((oid = oidset_iter_next(&oit)))
|
||||
omitted_count++;
|
||||
|
||||
printf("commits %d\nblobs %d\ntags %d\ntrees %d\nomitted %d\n",
|
||||
commit_count, blob_count, tag_count, tree_count, omitted_count);
|
||||
----
|
||||
|
||||
By running your walk with and without the filter, you should find that the total
|
||||
object count in each case is identical. You can also time each invocation of
|
||||
the `walken` subcommand, with and without `omitted` being passed in, to confirm
|
||||
to yourself the runtime impact of tracking all omitted objects.
|
||||
|
||||
=== Changing the Order
|
||||
|
||||
Finally, let's demonstrate that you can also reorder walks of all objects, not
|
||||
just walks of commits. First, we'll make our handlers chattier - modify
|
||||
`walken_show_commit()` and `walken_show_object()` to print the object as they
|
||||
go:
|
||||
|
||||
----
|
||||
#include "hex.h"
|
||||
|
||||
...
|
||||
|
||||
static void walken_show_commit(struct commit *cmt, void *buf)
|
||||
{
|
||||
trace_printf("commit: %s\n", oid_to_hex(&cmt->object.oid));
|
||||
commit_count++;
|
||||
}
|
||||
|
||||
static void walken_show_object(struct object *obj, const char *str, void *buf)
|
||||
{
|
||||
trace_printf("%s: %s\n", type_name(obj->type), oid_to_hex(&obj->oid));
|
||||
|
||||
...
|
||||
}
|
||||
----
|
||||
|
||||
NOTE: Since we will be examining this output directly as humans, we'll use
|
||||
`trace_printf()` here. Additionally, since this change introduces a significant
|
||||
number of printed lines, using `trace_printf()` will allow us to easily silence
|
||||
those lines without having to recompile.
|
||||
|
||||
(Leave the counter increment logic in place.)
|
||||
|
||||
With only that change, run again (but save yourself some scrollback):
|
||||
|
||||
----
|
||||
$ GIT_TRACE=1 ./bin-wrappers/git walken 2>&1 | head -n 10
|
||||
----
|
||||
|
||||
Take a look at the top commit with `git show` and the object ID you printed; it
|
||||
should be the same as the output of `git show HEAD`.
|
||||
|
||||
Next, let's change a setting on our `struct rev_info` within
|
||||
`walken_object_walk()`. Find where you're changing the other settings on `rev`,
|
||||
such as `rev->tree_objects` and `rev->tree_blobs_in_commit_order`, and add the
|
||||
`reverse` setting at the bottom:
|
||||
|
||||
----
|
||||
...
|
||||
|
||||
rev->tree_objects = 1;
|
||||
rev->blob_objects = 1;
|
||||
rev->tag_objects = 1;
|
||||
rev->tree_blobs_in_commit_order = 1;
|
||||
rev->reverse = 1;
|
||||
|
||||
...
|
||||
----
|
||||
|
||||
Now, run again, but this time, let's grab the last handful of objects instead
|
||||
of the first handful:
|
||||
|
||||
----
|
||||
$ make
|
||||
$ GIT_TRACE=1 ./bin-wrappers/git walken 2>&1 | tail -n 10
|
||||
----
|
||||
|
||||
The last commit object given should have the same OID as the one we saw at the
|
||||
top before, and running `git show <oid>` with that OID should give you again
|
||||
the same results as `git show HEAD`. Furthermore, if you run and examine the
|
||||
first ten lines again (with `head` instead of `tail` like we did before applying
|
||||
the `reverse` setting), you should see that now the first commit printed is the
|
||||
initial commit, `e83c5163`.
|
||||
|
||||
== Wrapping Up
|
||||
|
||||
Let's review. In this tutorial, we:
|
||||
|
||||
- Built a commit walk from the ground up
|
||||
- Enabled a grep filter for that commit walk
|
||||
- Changed the sort order of that filtered commit walk
|
||||
- Built an object walk (tags, commits, trees, and blobs) from the ground up
|
||||
- Learned how to add a filter-spec to an object walk
|
||||
- Changed the display order of the filtered object walk
|
||||
1682
gitportable/mingw64/share/doc/git-doc/MyFirstObjectWalk.html
Normal file
1682
gitportable/mingw64/share/doc/git-doc/MyFirstObjectWalk.html
Normal file
File diff suppressed because it is too large
Load Diff
42
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.1.adoc
Normal file
42
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.1.adoc
Normal file
@@ -0,0 +1,42 @@
|
||||
GIT v1.5.0.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0
|
||||
------------------
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- Clarifications and corrections to 1.5.0 release notes.
|
||||
|
||||
- The main documentation did not link to git-remote documentation.
|
||||
|
||||
- Clarified introductory text of git-rebase documentation.
|
||||
|
||||
- Converted remaining mentions of update-index on Porcelain
|
||||
documents to git-add/git-rm.
|
||||
|
||||
- Some i18n.* configuration variables were incorrectly
|
||||
described as core.*; fixed.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-add and git-update-index on a filesystem on which
|
||||
executable bits are unreliable incorrectly reused st_mode
|
||||
bits even when the path changed between symlink and regular
|
||||
file.
|
||||
|
||||
- git-daemon marks the listening sockets with FD_CLOEXEC so
|
||||
that it won't be leaked into the children.
|
||||
|
||||
- segfault from git-blame when the mandatory pathname
|
||||
parameter was missing was fixed; usage() message is given
|
||||
instead.
|
||||
|
||||
- git-rev-list did not read $GIT_DIR/config file, which means
|
||||
that did not honor i18n.logoutputencoding correctly.
|
||||
|
||||
* Tweaks
|
||||
|
||||
- sliding mmap() inefficiently mmaped the same region of a
|
||||
packfile with an access pattern that used objects in the
|
||||
reverse order. This has been made more efficient.
|
||||
65
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.2.adoc
Normal file
65
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.2.adoc
Normal file
@@ -0,0 +1,65 @@
|
||||
GIT v1.5.0.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.1
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- Automated merge conflict handling when changes to symbolic
|
||||
links conflicted were completely broken. The merge-resolve
|
||||
strategy created a regular file with conflict markers in it
|
||||
in place of the symbolic link. The default strategy,
|
||||
merge-recursive was even more broken. It removed the path
|
||||
that was pointed at by the symbolic link. Both of these
|
||||
problems have been fixed.
|
||||
|
||||
- 'git diff maint master next' did not correctly give combined
|
||||
diff across three trees.
|
||||
|
||||
- 'git fast-import' portability fix for Solaris.
|
||||
|
||||
- 'git show-ref --verify' without arguments did not error out
|
||||
but segfaulted.
|
||||
|
||||
- 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
|
||||
slashes after a/ and b/.
|
||||
|
||||
- 'git format-patch' produced too long filenames if the commit
|
||||
message had too long line at the beginning.
|
||||
|
||||
- Running 'make all' and then without changing anything
|
||||
running 'make install' still rebuilt some files. This
|
||||
was inconvenient when building as yourself and then
|
||||
installing as root (especially problematic when the source
|
||||
directory is on NFS and root is mapped to nobody).
|
||||
|
||||
- 'git-rerere' failed to deal with two unconflicted paths that
|
||||
sorted next to each other.
|
||||
|
||||
- 'git-rerere' attempted to open(2) a symlink and failed if
|
||||
there was a conflict. Since a conflicting change to a
|
||||
symlink would not benefit from rerere anyway, the command
|
||||
now ignores conflicting changes to symlinks.
|
||||
|
||||
- 'git-repack' did not like to pass more than 64 arguments
|
||||
internally to underlying 'rev-list' logic, which made it
|
||||
impossible to repack after accumulating many (small) packs
|
||||
in the repository.
|
||||
|
||||
- 'git-diff' to review the combined diff during a conflicted
|
||||
merge were not reading the working tree version correctly
|
||||
when changes to a symbolic link conflicted. It should have
|
||||
read the data using readlink(2) but read from the regular
|
||||
file the symbolic link pointed at.
|
||||
|
||||
- 'git-remote' did not like period in a remote's name.
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- added and clarified core.bare, core.legacyheaders configurations.
|
||||
|
||||
- updated "git-clone --depth" documentation.
|
||||
|
||||
|
||||
* Assorted git-gui fixes.
|
||||
58
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.3.adoc
Normal file
58
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.3.adoc
Normal file
@@ -0,0 +1,58 @@
|
||||
GIT v1.5.0.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.2
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- 'git.el' honors the commit coding system from the configuration.
|
||||
|
||||
- 'blameview' in contrib/ correctly digs deeper when a line is
|
||||
clicked.
|
||||
|
||||
- 'http-push' correctly makes sure the remote side has leading
|
||||
path. Earlier it started in the middle of the path, and
|
||||
incorrectly.
|
||||
|
||||
- 'git-merge' did not exit with non-zero status when the
|
||||
working tree was dirty and cannot fast forward. It does
|
||||
now.
|
||||
|
||||
- 'cvsexportcommit' does not lose yet-to-be-used message file.
|
||||
|
||||
- int-vs-size_t typefix when running combined diff on files
|
||||
over 2GB long.
|
||||
|
||||
- 'git apply --whitespace=strip' should not touch unmodified
|
||||
lines.
|
||||
|
||||
- 'git-mailinfo' choke when a logical header line was too long.
|
||||
|
||||
- 'git show A..B' did not error out. Negative ref ("not A" in
|
||||
this example) does not make sense for the purpose of the
|
||||
command, so now it errors out.
|
||||
|
||||
- 'git fmt-merge-msg --file' without file parameter did not
|
||||
correctly error out.
|
||||
|
||||
- 'git archimport' barfed upon encountering a commit without
|
||||
summary.
|
||||
|
||||
- 'git index-pack' did not protect itself from getting a short
|
||||
read out of pread(2).
|
||||
|
||||
- 'git http-push' had a few buffer overruns.
|
||||
|
||||
- Build dependency fixes to rebuild fetch.o when other headers
|
||||
change.
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- user-manual updates.
|
||||
|
||||
- Options to 'git remote add' were described insufficiently.
|
||||
|
||||
- Configuration format.suffix was not documented.
|
||||
|
||||
- Other formatting and spelling fixes.
|
||||
22
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.4.adoc
Normal file
22
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.4.adoc
Normal file
@@ -0,0 +1,22 @@
|
||||
GIT v1.5.0.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git.el does not add duplicate sign-off lines.
|
||||
|
||||
- git-commit shows the full stat of the resulting commit, not
|
||||
just about the files in the current directory, when run from
|
||||
a subdirectory.
|
||||
|
||||
- "git-checkout -m '@{8 hours ago}'" had a funny failure from
|
||||
eval; fixed.
|
||||
|
||||
- git-gui updates.
|
||||
|
||||
* Documentation updates
|
||||
|
||||
* User manual updates
|
||||
26
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.5.adoc
Normal file
26
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.5.adoc
Normal file
@@ -0,0 +1,26 @@
|
||||
GIT v1.5.0.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-merge (hence git-pull) did not refuse fast-forwarding
|
||||
when the working tree had local changes that would have
|
||||
conflicted with it.
|
||||
|
||||
- git.el does not add duplicate sign-off lines.
|
||||
|
||||
- git-commit shows the full stat of the resulting commit, not
|
||||
just about the files in the current directory, when run from
|
||||
a subdirectory.
|
||||
|
||||
- "git-checkout -m '@{8 hours ago}'" had a funny failure from
|
||||
eval; fixed.
|
||||
|
||||
- git-gui updates.
|
||||
|
||||
* Documentation updates
|
||||
|
||||
* User manual updates
|
||||
21
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.6.adoc
Normal file
21
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.6.adoc
Normal file
@@ -0,0 +1,21 @@
|
||||
GIT v1.5.0.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.5
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- a handful small fixes to gitweb.
|
||||
|
||||
- build procedure for user-manual is fixed not to require locally
|
||||
installed stylesheets.
|
||||
|
||||
- "git commit $paths" on paths whose earlier contents were
|
||||
already updated in the index were failing out.
|
||||
|
||||
* Documentation
|
||||
|
||||
- user-manual has better cross references.
|
||||
|
||||
- gitweb installation/deployment procedure is now documented.
|
||||
18
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.7.adoc
Normal file
18
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.7.adoc
Normal file
@@ -0,0 +1,18 @@
|
||||
GIT v1.5.0.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.0.6
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-upload-pack failed to close unused pipe ends, resulting
|
||||
in many zombies to hang around.
|
||||
|
||||
- git-rerere was recording the contents of earlier hunks
|
||||
duplicated in later hunks. This prevented resolving the same
|
||||
conflict when performing the same merge the other way around.
|
||||
|
||||
* Documentation
|
||||
|
||||
- a few documentation fixes from Debian package maintainer.
|
||||
469
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.adoc
Normal file
469
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.0.adoc
Normal file
@@ -0,0 +1,469 @@
|
||||
GIT v1.5.0 Release Notes
|
||||
========================
|
||||
|
||||
Old news
|
||||
--------
|
||||
|
||||
This section is for people who are upgrading from ancient
|
||||
versions of git. Although all of the changes in this section
|
||||
happened before the current v1.4.4 release, they are summarized
|
||||
here in the v1.5.0 release notes for people who skipped earlier
|
||||
versions.
|
||||
|
||||
As of git v1.5.0 there are some optional features that changes
|
||||
the repository to allow data to be stored and transferred more
|
||||
efficiently. These features are not enabled by default, as they
|
||||
will make the repository unusable with older versions of git.
|
||||
Specifically, the available options are:
|
||||
|
||||
- There is a configuration variable core.legacyheaders that
|
||||
changes the format of loose objects so that they are more
|
||||
efficient to pack and to send out of the repository over git
|
||||
native protocol, since v1.4.2. However, loose objects
|
||||
written in the new format cannot be read by git older than
|
||||
that version; people fetching from your repository using
|
||||
older clients over dumb transports (e.g. http) using older
|
||||
versions of git will also be affected.
|
||||
|
||||
To let git use the new loose object format, you have to
|
||||
set core.legacyheaders to false.
|
||||
|
||||
- Since v1.4.3, configuration repack.usedeltabaseoffset allows
|
||||
packfile to be created in more space efficient format, which
|
||||
cannot be read by git older than that version.
|
||||
|
||||
To let git use the new format for packfiles, you have to
|
||||
set repack.usedeltabaseoffset to true.
|
||||
|
||||
The above two new features are not enabled by default and you
|
||||
have to explicitly ask for them, because they make repositories
|
||||
unreadable by older versions of git, and in v1.5.0 we still do
|
||||
not enable them by default for the same reason. We will change
|
||||
this default probably 1 year after 1.4.2's release, when it is
|
||||
reasonable to expect everybody to have new enough version of
|
||||
git.
|
||||
|
||||
- 'git pack-refs' appeared in v1.4.4; this command allows tags
|
||||
to be accessed much more efficiently than the traditional
|
||||
'one-file-per-tag' format. Older git-native clients can
|
||||
still fetch from a repository that packed and pruned refs
|
||||
(the server side needs to run the up-to-date version of git),
|
||||
but older dumb transports cannot. Packing of refs is done by
|
||||
an explicit user action, either by use of "git pack-refs
|
||||
--prune" command or by use of "git gc" command.
|
||||
|
||||
- 'git -p' to paginate anything -- many commands do pagination
|
||||
by default on a tty. Introduced between v1.4.1 and v1.4.2;
|
||||
this may surprise old timers.
|
||||
|
||||
- 'git archive' superseded 'git tar-tree' in v1.4.3;
|
||||
|
||||
- 'git cvsserver' was new invention in v1.3.0;
|
||||
|
||||
- 'git repo-config', 'git grep', 'git rebase' and 'gitk' were
|
||||
seriously enhanced during v1.4.0 timeperiod.
|
||||
|
||||
- 'gitweb' became part of git.git during v1.4.0 timeperiod and
|
||||
seriously modified since then.
|
||||
|
||||
- reflog is an v1.4.0 invention. This allows you to name a
|
||||
revision that a branch used to be at (e.g. "git diff
|
||||
master@{yesterday} master" allows you to see changes since
|
||||
yesterday's tip of the branch).
|
||||
|
||||
|
||||
Updates in v1.5.0 since v1.4.4 series
|
||||
-------------------------------------
|
||||
|
||||
* Index manipulation
|
||||
|
||||
- git-add is to add contents to the index (aka "staging area"
|
||||
for the next commit), whether the file the contents happen to
|
||||
be is an existing one or a newly created one.
|
||||
|
||||
- git-add without any argument does not add everything
|
||||
anymore. Use 'git-add .' instead. Also you can add
|
||||
otherwise ignored files with an -f option.
|
||||
|
||||
- git-add tries to be more friendly to users by offering an
|
||||
interactive mode ("git-add -i").
|
||||
|
||||
- git-commit <path> used to refuse to commit if <path> was
|
||||
different between HEAD and the index (i.e. update-index was
|
||||
used on it earlier). This check was removed.
|
||||
|
||||
- git-rm is much saner and safer. It is used to remove paths
|
||||
from both the index file and the working tree, and makes sure
|
||||
you are not losing any local modification before doing so.
|
||||
|
||||
- git-reset <tree> <paths>... can be used to revert index
|
||||
entries for selected paths.
|
||||
|
||||
- git-update-index is much less visible. Many suggestions to
|
||||
use the command in git output and documentation have now been
|
||||
replaced by simpler commands such as "git add" or "git rm".
|
||||
|
||||
|
||||
* Repository layout and objects transfer
|
||||
|
||||
- The data for origin repository is stored in the configuration
|
||||
file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly
|
||||
created clones. The latter is still supported and there is
|
||||
no need to convert your existing repository if you are
|
||||
already comfortable with your workflow with the layout.
|
||||
|
||||
- git-clone always uses what is known as "separate remote"
|
||||
layout for a newly created repository with a working tree.
|
||||
|
||||
A repository with the separate remote layout starts with only
|
||||
one default branch, 'master', to be used for your own
|
||||
development. Unlike the traditional layout that copied all
|
||||
the upstream branches into your branch namespace (while
|
||||
renaming their 'master' to your 'origin'), the new layout
|
||||
puts upstream branches into local "remote-tracking branches"
|
||||
with their own namespace. These can be referenced with names
|
||||
such as "origin/$upstream_branch_name" and are stored in
|
||||
.git/refs/remotes rather than .git/refs/heads where normal
|
||||
branches are stored.
|
||||
|
||||
This layout keeps your own branch namespace less cluttered,
|
||||
avoids name collision with your upstream, makes it possible
|
||||
to automatically track new branches created at the remote
|
||||
after you clone from it, and makes it easier to interact with
|
||||
more than one remote repository (you can use "git remote" to
|
||||
add other repositories to track). There might be some
|
||||
surprises:
|
||||
|
||||
* 'git branch' does not show the remote tracking branches.
|
||||
It only lists your own branches. Use '-r' option to view
|
||||
the tracking branches.
|
||||
|
||||
* If you are forking off of a branch obtained from the
|
||||
upstream, you would have done something like 'git branch
|
||||
my-next next', because traditional layout dropped the
|
||||
tracking branch 'next' into your own branch namespace.
|
||||
With the separate remote layout, you say 'git branch next
|
||||
origin/next', which allows you to use the matching name
|
||||
'next' for your own branch. It also allows you to track a
|
||||
remote other than 'origin' (i.e. where you initially cloned
|
||||
from) and fork off of a branch from there the same way
|
||||
(e.g. "git branch mingw j6t/master").
|
||||
|
||||
Repositories initialized with the traditional layout continue
|
||||
to work.
|
||||
|
||||
- New branches that appear on the origin side after a clone is
|
||||
made are also tracked automatically. This is done with an
|
||||
wildcard refspec "refs/heads/*:refs/remotes/origin/*", which
|
||||
older git does not understand, so if you clone with 1.5.0,
|
||||
you would need to downgrade remote.*.fetch in the
|
||||
configuration file to specify each branch you are interested
|
||||
in individually if you plan to fetch into the repository with
|
||||
older versions of git (but why would you?).
|
||||
|
||||
- Similarly, wildcard refspec "refs/heads/*:refs/remotes/me/*"
|
||||
can be given to "git-push" command to update the tracking
|
||||
branches that is used to track the repository you are pushing
|
||||
from on the remote side.
|
||||
|
||||
- git-branch and git-show-branch know remote tracking branches
|
||||
(use the command line switch "-r" to list only tracked branches).
|
||||
|
||||
- git-push can now be used to delete a remote branch or a tag.
|
||||
This requires the updated git on the remote side (use "git
|
||||
push <remote> :refs/heads/<branch>" to delete "branch").
|
||||
|
||||
- git-push more aggressively keeps the transferred objects
|
||||
packed. Earlier we recommended to monitor amount of loose
|
||||
objects and repack regularly, but you should repack when you
|
||||
accumulated too many small packs this way as well. Updated
|
||||
git-count-objects helps you with this.
|
||||
|
||||
- git-fetch also more aggressively keeps the transferred objects
|
||||
packed. This behavior of git-push and git-fetch can be
|
||||
tweaked with a single configuration transfer.unpacklimit (but
|
||||
usually there should not be any need for a user to tweak it).
|
||||
|
||||
- A new command, git-remote, can help you manage your remote
|
||||
tracking branch definitions.
|
||||
|
||||
- You may need to specify explicit paths for upload-pack and/or
|
||||
receive-pack due to your ssh daemon configuration on the
|
||||
other end. This can now be done via remote.*.uploadpack and
|
||||
remote.*.receivepack configuration.
|
||||
|
||||
|
||||
* Bare repositories
|
||||
|
||||
- Certain commands change their behavior in a bare repository
|
||||
(i.e. a repository without associated working tree). We use
|
||||
a fairly conservative heuristic (if $GIT_DIR is ".git", or
|
||||
ends with "/.git", the repository is not bare) to decide if a
|
||||
repository is bare, but "core.bare" configuration variable
|
||||
can be used to override the heuristic when it misidentifies
|
||||
your repository.
|
||||
|
||||
- git-fetch used to complain updating the current branch but
|
||||
this is now allowed for a bare repository. So is the use of
|
||||
'git-branch -f' to update the current branch.
|
||||
|
||||
- Porcelain-ish commands that require a working tree refuses to
|
||||
work in a bare repository.
|
||||
|
||||
|
||||
* Reflog
|
||||
|
||||
- Reflog records the history from the view point of the local
|
||||
repository. In other words, regardless of the real history,
|
||||
the reflog shows the history as seen by one particular
|
||||
repository (this enables you to ask "what was the current
|
||||
revision in _this_ repository, yesterday at 1pm?"). This
|
||||
facility is enabled by default for repositories with working
|
||||
trees, and can be accessed with the "branch@{time}" and
|
||||
"branch@{Nth}" notation.
|
||||
|
||||
- "git show-branch" learned showing the reflog data with the
|
||||
new -g option. "git log" has -g option to view reflog
|
||||
entries in a more verbose manner.
|
||||
|
||||
- git-branch knows how to rename branches and moves existing
|
||||
reflog data from the old branch to the new one.
|
||||
|
||||
- In addition to the reflog support in v1.4.4 series, HEAD
|
||||
reference maintains its own log. "HEAD@{5.minutes.ago}"
|
||||
means the commit you were at 5 minutes ago, which takes
|
||||
branch switching into account. If you want to know where the
|
||||
tip of your current branch was at 5 minutes ago, you need to
|
||||
explicitly say its name (e.g. "master@{5.minutes.ago}") or
|
||||
omit the refname altogether i.e. "@{5.minutes.ago}".
|
||||
|
||||
- The commits referred to by reflog entries are now protected
|
||||
against pruning. The new command "git reflog expire" can be
|
||||
used to truncate older reflog entries and entries that refer
|
||||
to commits that have been pruned away previously with older
|
||||
versions of git.
|
||||
|
||||
Existing repositories that have been using reflog may get
|
||||
complaints from fsck-objects and may not be able to run
|
||||
git-repack, if you had run git-prune from older git; please
|
||||
run "git reflog expire --stale-fix --all" first to remove
|
||||
reflog entries that refer to commits that are no longer in
|
||||
the repository when that happens.
|
||||
|
||||
|
||||
* Cruft removal
|
||||
|
||||
- We used to say "old commits are retrievable using reflog and
|
||||
'master@{yesterday}' syntax as long as you haven't run
|
||||
git-prune". We no longer have to say the latter half of the
|
||||
above sentence, as git-prune does not remove things reachable
|
||||
from reflog entries.
|
||||
|
||||
- There is a toplevel garbage collector script, 'git-gc', that
|
||||
runs periodic cleanup functions, including 'git-repack -a -d',
|
||||
'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere
|
||||
gc'.
|
||||
|
||||
- The output from fsck ("fsck-objects" is called just "fsck"
|
||||
now, but the old name continues to work) was needlessly
|
||||
alarming in that it warned missing objects that are reachable
|
||||
only from dangling objects. This has been corrected and the
|
||||
output is much more useful.
|
||||
|
||||
|
||||
* Detached HEAD
|
||||
|
||||
- You can use 'git-checkout' to check out an arbitrary revision
|
||||
or a tag as well, instead of named branches. This will
|
||||
dissociate your HEAD from the branch you are currently on.
|
||||
|
||||
A typical use of this feature is to "look around". E.g.
|
||||
|
||||
$ git checkout v2.6.16
|
||||
... compile, test, etc.
|
||||
$ git checkout v2.6.17
|
||||
... compile, test, etc.
|
||||
|
||||
- After detaching your HEAD, you can go back to an existing
|
||||
branch with usual "git checkout $branch". Also you can
|
||||
start a new branch using "git checkout -b $newbranch" to
|
||||
start a new branch at that commit.
|
||||
|
||||
- You can even pull from other repositories, make merges and
|
||||
commits while your HEAD is detached. Also you can use "git
|
||||
reset" to jump to arbitrary commit, while still keeping your
|
||||
HEAD detached.
|
||||
|
||||
Remember that a detached state is volatile, i.e. it will be forgotten
|
||||
as soon as you move away from it with the checkout or reset command,
|
||||
unless a branch is created from it as mentioned above. It is also
|
||||
possible to rescue a lost detached state from the HEAD reflog.
|
||||
|
||||
|
||||
* Packed refs
|
||||
|
||||
- Repositories with hundreds of tags have been paying large
|
||||
overhead, both in storage and in runtime, due to the
|
||||
traditional one-ref-per-file format. A new command,
|
||||
git-pack-refs, can be used to "pack" them in more efficient
|
||||
representation (you can let git-gc do this for you).
|
||||
|
||||
- Clones and fetches over dumb transports are now aware of
|
||||
packed refs and can download from repositories that use
|
||||
them.
|
||||
|
||||
|
||||
* Configuration
|
||||
|
||||
- configuration related to color setting are consolidated under
|
||||
color.* namespace (older diff.color.*, status.color.* are
|
||||
still supported).
|
||||
|
||||
- 'git-repo-config' command is accessible as 'git-config' now.
|
||||
|
||||
|
||||
* Updated features
|
||||
|
||||
- git-describe uses better criteria to pick a base ref. It
|
||||
used to pick the one with the newest timestamp, but now it
|
||||
picks the one that is topologically the closest (that is,
|
||||
among ancestors of commit C, the ref T that has the shortest
|
||||
output from "git-rev-list T..C" is chosen).
|
||||
|
||||
- git-describe gives the number of commits since the base ref
|
||||
between the refname and the hash suffix. E.g. the commit one
|
||||
before v2.6.20-rc6 in the kernel repository is:
|
||||
|
||||
v2.6.20-rc5-306-ga21b069
|
||||
|
||||
which tells you that its object name begins with a21b069,
|
||||
v2.6.20-rc5 is an ancestor of it (meaning, the commit
|
||||
contains everything -rc5 has), and there are 306 commits
|
||||
since v2.6.20-rc5.
|
||||
|
||||
- git-describe with --abbrev=0 can be used to show only the
|
||||
name of the base ref.
|
||||
|
||||
- git-blame learned a new option, --incremental, that tells it
|
||||
to output the blames as they are assigned. A sample script
|
||||
to use it is also included as contrib/blameview.
|
||||
|
||||
- git-blame starts annotating from the working tree by default.
|
||||
|
||||
|
||||
* Less external dependency
|
||||
|
||||
- We no longer require the "merge" program from the RCS suite.
|
||||
All 3-way file-level merges are now done internally.
|
||||
|
||||
- The original implementation of git-merge-recursive which was
|
||||
in Python has been removed; we have a C implementation of it
|
||||
now.
|
||||
|
||||
- git-shortlog is no longer a Perl script. It no longer
|
||||
requires output piped from git-log; it can accept revision
|
||||
parameters directly on the command line.
|
||||
|
||||
|
||||
* I18n
|
||||
|
||||
- We have always encouraged the commit message to be encoded in
|
||||
UTF-8, but the users are allowed to use legacy encoding as
|
||||
appropriate for their projects. This will continue to be the
|
||||
case. However, a non UTF-8 commit encoding _must_ be
|
||||
explicitly set with i18n.commitencoding in the repository
|
||||
where a commit is made; otherwise git-commit-tree will
|
||||
complain if the log message does not look like a valid UTF-8
|
||||
string.
|
||||
|
||||
- The value of i18n.commitencoding in the originating
|
||||
repository is recorded in the commit object on the "encoding"
|
||||
header, if it is not UTF-8. git-log and friends notice this,
|
||||
and re-encodes the message to the log output encoding when
|
||||
displaying, if they are different. The log output encoding
|
||||
is determined by "git log --encoding=<encoding>",
|
||||
i18n.logoutputencoding configuration, or i18n.commitencoding
|
||||
configuration, in the decreasing order of preference, and
|
||||
defaults to UTF-8.
|
||||
|
||||
- Tools for e-mailed patch application now default to -u
|
||||
behavior; i.e. it always re-codes from the e-mailed encoding
|
||||
to the encoding specified with i18n.commitencoding. This
|
||||
unfortunately forces projects that have happily been using a
|
||||
legacy encoding without setting i18n.commitencoding to set
|
||||
the configuration, but taken with other improvement, please
|
||||
excuse us for this very minor one-time inconvenience.
|
||||
|
||||
|
||||
* e-mailed patches
|
||||
|
||||
- See the above I18n section.
|
||||
|
||||
- git-format-patch now enables --binary without being asked.
|
||||
git-am does _not_ default to it, as sending binary patch via
|
||||
e-mail is unusual and is harder to review than textual
|
||||
patches and it is prudent to require the person who is
|
||||
applying the patch to explicitly ask for it.
|
||||
|
||||
- The default suffix for git-format-patch output is now ".patch",
|
||||
not ".txt". This can be changed with --suffix=.txt option,
|
||||
or setting the config variable "format.suffix" to ".txt".
|
||||
|
||||
|
||||
* Foreign SCM interfaces
|
||||
|
||||
- git-svn now requires the Perl SVN:: libraries, the
|
||||
command-line backend was too slow and limited.
|
||||
|
||||
- the 'commit' subcommand of git-svn has been renamed to
|
||||
'set-tree', and 'dcommit' is the recommended replacement for
|
||||
day-to-day work.
|
||||
|
||||
- git fast-import backend.
|
||||
|
||||
|
||||
* User support
|
||||
|
||||
- Quite a lot of documentation updates.
|
||||
|
||||
- Bash completion scripts have been updated heavily.
|
||||
|
||||
- Better error messages for often used Porcelainish commands.
|
||||
|
||||
- Git GUI. This is a simple Tk based graphical interface for
|
||||
common Git operations.
|
||||
|
||||
|
||||
* Sliding mmap
|
||||
|
||||
- We used to assume that we can mmap the whole packfile while
|
||||
in use, but with a large project this consumes huge virtual
|
||||
memory space and truly huge ones would not fit in the
|
||||
userland address space on 32-bit platforms. We now mmap huge
|
||||
packfile in pieces to avoid this problem.
|
||||
|
||||
|
||||
* Shallow clones
|
||||
|
||||
- There is a partial support for 'shallow' repositories that
|
||||
keeps only recent history. A 'shallow clone' is created by
|
||||
specifying how deep that truncated history should be
|
||||
(e.g. "git clone --depth 5 git://some.where/repo.git").
|
||||
|
||||
Currently a shallow repository has number of limitations:
|
||||
|
||||
- Cloning and fetching _from_ a shallow clone are not
|
||||
supported (nor tested -- so they might work by accident but
|
||||
they are not expected to).
|
||||
|
||||
- Pushing from nor into a shallow clone are not expected to
|
||||
work.
|
||||
|
||||
- Merging inside a shallow repository would work as long as a
|
||||
merge base is found in the recent history, but otherwise it
|
||||
will be like merging unrelated histories and may result in
|
||||
huge conflicts.
|
||||
|
||||
but this would be more than adequate for people who want to
|
||||
look at near the tip of a big project with a deep history and
|
||||
send patches in e-mail format.
|
||||
65
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.1.adoc
Normal file
65
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.1.adoc
Normal file
@@ -0,0 +1,65 @@
|
||||
GIT v1.5.1.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1
|
||||
------------------
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- The --left-right option of rev-list and friends is documented.
|
||||
|
||||
- The documentation for cvsimport has been majorly improved.
|
||||
|
||||
- "git-show-ref --exclude-existing" was documented.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- The implementation of -p option in "git cvsexportcommit" had
|
||||
the meaning of -C (context reduction) option wrong, and
|
||||
loosened the context requirements when it was told to be
|
||||
strict.
|
||||
|
||||
- "git cvsserver" did not behave like the real cvsserver when
|
||||
client side removed a file from the working tree without
|
||||
doing anything else on the path. In such a case, it should
|
||||
restore it from the checked out revision.
|
||||
|
||||
- "git fsck" issued an alarming error message on detached
|
||||
HEAD. It is not an error since at least 1.5.0.
|
||||
|
||||
- "git send-email" produced of References header of unbounded length;
|
||||
fixed this with line-folding.
|
||||
|
||||
- "git archive" to download from remote site should not
|
||||
require you to be in a git repository, but it incorrectly
|
||||
did.
|
||||
|
||||
- "git apply" ignored -p<n> for "diff --git" formatted
|
||||
patches.
|
||||
|
||||
- "git rerere" recorded a conflict that had one side empty
|
||||
(the other side adds) incorrectly; this made merging in the
|
||||
other direction fail to use previously recorded resolution.
|
||||
|
||||
- t4200 test was broken where "wc -l" pads its output with
|
||||
spaces.
|
||||
|
||||
- "git branch -m old new" to rename branch did not work
|
||||
without a configuration file in ".git/config".
|
||||
|
||||
- The sample hook for notification e-mail was misnamed.
|
||||
|
||||
- gitweb did not show type-changing patch correctly in the
|
||||
blobdiff view.
|
||||
|
||||
- git-svn did not error out with incorrect command line options.
|
||||
|
||||
- git-svn fell into an infinite loop when insanely long commit
|
||||
message was found.
|
||||
|
||||
- git-svn dcommit and rebase was confused by patches that were
|
||||
merged from another branch that is managed by git-svn.
|
||||
|
||||
- git-svn used to get confused when globbing remote branch/tag
|
||||
spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
|
||||
is used and there was a plain file that matched the glob.
|
||||
50
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.2.adoc
Normal file
50
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.2.adoc
Normal file
@@ -0,0 +1,50 @@
|
||||
GIT v1.5.1.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.1
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git clone" over http from a repository that has lost the
|
||||
loose refs by running "git pack-refs" were broken (a code to
|
||||
deal with this was added to "git fetch" in v1.5.0, but it
|
||||
was missing from "git clone").
|
||||
|
||||
- "git diff a/ b/" incorrectly fell in "diff between two
|
||||
filesystem objects" codepath, when the user most likely
|
||||
wanted to limit the extent of output to two tracked
|
||||
directories.
|
||||
|
||||
- git-quiltimport had the same bug as we fixed for
|
||||
git-applymbox in v1.5.1.1 -- it gave an alarming "did not
|
||||
have any patch" message (but did not actually fail and was
|
||||
harmless).
|
||||
|
||||
- various git-svn fixes.
|
||||
|
||||
- Sample update hook incorrectly always refused requests to
|
||||
delete branches through push.
|
||||
|
||||
- git-blame on a very long working tree path had buffer
|
||||
overrun problem.
|
||||
|
||||
- git-apply did not like to be fed two patches in a row that created
|
||||
and then modified the same file.
|
||||
|
||||
- git-svn was confused when a non-project was stored directly under
|
||||
trunk/, branches/ and tags/.
|
||||
|
||||
- git-svn wants the Error.pm module that was at least as new
|
||||
as what we ship as part of git; install ours in our private
|
||||
installation location if the one on the system is older.
|
||||
|
||||
- An earlier update to command line integer parameter parser was
|
||||
botched and made 'update-index --cacheinfo' completely useless.
|
||||
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- Various documentation updates from J. Bruce Fields, Frank
|
||||
Lichtenheld, Alex Riesen and others. Andrew Ruder started a
|
||||
war on undocumented options.
|
||||
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.3.adoc
Normal file
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.3.adoc
Normal file
@@ -0,0 +1,45 @@
|
||||
GIT v1.5.1.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.2
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-add tried to optimize by finding common leading
|
||||
directories across its arguments but botched, causing very
|
||||
confused behaviour.
|
||||
|
||||
- unofficial rpm.spec file shipped with git was letting
|
||||
ETC_GITCONFIG set to /usr/etc/gitconfig. Tweak the official
|
||||
Makefile to make it harder for distro people to make the
|
||||
same mistake, by setting the variable to /etc/gitconfig if
|
||||
prefix is set to /usr.
|
||||
|
||||
- git-svn inconsistently stripped away username from the URL
|
||||
only when svnsync_props was in use.
|
||||
|
||||
- git-svn got confused when handling symlinks on Mac OS.
|
||||
|
||||
- git-send-email was not quoting recipient names that have
|
||||
period '.' in them. Also it did not allow overriding
|
||||
envelope sender, which made it impossible to send patches to
|
||||
certain subscriber-only lists.
|
||||
|
||||
- built-in write_tree() routine had a sequence that renamed a
|
||||
file that is still open, which some systems did not like.
|
||||
|
||||
- when memory is very tight, sliding mmap code to read
|
||||
packfiles incorrectly closed the fd that was still being
|
||||
used to read the pack.
|
||||
|
||||
- import-tars contributed front-end for fastimport was passing
|
||||
wrong directory modes without checking.
|
||||
|
||||
- git-fastimport trusted its input too much and allowed to
|
||||
create corrupt tree objects with entries without a name.
|
||||
|
||||
- git-fetch needlessly barfed when too long reflog action
|
||||
description was given by the caller.
|
||||
|
||||
Also contains various documentation updates.
|
||||
30
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.4.adoc
Normal file
30
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.4.adoc
Normal file
@@ -0,0 +1,30 @@
|
||||
GIT v1.5.1.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git-http-fetch" did not work around a bug in libcurl
|
||||
earlier than 7.16 (curl_multi_remove_handle() was broken).
|
||||
|
||||
- "git cvsserver" handles a file that was once removed and
|
||||
then added again correctly.
|
||||
|
||||
- import-tars script (in contrib/) handles GNU tar archives
|
||||
that contain pathnames longer than 100 bytes (long-link
|
||||
extension) correctly.
|
||||
|
||||
- xdelta test program did not build correctly.
|
||||
|
||||
- gitweb sometimes tried incorrectly to apply function to
|
||||
decode utf8 twice, resulting in corrupt output.
|
||||
|
||||
- "git blame -C" mishandled text at the end of a group of
|
||||
lines.
|
||||
|
||||
- "git log/rev-list --boundary" did not produce output
|
||||
correctly without --left-right option.
|
||||
|
||||
- Many documentation updates.
|
||||
42
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.5.adoc
Normal file
42
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.5.adoc
Normal file
@@ -0,0 +1,42 @@
|
||||
GIT v1.5.1.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-send-email did not understand aliases file for mutt, which
|
||||
allows leading whitespaces.
|
||||
|
||||
- git-format-patch emitted Content-Type and Content-Transfer-Encoding
|
||||
headers for non ASCII contents, but failed to add MIME-Version.
|
||||
|
||||
- git-name-rev had a buffer overrun with a deep history.
|
||||
|
||||
- contributed script import-tars did not get the directory in
|
||||
tar archives interpreted correctly.
|
||||
|
||||
- git-svn was reported to segfault for many people on list and
|
||||
#git; hopefully this has been fixed.
|
||||
|
||||
- "git-svn clone" does not try to minimize the URL
|
||||
(i.e. connect to higher level hierarchy) by default, as this
|
||||
can prevent clone to fail if only part of the repository
|
||||
(e.g. 'trunk') is open to public.
|
||||
|
||||
- "git checkout branch^0" did not detach the head when you are
|
||||
already on 'branch'; backported the fix from the 'master'.
|
||||
|
||||
- "git-config section.var" did not correctly work when
|
||||
existing configuration file had both [section] and [section "name"]
|
||||
next to each other.
|
||||
|
||||
- "git clone ../other-directory" was fooled if the current
|
||||
directory $PWD points at is a symbolic link.
|
||||
|
||||
- (build) tree_entry_extract() function was both static inline
|
||||
and extern, which caused trouble compiling with Forte12
|
||||
compilers on Sun.
|
||||
|
||||
- Many many documentation fixes and updates.
|
||||
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.6.adoc
Normal file
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.6.adoc
Normal file
@@ -0,0 +1,45 @@
|
||||
GIT v1.5.1.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.1.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-send-email did not understand aliases file for mutt, which
|
||||
allows leading whitespaces.
|
||||
|
||||
- git-format-patch emitted Content-Type and Content-Transfer-Encoding
|
||||
headers for non ASCII contents, but failed to add MIME-Version.
|
||||
|
||||
- git-name-rev had a buffer overrun with a deep history.
|
||||
|
||||
- contributed script import-tars did not get the directory in
|
||||
tar archives interpreted correctly.
|
||||
|
||||
- git-svn was reported to segfault for many people on list and
|
||||
#git; hopefully this has been fixed.
|
||||
|
||||
- git-svn also had a bug to crash svnserve by sending a bad
|
||||
sequence of requests.
|
||||
|
||||
- "git-svn clone" does not try to minimize the URL
|
||||
(i.e. connect to higher level hierarchy) by default, as this
|
||||
can prevent clone to fail if only part of the repository
|
||||
(e.g. 'trunk') is open to public.
|
||||
|
||||
- "git checkout branch^0" did not detach the head when you are
|
||||
already on 'branch'; backported the fix from the 'master'.
|
||||
|
||||
- "git-config section.var" did not correctly work when
|
||||
existing configuration file had both [section] and [section "name"]
|
||||
next to each other.
|
||||
|
||||
- "git clone ../other-directory" was fooled if the current
|
||||
directory $PWD points at is a symbolic link.
|
||||
|
||||
- (build) tree_entry_extract() function was both static inline
|
||||
and extern, which caused trouble compiling with Forte12
|
||||
compilers on Sun.
|
||||
|
||||
- Many many documentation fixes and updates.
|
||||
371
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.adoc
Normal file
371
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.1.adoc
Normal file
@@ -0,0 +1,371 @@
|
||||
GIT v1.5.1 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.0
|
||||
--------------------
|
||||
|
||||
* Deprecated commands and options.
|
||||
|
||||
- git-diff-stages and git-resolve have been removed.
|
||||
|
||||
* New commands and options.
|
||||
|
||||
- "git log" and friends take --reverse, which instructs them
|
||||
to give their output in the order opposite from their usual.
|
||||
They typically output from new to old, but with this option
|
||||
their output would read from old to new. "git shortlog"
|
||||
usually lists older commits first, but with this option,
|
||||
they are shown from new to old.
|
||||
|
||||
- "git log --pretty=format:<string>" to allow more flexible
|
||||
custom log output.
|
||||
|
||||
- "git diff" learned --ignore-space-at-eol. This is a weaker
|
||||
form of --ignore-space-change.
|
||||
|
||||
- "git diff --no-index pathA pathB" can be used as diff
|
||||
replacement with git specific enhancements.
|
||||
|
||||
- "git diff --no-index" can read from '-' (standard input).
|
||||
|
||||
- "git diff" also learned --exit-code to exit with non-zero
|
||||
status when it found differences. In the future we might
|
||||
want to make this the default but that would be a rather big
|
||||
backward incompatible change; it will stay as an option for
|
||||
now.
|
||||
|
||||
- "git diff --quiet" is --exit-code with output turned off,
|
||||
meant for scripted use to quickly determine if there is any
|
||||
tree-level difference.
|
||||
|
||||
- Textual patch generation with "git diff" without -w/-b
|
||||
option has been significantly optimized. "git blame" got
|
||||
faster because of the same change.
|
||||
|
||||
- "git log" and "git rev-list" has been optimized
|
||||
significantly when they are used with pathspecs.
|
||||
|
||||
- "git branch --track" can be used to set up configuration
|
||||
variables to help it easier to base your work on branches
|
||||
you track from a remote site.
|
||||
|
||||
- "git format-patch --attach" now emits attachments. Use
|
||||
--inline to get an inlined multipart/mixed.
|
||||
|
||||
- "git name-rev" learned --refs=<pattern>, to limit the tags
|
||||
used for naming the given revisions only to the ones
|
||||
matching the given pattern.
|
||||
|
||||
- "git remote update" is to run "git fetch" for defined remotes
|
||||
to update tracking branches.
|
||||
|
||||
- "git cvsimport" can now take '-d' to talk with a CVS
|
||||
repository different from what are recorded in CVS/Root
|
||||
(overriding it with environment CVSROOT does not work).
|
||||
|
||||
- "git bundle" can help sneaker-netting your changes between
|
||||
repositories.
|
||||
|
||||
- "git mergetool" can help 3-way file-level conflict
|
||||
resolution with your favorite graphical merge tools.
|
||||
|
||||
- A new configuration "core.symlinks" can be used to disable
|
||||
symlinks on filesystems that do not support them; they are
|
||||
checked out as regular files instead.
|
||||
|
||||
- You can name a commit object with its first line of the
|
||||
message. The syntax to use is ':/message text'. E.g.
|
||||
|
||||
$ git show ":/object name: introduce ':/<oneline prefix>' notation"
|
||||
|
||||
means the same thing as:
|
||||
|
||||
$ git show 28a4d940443806412effa246ecc7768a21553ec7
|
||||
|
||||
- "git bisect" learned a new command "run" that takes a script
|
||||
to run after each revision is checked out to determine if it
|
||||
is good or bad, to automate the bisection process.
|
||||
|
||||
- "git log" family learned a new traversal option --first-parent,
|
||||
which does what the name suggests.
|
||||
|
||||
|
||||
* Updated behavior of existing commands.
|
||||
|
||||
- "git-merge-recursive" used to barf when there are more than
|
||||
one common ancestors for the merge, and merging them had a
|
||||
rename/rename conflict. This has been fixed.
|
||||
|
||||
- "git fsck" does not barf on corrupt loose objects.
|
||||
|
||||
- "git rm" does not remove newly added files without -f.
|
||||
|
||||
- "git archimport" allows remapping when coming up with git
|
||||
branch names from arch names.
|
||||
|
||||
- git-svn got almost a rewrite.
|
||||
|
||||
- core.autocrlf configuration, when set to 'true', makes git
|
||||
to convert CRLF at the end of lines in text files to LF when
|
||||
reading from the filesystem, and convert in reverse when
|
||||
writing to the filesystem. The variable can be set to
|
||||
'input', in which case the conversion happens only while
|
||||
reading from the filesystem but files are written out with
|
||||
LF at the end of lines. Currently, which paths to consider
|
||||
'text' (i.e. be subjected to the autocrlf mechanism) is
|
||||
decided purely based on the contents, but the plan is to
|
||||
allow users to explicitly override this heuristic based on
|
||||
paths.
|
||||
|
||||
- The behavior of 'git-apply', when run in a subdirectory,
|
||||
without --index nor --cached were inconsistent with that of
|
||||
the command with these options. This was fixed to match the
|
||||
behavior with --index. A patch that is meant to be applied
|
||||
with -p1 from the toplevel of the project tree can be
|
||||
applied with any custom -p<n> option. A patch that is not
|
||||
relative to the toplevel needs to be applied with -p<n>
|
||||
option with or without --index (or --cached).
|
||||
|
||||
- "git diff" outputs a trailing HT when pathnames have embedded
|
||||
SP on +++/--- header lines, in order to help "GNU patch" to
|
||||
parse its output. "git apply" was already updated to accept
|
||||
this modified output format since ce74618d (Sep 22, 2006).
|
||||
|
||||
- "git cvsserver" runs hooks/update and honors its exit status.
|
||||
|
||||
- "git cvsserver" can be told to send everything with -kb.
|
||||
|
||||
- "git diff --check" also honors the --color output option.
|
||||
|
||||
- "git name-rev" used to stress the fact that a ref is a tag too
|
||||
much, by saying something like "v1.2.3^0~22". It now says
|
||||
"v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does
|
||||
not talk about an ancestor of the commit that is tagged, which
|
||||
makes sense).
|
||||
|
||||
- "git rev-list --boundary" now shows boundary markers for the
|
||||
commits omitted by --max-age and --max-count condition.
|
||||
|
||||
- The configuration mechanism now reads $(prefix)/etc/gitconfig.
|
||||
|
||||
- "git apply --verbose" shows what preimage lines were wanted
|
||||
when it couldn't find them.
|
||||
|
||||
- "git status" in a read-only repository got a bit saner.
|
||||
|
||||
- "git fetch" (hence "git clone" and "git pull") are less
|
||||
noisy when the output does not go to tty.
|
||||
|
||||
- "git fetch" between repositories with many refs were slow
|
||||
even when there are not many changes that needed
|
||||
transferring. This has been sped up by partially rewriting
|
||||
the heaviest parts in C.
|
||||
|
||||
- "git mailinfo" which splits an e-mail into a patch and the
|
||||
meta-information was rewritten, thanks to Don Zickus. It
|
||||
handles nested multipart better. The command was broken for
|
||||
a brief period on 'master' branch since 1.5.0 but the
|
||||
breakage is fixed now.
|
||||
|
||||
- send-email learned configurable bcc and chain-reply-to.
|
||||
|
||||
- "git remote show $remote" also talks about branches that
|
||||
would be pushed if you run "git push remote".
|
||||
|
||||
- Using objects from packs is now seriously optimized by clever
|
||||
use of a cache. This should be most noticeable in git-log
|
||||
family of commands that involve reading many tree objects.
|
||||
In addition, traversing revisions while filtering changes
|
||||
with pathspecs is made faster by terminating the comparison
|
||||
between the trees as early as possible.
|
||||
|
||||
|
||||
* Hooks
|
||||
|
||||
- The part to send out notification e-mails was removed from
|
||||
the sample update hook, as it was not an appropriate place
|
||||
to do so. The proper place to do this is the new post-receive
|
||||
hook. An example hook has been added to contrib/hooks/.
|
||||
|
||||
|
||||
* Others
|
||||
|
||||
- git-revert, git-gc and git-cherry-pick are now built-ins.
|
||||
|
||||
Fixes since v1.5.0
|
||||
------------------
|
||||
|
||||
These are all in v1.5.0.x series.
|
||||
|
||||
* Documentation updates
|
||||
|
||||
- Clarifications and corrections to 1.5.0 release notes.
|
||||
|
||||
- The main documentation did not link to git-remote documentation.
|
||||
|
||||
- Clarified introductory text of git-rebase documentation.
|
||||
|
||||
- Converted remaining mentions of update-index on Porcelain
|
||||
documents to git-add/git-rm.
|
||||
|
||||
- Some i18n.* configuration variables were incorrectly
|
||||
described as core.*; fixed.
|
||||
|
||||
- added and clarified core.bare, core.legacyheaders configurations.
|
||||
|
||||
- updated "git-clone --depth" documentation.
|
||||
|
||||
- user-manual updates.
|
||||
|
||||
- Options to 'git remote add' were described insufficiently.
|
||||
|
||||
- Configuration format.suffix was not documented.
|
||||
|
||||
- Other formatting and spelling fixes.
|
||||
|
||||
- user-manual has better cross references.
|
||||
|
||||
- gitweb installation/deployment procedure is now documented.
|
||||
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- git-upload-pack closes unused pipe ends; earlier this caused
|
||||
many zombies to hang around.
|
||||
|
||||
- git-rerere was recording the contents of earlier hunks
|
||||
duplicated in later hunks. This prevented resolving the same
|
||||
conflict when performing the same merge the other way around.
|
||||
|
||||
- git-add and git-update-index on a filesystem on which
|
||||
executable bits are unreliable incorrectly reused st_mode
|
||||
bits even when the path changed between symlink and regular
|
||||
file.
|
||||
|
||||
- git-daemon marks the listening sockets with FD_CLOEXEC so
|
||||
that it won't be leaked into the children.
|
||||
|
||||
- segfault from git-blame when the mandatory pathname
|
||||
parameter was missing was fixed; usage() message is given
|
||||
instead.
|
||||
|
||||
- git-rev-list did not read $GIT_DIR/config file, which means
|
||||
that did not honor i18n.logoutputencoding correctly.
|
||||
|
||||
- Automated merge conflict handling when changes to symbolic
|
||||
links conflicted were completely broken. The merge-resolve
|
||||
strategy created a regular file with conflict markers in it
|
||||
in place of the symbolic link. The default strategy,
|
||||
merge-recursive was even more broken. It removed the path
|
||||
that was pointed at by the symbolic link. Both of these
|
||||
problems have been fixed.
|
||||
|
||||
- 'git diff maint master next' did not correctly give combined
|
||||
diff across three trees.
|
||||
|
||||
- 'git fast-import' portability fix for Solaris.
|
||||
|
||||
- 'git show-ref --verify' without arguments did not error out
|
||||
but segfaulted.
|
||||
|
||||
- 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
|
||||
slashes after a/ and b/.
|
||||
|
||||
- 'git format-patch' produced too long filenames if the commit
|
||||
message had too long line at the beginning.
|
||||
|
||||
- Running 'make all' and then without changing anything
|
||||
running 'make install' still rebuilt some files. This
|
||||
was inconvenient when building as yourself and then
|
||||
installing as root (especially problematic when the source
|
||||
directory is on NFS and root is mapped to nobody).
|
||||
|
||||
- 'git-rerere' failed to deal with two unconflicted paths that
|
||||
sorted next to each other.
|
||||
|
||||
- 'git-rerere' attempted to open(2) a symlink and failed if
|
||||
there was a conflict. Since a conflicting change to a
|
||||
symlink would not benefit from rerere anyway, the command
|
||||
now ignores conflicting changes to symlinks.
|
||||
|
||||
- 'git-repack' did not like to pass more than 64 arguments
|
||||
internally to underlying 'rev-list' logic, which made it
|
||||
impossible to repack after accumulating many (small) packs
|
||||
in the repository.
|
||||
|
||||
- 'git-diff' to review the combined diff during a conflicted
|
||||
merge were not reading the working tree version correctly
|
||||
when changes to a symbolic link conflicted. It should have
|
||||
read the data using readlink(2) but read from the regular
|
||||
file the symbolic link pointed at.
|
||||
|
||||
- 'git-remote' did not like period in a remote's name.
|
||||
|
||||
- 'git.el' honors the commit coding system from the configuration.
|
||||
|
||||
- 'blameview' in contrib/ correctly digs deeper when a line is
|
||||
clicked.
|
||||
|
||||
- 'http-push' correctly makes sure the remote side has leading
|
||||
path. Earlier it started in the middle of the path, and
|
||||
incorrectly.
|
||||
|
||||
- 'git-merge' did not exit with non-zero status when the
|
||||
working tree was dirty and cannot fast forward. It does
|
||||
now.
|
||||
|
||||
- 'cvsexportcommit' does not lose yet-to-be-used message file.
|
||||
|
||||
- int-vs-size_t typefix when running combined diff on files
|
||||
over 2GB long.
|
||||
|
||||
- 'git apply --whitespace=strip' should not touch unmodified
|
||||
lines.
|
||||
|
||||
- 'git-mailinfo' choke when a logical header line was too long.
|
||||
|
||||
- 'git show A..B' did not error out. Negative ref ("not A" in
|
||||
this example) does not make sense for the purpose of the
|
||||
command, so now it errors out.
|
||||
|
||||
- 'git fmt-merge-msg --file' without file parameter did not
|
||||
correctly error out.
|
||||
|
||||
- 'git archimport' barfed upon encountering a commit without
|
||||
summary.
|
||||
|
||||
- 'git index-pack' did not protect itself from getting a short
|
||||
read out of pread(2).
|
||||
|
||||
- 'git http-push' had a few buffer overruns.
|
||||
|
||||
- Build dependency fixes to rebuild fetch.o when other headers
|
||||
change.
|
||||
|
||||
- git.el does not add duplicate sign-off lines.
|
||||
|
||||
- git-commit shows the full stat of the resulting commit, not
|
||||
just about the files in the current directory, when run from
|
||||
a subdirectory.
|
||||
|
||||
- "git-checkout -m '@{8 hours ago}'" had a funny failure from
|
||||
eval; fixed.
|
||||
|
||||
- git-merge (hence git-pull) did not refuse fast-forwarding
|
||||
when the working tree had local changes that would have
|
||||
conflicted with it.
|
||||
|
||||
- a handful small fixes to gitweb.
|
||||
|
||||
- build procedure for user-manual is fixed not to require locally
|
||||
installed stylesheets.
|
||||
|
||||
- "git commit $paths" on paths whose earlier contents were
|
||||
already updated in the index were failing out.
|
||||
|
||||
|
||||
* Tweaks
|
||||
|
||||
- sliding mmap() inefficiently mmaped the same region of a
|
||||
packfile with an access pattern that used objects in the
|
||||
reverse order. This has been made more efficient.
|
||||
47
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.1.adoc
Normal file
47
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.1.adoc
Normal file
@@ -0,0 +1,47 @@
|
||||
GIT v1.5.2.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2
|
||||
------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- Temporary files that are used when invoking external diff
|
||||
programs did not tolerate a long TMPDIR.
|
||||
|
||||
- git-daemon did not notice when it could not write into its
|
||||
pid file.
|
||||
|
||||
- git-status did not honor core.excludesFile configuration like
|
||||
git-add did.
|
||||
|
||||
- git-annotate did not work from a subdirectory while
|
||||
git-blame did.
|
||||
|
||||
- git-cvsserver should have disabled access to a repository
|
||||
with "gitcvs.pserver.enabled = false" set even when
|
||||
"gitcvs.enabled = true" was set at the same time. It
|
||||
didn't.
|
||||
|
||||
- git-cvsimport did not work correctly in a repository with
|
||||
its branch heads were packed with pack-refs.
|
||||
|
||||
- ident unexpansion to squash "$Id: xxx $" that is in the
|
||||
repository copy removed incorrect number of bytes.
|
||||
|
||||
- git-svn misbehaved when the subversion repository did not
|
||||
provide MD5 checksums for files.
|
||||
|
||||
- git rebase (and git am) misbehaved on commits that have '\n'
|
||||
(literally backslash and en, not a linefeed) in the title.
|
||||
|
||||
- code to decode base85 used in binary patches had one error
|
||||
return codepath wrong.
|
||||
|
||||
- RFC2047 Q encoding output by git-format-patch used '_' for a
|
||||
space, which is not understood by some programs. It uses =20
|
||||
which is safer.
|
||||
|
||||
- git-fastimport --import-marks was broken; fixed.
|
||||
|
||||
- A lot of documentation updates, clarifications and fixes.
|
||||
61
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.2.adoc
Normal file
61
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.2.adoc
Normal file
@@ -0,0 +1,61 @@
|
||||
GIT v1.5.2.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.1
|
||||
--------------------
|
||||
|
||||
* Usability fix
|
||||
|
||||
- git-gui is shipped with its updated blame interface. It is
|
||||
rumored that the older one was not just unusable but was
|
||||
active health hazard, but this one is actually pretty.
|
||||
Please see for yourself.
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git checkout fubar" was utterly confused when there is a
|
||||
branch fubar and a tag fubar at the same time. It correctly
|
||||
checks out the branch fubar now.
|
||||
|
||||
- "git clone /path/foo" to clone a local /path/foo.git
|
||||
repository left an incorrect configuration.
|
||||
|
||||
- "git send-email" correctly unquotes RFC 2047 quoted names in
|
||||
the patch-email before using their values.
|
||||
|
||||
- We did not accept number of seconds since epoch older than
|
||||
year 2000 as a valid timestamp. We now interpret positive
|
||||
integers more than 8 digits as such, which allows us to
|
||||
express timestamps more recent than March 1973.
|
||||
|
||||
- git-cvsimport did not work when you have GIT_DIR to point
|
||||
your repository at a nonstandard location.
|
||||
|
||||
- Some systems (notably, Solaris) lack hstrerror() to make
|
||||
h_errno human readable; prepare a replacement
|
||||
implementation.
|
||||
|
||||
- .gitignore file listed git-core.spec but what we generate is
|
||||
git.spec, and nobody noticed for a long time.
|
||||
|
||||
- "git-merge-recursive" does not try to run file level merge
|
||||
on binary files.
|
||||
|
||||
- "git-branch --track" did not create tracking configuration
|
||||
correctly when the branch name had slash in it.
|
||||
|
||||
- The email address of the user specified with user.email
|
||||
configuration was overridden by EMAIL environment variable.
|
||||
|
||||
- The tree parser did not warn about tree entries with
|
||||
nonsense file modes, and assumed they must be blobs.
|
||||
|
||||
- "git log -z" without any other request to generate diff still
|
||||
invoked the diff machinery, wasting cycles.
|
||||
|
||||
* Documentation
|
||||
|
||||
- Many updates to fix stale or missing documentation.
|
||||
|
||||
- Although our documentation was primarily meant to be formatted
|
||||
with AsciiDoc7, formatting with AsciiDoc8 is supported better.
|
||||
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.3.adoc
Normal file
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.3.adoc
Normal file
@@ -0,0 +1,27 @@
|
||||
GIT v1.5.2.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.2
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- Version 2 pack index format was introduced in version 1.5.2
|
||||
to support pack files that has offset that cannot be
|
||||
represented in 32-bit. The runtime code to validate such
|
||||
an index mishandled such an index for an empty pack.
|
||||
|
||||
- Commit walkers (most notably, fetch over http protocol)
|
||||
tried to traverse commit objects contained in trees (aka
|
||||
subproject); they shouldn't.
|
||||
|
||||
- A build option NO_R_TO_GCC_LINKER was not explained in Makefile
|
||||
comment correctly.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- git-config --regexp was not documented properly.
|
||||
|
||||
- git-repack -a was not documented properly.
|
||||
|
||||
- git-remote -n was not documented properly.
|
||||
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.4.adoc
Normal file
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.4.adoc
Normal file
@@ -0,0 +1,28 @@
|
||||
GIT v1.5.2.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.3
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git-gui" bugfixes, including a handful fixes to run it
|
||||
better on Cygwin/MSYS.
|
||||
|
||||
- "git checkout" failed to switch back and forth between
|
||||
branches, one of which has "frotz -> xyzzy" symlink and
|
||||
file "xyzzy/filfre", while the other one has a file
|
||||
"frotz/filfre".
|
||||
|
||||
- "git prune" used to segfault upon seeing a commit that is
|
||||
referred to by a tree object (aka "subproject").
|
||||
|
||||
- "git diff --name-status --no-index" mishandled an added file.
|
||||
|
||||
- "git apply --reverse --whitespace=warn" still complained
|
||||
about whitespaces that a forward application would have
|
||||
introduced.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- A handful documentation updates.
|
||||
30
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.5.adoc
Normal file
30
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.5.adoc
Normal file
@@ -0,0 +1,30 @@
|
||||
GIT v1.5.2.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.2.4
|
||||
--------------------
|
||||
|
||||
* Bugfixes
|
||||
|
||||
- "git add -u" had a serious data corruption problem in one
|
||||
special case (when the changes to a subdirectory's files
|
||||
consist only deletion of files).
|
||||
|
||||
- "git add -u <path>" did not work from a subdirectory.
|
||||
|
||||
- "git apply" left an empty directory after all its files are
|
||||
renamed away.
|
||||
|
||||
- "git $anycmd foo/bar", when there is a file 'foo' in the
|
||||
working tree, complained that "git $anycmd foo/bar --" form
|
||||
should be used to disambiguate between revs and files,
|
||||
which was completely bogus.
|
||||
|
||||
- "git checkout-index" and other commands that checks out
|
||||
files to the work tree tried unlink(2) on directories,
|
||||
which is a sane thing to do on sane systems, but not on
|
||||
Solaris when you are root.
|
||||
|
||||
* Documentation Fixes and Updates
|
||||
|
||||
- A handful documentation fixes.
|
||||
197
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.adoc
Normal file
197
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.2.adoc
Normal file
@@ -0,0 +1,197 @@
|
||||
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.
|
||||
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.1.adoc
Normal file
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.1.adoc
Normal file
@@ -0,0 +1,10 @@
|
||||
GIT v1.5.3.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3
|
||||
------------------
|
||||
|
||||
This is solely to fix the generated RPM's dependencies. We used
|
||||
to have git-p4 package but we do not anymore. As suggested on
|
||||
the mailing list, this release makes git-core "Obsolete" git-p4,
|
||||
so that yum update would not complain.
|
||||
58
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.2.adoc
Normal file
58
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.2.adoc
Normal file
@@ -0,0 +1,58 @@
|
||||
GIT v1.5.3.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.1
|
||||
--------------------
|
||||
|
||||
* git-push sent thin packs by default, which was not good for
|
||||
the public distribution server (no point in saving transfer
|
||||
while pushing; no point in making the resulting pack less
|
||||
optimum).
|
||||
|
||||
* git-svn sometimes terminated with "Malformed network data" when
|
||||
talking over svn:// protocol.
|
||||
|
||||
* git-send-email re-issued the same message-id about 10% of the
|
||||
time if you fired off 30 messages within a single second.
|
||||
|
||||
* git-stash was not terminating the log message of commits it
|
||||
internally creates with LF.
|
||||
|
||||
* git-apply failed to check the size of the patch hunk when its
|
||||
beginning part matched the remainder of the preimage exactly,
|
||||
even though the preimage recorded in the hunk was much larger
|
||||
(therefore the patch should not have applied), leading to a
|
||||
segfault.
|
||||
|
||||
* "git rm foo && git commit foo" complained that 'foo' needs to
|
||||
be added first, instead of committing the removal, which was a
|
||||
nonsense.
|
||||
|
||||
* git grep -c said "/dev/null: 0".
|
||||
|
||||
* git-add -u failed to recognize a blob whose type changed
|
||||
between the index and the work tree.
|
||||
|
||||
* The limit to rename detection has been tightened a lot to
|
||||
reduce performance problems with a huge change.
|
||||
|
||||
* cvsimport and svnimport barfed when the input tried to move
|
||||
a tag.
|
||||
|
||||
* "git apply -pN" did not chop the right number of directories.
|
||||
|
||||
* "git svnimport" did not like SVN tags with funny characters in them.
|
||||
|
||||
* git-gui 0.8.3, with assorted fixes, including:
|
||||
|
||||
- font-chooser on X11 was unusable with large number of fonts;
|
||||
- a diff that contained a deleted symlink made it barf;
|
||||
- an untracked symbolic link to a directory made it fart;
|
||||
- a file with % in its name made it vomit;
|
||||
|
||||
|
||||
Documentation updates
|
||||
---------------------
|
||||
|
||||
User manual has been somewhat restructured. I think the new
|
||||
organization is much easier to read.
|
||||
31
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.3.adoc
Normal file
31
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.3.adoc
Normal file
@@ -0,0 +1,31 @@
|
||||
GIT v1.5.3.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.2
|
||||
--------------------
|
||||
|
||||
* git-quiltimport did not like it when a patch described in the
|
||||
series file does not exist.
|
||||
|
||||
* p4 importer missed executable bit in some cases.
|
||||
|
||||
* The default shell on some FreeBSD did not execute the
|
||||
argument parsing code correctly and made git unusable.
|
||||
|
||||
* git-svn incorrectly spawned pager even when the user
|
||||
explicitly asked not to.
|
||||
|
||||
* sample post-receive hook overquoted the envelope sender
|
||||
value.
|
||||
|
||||
* git-am got confused when the patch contained a change that is
|
||||
only about type and not contents.
|
||||
|
||||
* git-mergetool did not show our and their version of the
|
||||
conflicted file when started from a subdirectory of the
|
||||
project.
|
||||
|
||||
* git-mergetool did not pass correct options when invoking diff3.
|
||||
|
||||
* git-log sometimes invoked underlying "diff" machinery
|
||||
unnecessarily.
|
||||
35
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.4.adoc
Normal file
35
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.4.adoc
Normal file
@@ -0,0 +1,35 @@
|
||||
GIT v1.5.3.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.3
|
||||
--------------------
|
||||
|
||||
* Change to "git-ls-files" in v1.5.3.3 that was introduced to support
|
||||
partial commit of removal better had a segfaulting bug, which was
|
||||
diagnosed and fixed by Keith and Carl.
|
||||
|
||||
* Performance improvements for rename detection has been backported
|
||||
from the 'master' branch.
|
||||
|
||||
* "git-for-each-ref --format='%(numparent)'" was not working
|
||||
correctly at all, and --format='%(parent)' was not working for
|
||||
merge commits.
|
||||
|
||||
* Sample "post-receive-hook" incorrectly sent out push
|
||||
notification e-mails marked as "From: " the committer of the
|
||||
commit that happened to be at the tip of the branch that was
|
||||
pushed, not from the person who pushed.
|
||||
|
||||
* "git-remote" did not exit non-zero status upon error.
|
||||
|
||||
* "git-add -i" did not respond very well to EOF from tty nor
|
||||
bogus input.
|
||||
|
||||
* "git-rebase -i" squash subcommand incorrectly made the
|
||||
author of later commit the author of resulting commit,
|
||||
instead of taking from the first one in the squashed series.
|
||||
|
||||
* "git-stash apply --index" was not documented.
|
||||
|
||||
* autoconfiguration learned that "ar" command is found as "gas" on
|
||||
some systems.
|
||||
94
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.5.adoc
Normal file
94
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.5.adoc
Normal file
@@ -0,0 +1,94 @@
|
||||
GIT v1.5.3.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.4
|
||||
--------------------
|
||||
|
||||
* Comes with git-gui 0.8.4.
|
||||
|
||||
* "git-config" silently ignored options after --list; now it will
|
||||
error out with a usage message.
|
||||
|
||||
* "git-config --file" failed if the argument used a relative path
|
||||
as it changed directories before opening the file.
|
||||
|
||||
* "git-config --file" now displays a proper error message if it
|
||||
cannot read the file specified on the command line.
|
||||
|
||||
* "git-config", "git-diff", "git-apply" failed if run from a
|
||||
subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
|
||||
|
||||
* "git-blame" crashed if run during a merge conflict.
|
||||
|
||||
* "git-add -i" did not handle single line hunks correctly.
|
||||
|
||||
* "git-rebase -i" and "git-stash apply" failed if external diff
|
||||
drivers were used for one or more files in a commit. They now
|
||||
avoid calling the external diff drivers.
|
||||
|
||||
* "git-log --follow" did not work unless diff generation (e.g. -p)
|
||||
was also requested.
|
||||
|
||||
* "git-log --follow -B" did not work at all. Fixed.
|
||||
|
||||
* "git-log -M -B" did not correctly handle cases of very large files
|
||||
being renamed and replaced by very small files in the same commit.
|
||||
|
||||
* "git-log" printed extra newlines between commits when a diff
|
||||
was generated internally (e.g. -S or --follow) but not displayed.
|
||||
|
||||
* "git-push" error message is more helpful when pushing to a
|
||||
repository with no matching refs and none specified.
|
||||
|
||||
* "git-push" now respects + (force push) on wildcard refspecs,
|
||||
matching the behavior of git-fetch.
|
||||
|
||||
* "git-filter-branch" now updates the working directory when it
|
||||
has finished filtering the current branch.
|
||||
|
||||
* "git-instaweb" no longer fails on Mac OS X.
|
||||
|
||||
* "git-cvsexportcommit" didn't always create new parent directories
|
||||
before trying to create new child directories. Fixed.
|
||||
|
||||
* "git-fetch" printed a scary (but bogus) error message while
|
||||
fetching a tag that pointed to a tree or blob. The error did
|
||||
not impact correctness, only user perception. The bogus error
|
||||
is no longer printed.
|
||||
|
||||
* "git-ls-files --ignored" did not properly descend into non-ignored
|
||||
directories that themselves contained ignored files if d_type
|
||||
was not supported by the filesystem. This bug impacted systems
|
||||
such as AFS. Fixed.
|
||||
|
||||
* Git segfaulted when reading an invalid .gitattributes file. Fixed.
|
||||
|
||||
* post-receive-email example hook was fixed for non-fast-forward
|
||||
updates.
|
||||
|
||||
* Documentation updates for supported (but previously undocumented)
|
||||
options of "git-archive" and "git-reflog".
|
||||
|
||||
* "make clean" no longer deletes the configure script that ships
|
||||
with the git tarball, making multiple architecture builds easier.
|
||||
|
||||
* "git-remote show origin" spewed a warning message from Perl
|
||||
when no remote is defined for the current branch via
|
||||
branch.<name>.remote configuration settings.
|
||||
|
||||
* Building with NO_PERL_MAKEMAKER excessively rebuilt contents
|
||||
of perl/ subdirectory by rewriting perl.mak.
|
||||
|
||||
* http.sslVerify configuration settings were not used in scripted
|
||||
Porcelains.
|
||||
|
||||
* "git-add" leaked a bit of memory while scanning for files to add.
|
||||
|
||||
* A few workarounds to squelch false warnings from recent gcc have
|
||||
been added.
|
||||
|
||||
* "git-send-pack $remote frotz" segfaulted when there is nothing
|
||||
named 'frotz' on the local end.
|
||||
|
||||
* "git-rebase --interactive" did not handle its "--strategy" option
|
||||
properly.
|
||||
48
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.6.adoc
Normal file
48
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.6.adoc
Normal file
@@ -0,0 +1,48 @@
|
||||
GIT v1.5.3.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.5
|
||||
--------------------
|
||||
|
||||
* git-cvsexportcommit handles root commits better.
|
||||
|
||||
* git-svn dcommit used to clobber when sending a series of
|
||||
patches.
|
||||
|
||||
* git-svn dcommit failed after attempting to rebase when
|
||||
started with a dirty index; now it stops upfront.
|
||||
|
||||
* git-grep sometimes refused to work when your index was
|
||||
unmerged.
|
||||
|
||||
* "git-grep -A1 -B2" acted as if it was told to run "git -A1 -B21".
|
||||
|
||||
* git-hash-object did not honor configuration variables, such as
|
||||
core.compression.
|
||||
|
||||
* git-index-pack choked on a huge pack on 32-bit machines, even when
|
||||
large file offsets are supported.
|
||||
|
||||
* atom feeds from git-web said "10" for the month of November.
|
||||
|
||||
* a memory leak in commit walker was plugged.
|
||||
|
||||
* When git-send-email inserted the original author's From:
|
||||
address in body, it did not mark the message with
|
||||
Content-type: as needed.
|
||||
|
||||
* git-revert and git-cherry-pick incorrectly refused to start
|
||||
when the work tree was dirty.
|
||||
|
||||
* git-clean did not honor core.excludesfile configuration.
|
||||
|
||||
* git-add mishandled ".gitignore" files when applying them to
|
||||
subdirectories.
|
||||
|
||||
* While importing a too branchy history, git-fastimport did not
|
||||
honor delta depth limit properly.
|
||||
|
||||
* Support for zlib implementations that lack ZLIB_VERNUM and definition
|
||||
of deflateBound() has been added.
|
||||
|
||||
* Quite a lot of documentation clarifications.
|
||||
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.7.adoc
Normal file
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.7.adoc
Normal file
@@ -0,0 +1,45 @@
|
||||
GIT v1.5.3.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.6
|
||||
--------------------
|
||||
|
||||
* git-send-email added 8-bit contents to the payload without
|
||||
marking it as 8-bit in a CTE header.
|
||||
|
||||
* "git-bundle create a.bndl HEAD" dereferenced the symref and
|
||||
did not record the ref as 'HEAD'; this prevented a bundle
|
||||
from being used as a normal source of git-clone.
|
||||
|
||||
* The code to reject nonsense command line of the form
|
||||
"git-commit -a paths..." and "git-commit --interactive
|
||||
paths..." were broken.
|
||||
|
||||
* Adding a signature that is not ASCII-only to an original
|
||||
commit that is ASCII-only would make the result non-ASCII.
|
||||
"git-format-patch -s" did not mark such a message correctly
|
||||
with MIME encoding header.
|
||||
|
||||
* git-add sometimes did not mark the resulting index entry
|
||||
stat-clean. This affected only cases when adding the
|
||||
contents with the same length as the previously staged
|
||||
contents, and the previous staging made the index entry
|
||||
"racily clean".
|
||||
|
||||
* git-commit did not honor GIT_INDEX_FILE the user had in the
|
||||
environment.
|
||||
|
||||
* When checking out a revision, git-checkout did not report where the
|
||||
updated HEAD is if you happened to have a file called HEAD in the
|
||||
work tree.
|
||||
|
||||
* "git-rev-list --objects" mishandled a tree that points at a
|
||||
submodule.
|
||||
|
||||
* "git cvsimport" was not ready for packed refs that "git gc" can
|
||||
produce and gave incorrect results.
|
||||
|
||||
* Many scripted Porcelains were confused when you happened to have a
|
||||
file called "HEAD" in your work tree.
|
||||
|
||||
Also it contains updates to the user manual and documentation.
|
||||
25
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.8.adoc
Normal file
25
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.8.adoc
Normal file
@@ -0,0 +1,25 @@
|
||||
GIT v1.5.3.8 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.3.7
|
||||
--------------------
|
||||
|
||||
* Some documentation used "email.com" as an example domain.
|
||||
|
||||
* git-svn fix to handle funky branch and project names going over
|
||||
http/https correctly.
|
||||
|
||||
* git-svn fix to tone down a needlessly alarming warning message.
|
||||
|
||||
* git-clone did not correctly report errors while fetching over http.
|
||||
|
||||
* git-send-email added redundant Message-Id: header to the outgoing
|
||||
e-mail when the patch text already had one.
|
||||
|
||||
* a read-beyond-end-of-buffer bug in configuration file updater was fixed.
|
||||
|
||||
* git-grep used to show the same hit repeatedly for unmerged paths.
|
||||
|
||||
* After amending the patch title in "git-am -i", the command did not
|
||||
report the patch it applied with the updated title.
|
||||
|
||||
366
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.adoc
Normal file
366
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.3.adoc
Normal file
@@ -0,0 +1,366 @@
|
||||
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.
|
||||
17
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.1.adoc
Normal file
17
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.1.adoc
Normal file
@@ -0,0 +1,17 @@
|
||||
GIT v1.5.4.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
* "git-commit -C $tag" used to work but rewrite in C done in
|
||||
1.5.4 broke it.
|
||||
|
||||
* An entry in the .gitattributes file that names a pattern in a
|
||||
subdirectory of the directory it is in did not match
|
||||
correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
|
||||
match "a/b/foo.c" but it didn't).
|
||||
|
||||
* Customized color specification was parsed incorrectly when
|
||||
numeric color values are used. This was fixed in 1.5.4.1.
|
||||
|
||||
43
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.2.adoc
Normal file
43
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.2.adoc
Normal file
@@ -0,0 +1,43 @@
|
||||
GIT v1.5.4.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
* The configuration parser was not prepared to see string
|
||||
valued variables misspelled as boolean and segfaulted.
|
||||
|
||||
* Temporary files left behind due to interrupted object
|
||||
transfers were not cleaned up with "git prune".
|
||||
|
||||
* "git config --unset" was confused when the unset variables
|
||||
were spelled with continuation lines in the config file.
|
||||
|
||||
* The merge message detection in "git cvsimport" did not catch
|
||||
a message that began with "Merge...".
|
||||
|
||||
* "git status" suggests "git rm --cached" for unstaging the
|
||||
earlier "git add" before the initial commit.
|
||||
|
||||
* "git status" output was incorrect during a partial commit.
|
||||
|
||||
* "git bisect" refused to start when the HEAD was detached.
|
||||
|
||||
* "git bisect" allowed a wildcard character in the commit
|
||||
message expanded while writing its log file.
|
||||
|
||||
* Manual pages were not formatted correctly with docbook xsl
|
||||
1.72; added a workaround.
|
||||
|
||||
* "git-commit -C $tag" used to work but rewrite in C done in
|
||||
1.5.4 broke it. This was fixed in 1.5.4.1.
|
||||
|
||||
* An entry in the .gitattributes file that names a pattern in a
|
||||
subdirectory of the directory it is in did not match
|
||||
correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
|
||||
match "a/b/foo.c" but it didn't). This was fixed in 1.5.4.1.
|
||||
|
||||
* Customized color specification was parsed incorrectly when
|
||||
numeric color values are used. This was fixed in 1.5.4.1.
|
||||
|
||||
* http transport misbehaved when linked with curl-gnutls.
|
||||
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.3.adoc
Normal file
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.3.adoc
Normal file
@@ -0,0 +1,27 @@
|
||||
GIT v1.5.4.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.2
|
||||
--------------------
|
||||
|
||||
* RPM spec used to pull in everything with 'git'. This has been
|
||||
changed so that 'git' package contains just the core parts,
|
||||
and we now supply 'git-all' metapackage to slurp in everything.
|
||||
This should match end user's expectation better.
|
||||
|
||||
* When some refs failed to update, git-push reported "failure"
|
||||
which was unclear if some other refs were updated or all of
|
||||
them failed atomically (the answer is the former). Reworded
|
||||
the message to clarify this.
|
||||
|
||||
* "git clone" from a repository whose HEAD was misconfigured
|
||||
did not set up the remote properly. Now it tries to do
|
||||
better.
|
||||
|
||||
* Updated git-push documentation to clarify what "matching"
|
||||
means, in order to reduce user confusion.
|
||||
|
||||
* Updated git-add documentation to clarify "add -u" operates in
|
||||
the current subdirectory you are in, just like other commands.
|
||||
|
||||
* git-gui updates to work on OSX and Windows better.
|
||||
66
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.4.adoc
Normal file
66
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.4.adoc
Normal file
@@ -0,0 +1,66 @@
|
||||
GIT v1.5.4.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.3
|
||||
--------------------
|
||||
|
||||
* Building and installing with an overtight umask such as 077 made
|
||||
installed templates unreadable by others, while the rest of the install
|
||||
are done in a way that is friendly to umask 022.
|
||||
|
||||
* "git cvsexportcommit -w $cvsdir" misbehaved when GIT_DIR is set to a
|
||||
relative directory.
|
||||
|
||||
* "git http-push" had an invalid memory access that could lead it to
|
||||
segfault.
|
||||
|
||||
* When "git rebase -i" gave control back to the user for a commit that is
|
||||
marked to be edited, it just said "modify it with commit --amend",
|
||||
without saying what to do to continue after modifying it. Give an
|
||||
explicit instruction to run "rebase --continue" to be more helpful.
|
||||
|
||||
* "git send-email" in 1.5.4.3 issued a bogus empty In-Reply-To: header.
|
||||
|
||||
* "git bisect" showed mysterious "won't bisect on seeked tree" error message.
|
||||
This was leftover from Cogito days to prevent "bisect" starting from a
|
||||
cg-seeked state. We still keep the Cogito safety, but running "git bisect
|
||||
start" when another bisect was in effect will clean up and start over.
|
||||
|
||||
* "git push" with an explicit PATH to receive-pack did not quite work if
|
||||
receive-pack was not on usual PATH. We earlier fixed the same issue
|
||||
with "git fetch" and upload-pack, but somehow forgot to do so in the
|
||||
other direction.
|
||||
|
||||
* git-gui's info dialog was not displayed correctly when the user tries
|
||||
to commit nothing (i.e. without staging anything).
|
||||
|
||||
* "git revert" did not properly fail when attempting to run with a
|
||||
dirty index.
|
||||
|
||||
* "git merge --no-commit --no-ff <other>" incorrectly made commits.
|
||||
|
||||
* "git merge --squash --no-ff <other>", which is a nonsense combination
|
||||
of options, was not rejected.
|
||||
|
||||
* "git ls-remote" and "git remote show" against an empty repository
|
||||
failed, instead of just giving an empty result (regression).
|
||||
|
||||
* "git fast-import" did not handle a renamed path whose name needs to be
|
||||
quoted, due to a bug in unquote_c_style() function.
|
||||
|
||||
* "git cvsexportcommit" was confused when multiple files with the same
|
||||
basename needed to be pushed out in the same commit.
|
||||
|
||||
* "git daemon" did not send early errors to syslog.
|
||||
|
||||
* "git log --merge" did not work well with --left-right option.
|
||||
|
||||
* "git svn" prompted for client cert password every time it accessed the
|
||||
server.
|
||||
|
||||
* The reset command in "git fast-import" data stream was documented to
|
||||
end with an optional LF, but it actually required one.
|
||||
|
||||
* "git svn dcommit/rebase" did not honor --rewrite-root option.
|
||||
|
||||
Also included are a handful documentation updates.
|
||||
56
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.5.adoc
Normal file
56
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.5.adoc
Normal file
@@ -0,0 +1,56 @@
|
||||
GIT v1.5.4.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.4.4
|
||||
--------------------
|
||||
|
||||
* "git fetch there" when the URL information came from the Cogito style
|
||||
branches/there file did not update refs/heads/there (regression in
|
||||
1.5.4).
|
||||
|
||||
* Bogus refspec configuration such as "remote.there.fetch = =" were not
|
||||
detected as errors (regression in 1.5.4).
|
||||
|
||||
* You couldn't specify a custom editor whose path contains a whitespace
|
||||
via GIT_EDITOR (and core.editor).
|
||||
|
||||
* The subdirectory filter to "git filter-branch" mishandled a history
|
||||
where the subdirectory becomes empty and then later becomes non-empty.
|
||||
|
||||
* "git shortlog" gave an empty line if the original commit message was
|
||||
malformed (e.g. a botched import from foreign SCM). Now it finds the
|
||||
first non-empty line and uses it for better information.
|
||||
|
||||
* When the user fails to give a revision parameter to "git svn", an error
|
||||
from the Perl interpreter was issued because the script lacked proper
|
||||
error checking.
|
||||
|
||||
* After "git rebase" stopped due to conflicts, if the user played with
|
||||
"git reset" and friends, "git rebase --abort" failed to go back to the
|
||||
correct commit.
|
||||
|
||||
* Additional work trees prepared with git-new-workdir (in contrib/) did
|
||||
not share git-svn metadata directory .git/svn with the original.
|
||||
|
||||
* "git-merge-recursive" did not mark addition of the same path with
|
||||
different filemodes correctly as a conflict.
|
||||
|
||||
* "gitweb" gave malformed URL when pathinfo stype paths are in use.
|
||||
|
||||
* "-n" stands for "--no-tags" again for "git fetch".
|
||||
|
||||
* "git format-patch" did not detect the need to add 8-bit MIME header
|
||||
when the user used format.header configuration.
|
||||
|
||||
* "rev~" revision specifier used to mean "rev", which was inconsistent
|
||||
with how "rev^" worked. Now "rev~" is the same as "rev~1" (hence it
|
||||
also is the same as "rev^1"), and "rev~0" is the same as "rev^0"
|
||||
(i.e. it has to be a commit).
|
||||
|
||||
* "git quiltimport" did not grok empty lines, lines in "file -pNNN"
|
||||
format to specify the prefix levels and lines with trailing comments.
|
||||
|
||||
* "git rebase -m" triggered pre-commit verification, which made
|
||||
"rebase --continue" impossible.
|
||||
|
||||
As usual, it also comes with many documentation fixes and clarifications.
|
||||
43
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.6.adoc
Normal file
43
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.6.adoc
Normal file
@@ -0,0 +1,43 @@
|
||||
GIT v1.5.4.6 Release Notes
|
||||
==========================
|
||||
|
||||
I personally do not think there is any reason anybody should want to
|
||||
run v1.5.4.X series these days, because 'master' version is always
|
||||
more stable than any tagged released version of git.
|
||||
|
||||
This is primarily to futureproof "git-shell" to accept requests
|
||||
without a dash between "git" and subcommand name (e.g. "git
|
||||
upload-pack") which the newer client will start to make sometime in
|
||||
the future.
|
||||
|
||||
Fixes since v1.5.4.5
|
||||
--------------------
|
||||
|
||||
* Command line option "-n" to "git-repack" was not correctly parsed.
|
||||
|
||||
* Error messages from "git-apply" when the patchfile cannot be opened
|
||||
have been improved.
|
||||
|
||||
* Error messages from "git-bisect" when given nonsense revisions have
|
||||
been improved.
|
||||
|
||||
* reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
|
||||
stop parsing at the closing "}".
|
||||
|
||||
* "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
|
||||
but it should print nothing.
|
||||
|
||||
* "git apply" did not enforce "match at the beginning" correctly.
|
||||
|
||||
* a path specification "a/b" in .gitattributes file should not match
|
||||
"sub/a/b", but it did.
|
||||
|
||||
* "git log --date-order --topo-order" did not override the earlier
|
||||
date-order with topo-order as expected.
|
||||
|
||||
* "git fast-export" did not export octopus merges correctly.
|
||||
|
||||
* "git archive --prefix=$path/" mishandled gitattributes.
|
||||
|
||||
As usual, it also comes with many documentation fixes and clarifications.
|
||||
|
||||
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.7.adoc
Normal file
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.7.adoc
Normal file
@@ -0,0 +1,10 @@
|
||||
GIT v1.5.4.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.4.7
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
||||
377
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.adoc
Normal file
377
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.4.adoc
Normal file
@@ -0,0 +1,377 @@
|
||||
GIT v1.5.4 Release Notes
|
||||
========================
|
||||
|
||||
Removal
|
||||
-------
|
||||
|
||||
* "git svnimport" was removed in favor of "git svn". It is still there
|
||||
in the source tree (contrib/examples) but unsupported.
|
||||
|
||||
* As git-commit and git-status have been rewritten, "git runstatus"
|
||||
helper script lost all its users and has been removed.
|
||||
|
||||
|
||||
Temporarily disabled
|
||||
--------------------
|
||||
|
||||
* "git http-push" is known not to work well with cURL library older
|
||||
than 7.16, and we had reports of repository corruption. It is
|
||||
disabled on such platforms for now. Unfortunately, 1.5.3.8 shares
|
||||
the same issue. In other words, this does not mean you will be
|
||||
fine if you stick to an older git release. For now, please do not
|
||||
use http-push from older git with cURL older than 7.16 if you
|
||||
value your data. A proper fix will hopefully materialize in
|
||||
later versions.
|
||||
|
||||
|
||||
Deprecation notices
|
||||
-------------------
|
||||
|
||||
* From v1.6.0, git will by default install dashed form of commands
|
||||
(e.g. "git-commit") outside of users' normal $PATH, and will install
|
||||
only selected commands ("git" itself, and "gitk") in $PATH. This
|
||||
implies:
|
||||
|
||||
- Using dashed forms of git commands (e.g. "git-commit") from the
|
||||
command line has been informally deprecated since early 2006, but
|
||||
now it officially is, and will be removed in the future. Use
|
||||
dash-less forms (e.g. "git commit") instead.
|
||||
|
||||
- Using dashed forms from your scripts, without first prepending the
|
||||
return value from "git --exec-path" to the scripts' PATH, has been
|
||||
informally deprecated since early 2006, but now it officially is.
|
||||
|
||||
- Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
|
||||
PATH" early in your script is not deprecated with this change.
|
||||
|
||||
Users are strongly encouraged to adjust their habits and scripts now
|
||||
to prepare for this change.
|
||||
|
||||
* The post-receive hook was introduced in March 2007 to supersede
|
||||
the post-update hook, primarily to overcome the command line length
|
||||
limitation of the latter. Use of post-update hook will be deprecated
|
||||
in future versions of git, starting from v1.6.0.
|
||||
|
||||
* "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
|
||||
option, and will be removed in the future.
|
||||
|
||||
* "git peek-remote" is deprecated, as "git ls-remote" was written in C
|
||||
and works for all transports; "git peek-remote" will be removed in
|
||||
the future.
|
||||
|
||||
* "git repo-config" which was an old name for "git config" command
|
||||
has been supported without being advertised for a long time. The
|
||||
next feature release will remove it.
|
||||
|
||||
* From v1.6.0, the repack.usedeltabaseoffset config option will default
|
||||
to true, which will give denser packfiles (i.e. more efficient storage).
|
||||
The downside is that git older than version 1.4.4 will not be able
|
||||
to directly use a repository packed using this setting.
|
||||
|
||||
* From v1.6.0, the pack.indexversion config option will default to 2,
|
||||
which is slightly more efficient, and makes repacking more immune to
|
||||
data corruptions. Git older than version 1.5.2 may revert to version 1
|
||||
of the pack index with a manual "git index-pack" to be able to directly
|
||||
access corresponding pack files.
|
||||
|
||||
|
||||
Updates since v1.5.3
|
||||
--------------------
|
||||
|
||||
* Comes with much improved gitk, with i18n.
|
||||
|
||||
* Comes with git-gui 0.9.2 with i18n.
|
||||
|
||||
* gitk is now merged as a subdirectory of git.git project, in
|
||||
preparation for its i18n.
|
||||
|
||||
* progress displays from many commands are a lot nicer to the eye.
|
||||
Transfer commands show throughput data.
|
||||
|
||||
* many commands that pay attention to per-directory .gitignore now do
|
||||
so lazily, which makes the usual case go much faster.
|
||||
|
||||
* Output processing for '--pretty=format:<user format>' has been
|
||||
optimized.
|
||||
|
||||
* Rename detection of diff family while detecting exact matches has
|
||||
been greatly optimized.
|
||||
|
||||
* Rename detection of diff family tries to make more natural looking
|
||||
pairing. Earlier, if multiple identical rename sources were
|
||||
found in the preimage, the source used was picked pretty much at random.
|
||||
|
||||
* Value "true" for color.diff and color.status configuration used to
|
||||
mean "always" (even when the output is not going to a terminal).
|
||||
This has been corrected to mean the same thing as "auto".
|
||||
|
||||
* "git diff" Porcelain now respects diff.external configuration, which
|
||||
is another way to specify GIT_EXTERNAL_DIFF.
|
||||
|
||||
* "git diff" can be told to use different prefixes other than
|
||||
"a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
|
||||
|
||||
* "git diff" sometimes did not quote paths with funny
|
||||
characters properly.
|
||||
|
||||
* "git log" (and any revision traversal commands) misbehaved
|
||||
when --diff-filter is given but was not asked to actually
|
||||
produce diff.
|
||||
|
||||
* HTTP proxy can be specified per remote repository using
|
||||
remote.*.httpproxy configuration, or global http.proxy configuration
|
||||
variable.
|
||||
|
||||
* Various Perforce importer updates.
|
||||
|
||||
* Example update and post-receive hooks have been improved.
|
||||
|
||||
* Any command that wants to take a commit object name can now use
|
||||
":/string" syntax to name a commit.
|
||||
|
||||
* "git reset" is now built-in and its output can be squelched with -q.
|
||||
|
||||
* "git reset --hard" does not make any sense in a bare
|
||||
repository, but did not error out; fixed.
|
||||
|
||||
* "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
|
||||
|
||||
* "git rebase" learned --whitespace option.
|
||||
|
||||
* In "git rebase", when you decide not to replay a particular change
|
||||
after the command stopped with a conflict, you can say "git rebase
|
||||
--skip" without first running "git reset --hard", as the command now
|
||||
runs it for you.
|
||||
|
||||
* "git rebase --interactive" mode can now work on detached HEAD.
|
||||
|
||||
* Other minor to serious bugs in "git rebase -i" have been fixed.
|
||||
|
||||
* "git rebase" now detaches head during its operation, so after a
|
||||
successful "git rebase" operation, the reflog entry branch@{1} for
|
||||
the current branch points at the commit before the rebase was
|
||||
started.
|
||||
|
||||
* "git rebase -i" also triggers rerere to help your repeated merges.
|
||||
|
||||
* "git merge" can call the "post-merge" hook.
|
||||
|
||||
* "git pack-objects" can optionally run deltification with multiple
|
||||
threads.
|
||||
|
||||
* "git archive" can optionally substitute keywords in files marked with
|
||||
export-subst attribute.
|
||||
|
||||
* "git cherry-pick" made a misguided attempt to repeat the original
|
||||
command line in the generated log message, when told to cherry-pick a
|
||||
commit by naming a tag that points at it. It does not anymore.
|
||||
|
||||
* "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
|
||||
various date fields in different formats.
|
||||
|
||||
* "git gc --auto" is a low-impact way to automatically run a variant of
|
||||
"git repack" that does not lose unreferenced objects (read: safer
|
||||
than the usual one) after the user accumulates too many loose
|
||||
objects.
|
||||
|
||||
* "git clean" has been rewritten in C.
|
||||
|
||||
* You need to explicitly set clean.requireForce to "false" to allow
|
||||
"git clean" without -f to do any damage (lack of the configuration
|
||||
variable used to mean "do not require -f option to lose untracked
|
||||
files", but we now use the safer default).
|
||||
|
||||
* The kinds of whitespace errors "git diff" and "git apply" notice (and
|
||||
fix) can be controlled via 'core.whitespace' configuration variable
|
||||
and 'whitespace' attribute in .gitattributes file.
|
||||
|
||||
* "git push" learned --dry-run option to show what would happen if a
|
||||
push is run.
|
||||
|
||||
* "git push" does not update a tracking ref on the local side when the
|
||||
remote refused to update the corresponding ref.
|
||||
|
||||
* "git push" learned --mirror option. This is to push the local refs
|
||||
one-to-one to the remote, and deletes refs from the remote that do
|
||||
not exist anymore in the repository on the pushing side.
|
||||
|
||||
* "git push" can remove a corrupt ref at the remote site with the usual
|
||||
":ref" refspec.
|
||||
|
||||
* "git remote" knows --mirror mode. This is to set up configuration to
|
||||
push into a remote repository to store local branch heads to the same
|
||||
branch on the remote side, and remove branch heads locally removed
|
||||
from local repository at the same time. Suitable for pushing into a
|
||||
back-up repository.
|
||||
|
||||
* "git remote" learned "rm" subcommand.
|
||||
|
||||
* "git cvsserver" can be run via "git shell". Also, "cvs" is
|
||||
recognized as a synonym for "git cvsserver", so that CVS users
|
||||
can be switched to git just by changing their login shell.
|
||||
|
||||
* "git cvsserver" acts more like receive-pack by running post-receive
|
||||
and post-update hooks.
|
||||
|
||||
* "git am" and "git rebase" are far less verbose.
|
||||
|
||||
* "git pull" learned to pass --[no-]ff option to underlying "git
|
||||
merge".
|
||||
|
||||
* "git pull --rebase" is a different way to integrate what you fetched
|
||||
into your current branch.
|
||||
|
||||
* "git fast-export" produces data-stream that can be fed to fast-import
|
||||
to reproduce the history recorded in a git repository.
|
||||
|
||||
* "git add -i" takes pathspecs to limit the set of files to work on.
|
||||
|
||||
* "git add -p" is a short-hand to go directly to the selective patch
|
||||
subcommand in the interactive command loop and to exit when done.
|
||||
|
||||
* "git add -i" UI has been colorized. The interactive prompt
|
||||
and menu can be colored by setting color.interactive
|
||||
configuration. The diff output (including the hunk picker)
|
||||
are colored with color.diff configuration.
|
||||
|
||||
* "git commit --allow-empty" allows you to create a single-parent
|
||||
commit that records the same tree as its parent, overriding the usual
|
||||
safety valve.
|
||||
|
||||
* "git commit --amend" can amend a merge that does not change the tree
|
||||
from its first parent.
|
||||
|
||||
* "git commit" used to unconditionally strip comment lines that
|
||||
began with '#' and removed excess blank lines. This behavior has
|
||||
been made configurable.
|
||||
|
||||
* "git commit" has been rewritten in C.
|
||||
|
||||
* "git stash random-text" does not create a new stash anymore. It was
|
||||
a UI mistake. Use "git stash save random-text", or "git stash"
|
||||
(without extra args) for that.
|
||||
|
||||
* "git stash clear extra-text" does not clear the whole stash
|
||||
anymore. It is tempting to expect "git stash clear stash@{2}"
|
||||
to drop only a single named stash entry, and it is rude to
|
||||
discard everything when that is asked (but not provided).
|
||||
|
||||
* "git prune --expire <time>" can exempt young loose objects from
|
||||
getting pruned.
|
||||
|
||||
* "git branch --contains <commit>" can list branches that are
|
||||
descendants of a given commit.
|
||||
|
||||
* "git log" learned --early-output option to help interactive GUI
|
||||
implementations.
|
||||
|
||||
* "git bisect" learned "skip" action to mark untestable commits.
|
||||
|
||||
* "git bisect visualize" learned a shorter synonym "git bisect view".
|
||||
|
||||
* "git bisect visualize" runs "git log" in a non-windowed
|
||||
environments. It also can be told what command to run (e.g. "git
|
||||
bisect visualize tig").
|
||||
|
||||
* "git format-patch" learned "format.numbered" configuration variable
|
||||
to automatically turn --numbered option on when more than one commits
|
||||
are formatted.
|
||||
|
||||
* "git ls-files" learned "--exclude-standard" to use the canned set of
|
||||
exclude files.
|
||||
|
||||
* "git tag -a -f existing" begins the editor session using the existing
|
||||
annotation message.
|
||||
|
||||
* "git tag -m one -m bar" (multiple -m options) behaves similarly to
|
||||
"git commit"; the parameters to -m options are formatted as separate
|
||||
paragraphs.
|
||||
|
||||
* The format "git show" outputs an annotated tag has been updated to
|
||||
include "Tagger: " and "Date: " lines from the tag itself. Strictly
|
||||
speaking this is a backward incompatible change, but this is a
|
||||
reasonable usability fix and people's scripts shouldn't have been
|
||||
relying on the exact output from "git show" Porcelain anyway.
|
||||
|
||||
* "git cvsimport" did not notice errors from underlying "cvsps"
|
||||
and produced a corrupt import silently.
|
||||
|
||||
* "git cvsexportcommit" learned -w option to specify and switch to the
|
||||
CVS working directory.
|
||||
|
||||
* "git checkout" from a subdirectory learned to use "../path" to allow
|
||||
checking out a path outside the current directory without cd'ing up.
|
||||
|
||||
* "git checkout" from and to detached HEAD leaves a bit more
|
||||
information in the reflog.
|
||||
|
||||
* "git send-email --dry-run" shows full headers for easier diagnosis.
|
||||
|
||||
* "git merge-ours" is now built-in.
|
||||
|
||||
* "git svn" learned "info" and "show-externals" subcommands.
|
||||
|
||||
* "git svn" run from a subdirectory failed to read settings from the
|
||||
.git/config.
|
||||
|
||||
* "git svn" learned --use-log-author option, which picks up more
|
||||
descriptive name from From: and Signed-off-by: lines in the commit
|
||||
message.
|
||||
|
||||
* "git svn" wasted way too much disk to record revision mappings
|
||||
between svn and git; a new representation that is much more compact
|
||||
for this information has been introduced to correct this.
|
||||
|
||||
* "git svn" left temporary index files it used without cleaning them
|
||||
up; this was corrected.
|
||||
|
||||
* "git status" from a subdirectory now shows relative paths, which
|
||||
makes copy-and-pasting for git-checkout/git-add/git-rm easier. The
|
||||
traditional behavior to show the full path relative to the top of
|
||||
the work tree can be had by setting status.relativepaths
|
||||
configuration variable to false.
|
||||
|
||||
* "git blame" kept text for each annotated revision in core needlessly;
|
||||
this has been corrected.
|
||||
|
||||
* "git shortlog" learned to default to HEAD when the standard input is
|
||||
a terminal and the user did not give any revision parameter.
|
||||
|
||||
* "git shortlog" learned "-e" option to show e-mail addresses as well as
|
||||
authors' names.
|
||||
|
||||
* "git help" learned "-w" option to show documentation in browsers.
|
||||
|
||||
* In addition there are quite a few internal clean-ups. Notably:
|
||||
|
||||
- many fork/exec have been replaced with run-command API,
|
||||
brought from the msysgit effort.
|
||||
|
||||
- introduction and more use of the option parser API.
|
||||
|
||||
- enhancement and more use of the strbuf API.
|
||||
|
||||
* Makefile tweaks to support HP-UX is in.
|
||||
|
||||
Fixes since v1.5.3
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.3 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
|
||||
series.
|
||||
|
||||
* The way "git diff --check" behaves is much more consistent with the way
|
||||
"git apply --whitespace=warn" works.
|
||||
|
||||
* "git svn" talking with the SVN over HTTP will correctly quote branch
|
||||
and project names.
|
||||
|
||||
* "git config" did not work correctly on platforms that define
|
||||
REG_NOMATCH to an even number.
|
||||
|
||||
* Recent versions of AsciiDoc 8 has a change to break our
|
||||
documentation; a workaround has been implemented.
|
||||
|
||||
* "git diff --color-words" colored context lines in a wrong color.
|
||||
44
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.1.adoc
Normal file
44
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.1.adoc
Normal file
@@ -0,0 +1,44 @@
|
||||
GIT v1.5.5.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5
|
||||
------------------
|
||||
|
||||
* "git archive --prefix=$path/" mishandled gitattributes.
|
||||
|
||||
* "git fetch -v" that fetches into FETCH_HEAD did not report the summary
|
||||
the same way as done for updating the tracking refs.
|
||||
|
||||
* "git svn" misbehaved when the configuration file customized the "git
|
||||
log" output format using format.pretty.
|
||||
|
||||
* "git submodule status" leaked an unnecessary error message.
|
||||
|
||||
* "git log --date-order --topo-order" did not override the earlier
|
||||
date-order with topo-order as expected.
|
||||
|
||||
* "git bisect good $this" did not check the validity of the revision
|
||||
given properly.
|
||||
|
||||
* "url.<there>.insteadOf" did not work correctly.
|
||||
|
||||
* "git clean" ran inside subdirectory behaved as if the directory was
|
||||
explicitly specified for removal by the end user from the top level.
|
||||
|
||||
* "git bisect" from a detached head leaked an unnecessary error message.
|
||||
|
||||
* "git bisect good $a $b" when $a is Ok but $b is bogus should have
|
||||
atomically failed before marking $a as good.
|
||||
|
||||
* "git fmt-merge-msg" did not clean up leading empty lines from commit
|
||||
log messages like "git log" family does.
|
||||
|
||||
* "git am" recorded a commit with empty Subject: line without
|
||||
complaining.
|
||||
|
||||
* when given a commit log message whose first paragraph consists of
|
||||
multiple lines, "git rebase" squashed it into a single line.
|
||||
|
||||
* "git remote add $bogus_name $url" did not complain properly.
|
||||
|
||||
Also comes with various documentation updates.
|
||||
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.2.adoc
Normal file
27
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.2.adoc
Normal file
@@ -0,0 +1,27 @@
|
||||
GIT v1.5.5.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.1
|
||||
--------------------
|
||||
|
||||
* "git repack -n" was mistakenly made no-op earlier.
|
||||
|
||||
* "git imap-send" wanted to always have imap.host even when use of
|
||||
imap.tunnel made it unnecessary.
|
||||
|
||||
* reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
|
||||
stop parsing at the closing "}".
|
||||
|
||||
* "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
|
||||
but it should print nothing.
|
||||
|
||||
* "git commit" did not detect when it failed to write tree objects.
|
||||
|
||||
* "git fetch" sometimes transferred too many objects unnecessarily.
|
||||
|
||||
* a path specification "a/b" in .gitattributes file should not match
|
||||
"sub/a/b".
|
||||
|
||||
* various gitweb fixes.
|
||||
|
||||
Also comes with various documentation updates.
|
||||
12
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.3.adoc
Normal file
12
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.3.adoc
Normal file
@@ -0,0 +1,12 @@
|
||||
GIT v1.5.5.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.2
|
||||
--------------------
|
||||
|
||||
* "git send-email --compose" did not notice that non-ascii contents
|
||||
needed some MIME magic.
|
||||
|
||||
* "git fast-export" did not export octopus merges correctly.
|
||||
|
||||
Also comes with various documentation updates.
|
||||
@@ -0,0 +1,7 @@
|
||||
GIT v1.5.5.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.5.4
|
||||
--------------------
|
||||
|
||||
* "git name-rev --all" used to segfault.
|
||||
11
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.5.adoc
Normal file
11
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.5.adoc
Normal file
@@ -0,0 +1,11 @@
|
||||
GIT v1.5.5.5 Release Notes
|
||||
==========================
|
||||
|
||||
I personally do not think there is any reason anybody should want to
|
||||
run v1.5.5.X series these days, because 'master' version is always
|
||||
more stable than any tagged released version of git.
|
||||
|
||||
This is primarily to futureproof "git-shell" to accept requests
|
||||
without a dash between "git" and subcommand name (e.g. "git
|
||||
upload-pack") which the newer client will start to make sometime in
|
||||
the future.
|
||||
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.6.adoc
Normal file
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.6.adoc
Normal file
@@ -0,0 +1,10 @@
|
||||
GIT v1.5.5.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.5.5
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
||||
207
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.adoc
Normal file
207
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.5.adoc
Normal file
@@ -0,0 +1,207 @@
|
||||
GIT v1.5.5 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.4
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* Comes with git-gui 0.10.1
|
||||
|
||||
(portability)
|
||||
|
||||
* We shouldn't ask for BSD group ownership semantics by setting g+s bit
|
||||
on directories on older BSD systems that refuses chmod() by non root
|
||||
users. BSD semantics is the default there anyway.
|
||||
|
||||
* Bunch of portability improvement patches coming from an effort to port
|
||||
to Solaris has been applied.
|
||||
|
||||
(performance)
|
||||
|
||||
* On platforms with suboptimal qsort(3) implementation, there
|
||||
is an option to use more reasonable substitute we ship with
|
||||
our software.
|
||||
|
||||
* New configuration variable "pack.packsizelimit" can be used
|
||||
in place of command line option --max-pack-size.
|
||||
|
||||
* "git fetch" over the native git protocol used to make a
|
||||
connection to find out the set of current remote refs and
|
||||
another to actually download the pack data. We now use only
|
||||
one connection for these tasks.
|
||||
|
||||
* "git commit" does not run lstat(2) more than necessary
|
||||
anymore.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* Bash completion script (in contrib) are aware of more commands and
|
||||
options.
|
||||
|
||||
* You can be warned when core.autocrlf conversion is applied in
|
||||
such a way that results in an irreversible conversion.
|
||||
|
||||
* A catch-all "color.ui" configuration variable can be used to
|
||||
enable coloring of all color-capable commands, instead of
|
||||
individual ones such as "color.status" and "color.branch".
|
||||
|
||||
* The commands refused to take absolute pathnames where they
|
||||
require pathnames relative to the work tree or the current
|
||||
subdirectory. They now can take absolute pathnames in such a
|
||||
case as long as the pathnames do not refer outside of the
|
||||
work tree. E.g. "git add $(pwd)/foo" now works.
|
||||
|
||||
* Error messages used to be sent to stderr, only to get hidden,
|
||||
when $PAGER was in use. They now are sent to stdout along
|
||||
with the command output to be shown in the $PAGER.
|
||||
|
||||
* A pattern "foo/" in .gitignore file now matches a directory
|
||||
"foo". Pattern "foo" also matches as before.
|
||||
|
||||
* bash completion's prompt helper function can talk about
|
||||
operation in-progress (e.g. merge, rebase, etc.).
|
||||
|
||||
* Configuration variables "url.<usethis>.insteadof = <otherurl>" can be
|
||||
used to tell "git-fetch" and "git-push" to use different URL than what
|
||||
is given from the command line.
|
||||
|
||||
* "git add -i" behaves better even before you make an initial commit.
|
||||
|
||||
* "git am" refused to run from a subdirectory without a good reason.
|
||||
|
||||
* After "git apply --whitespace=fix" fixes whitespace errors in a patch,
|
||||
a line before the fix can appear as a context or preimage line in a
|
||||
later patch, causing the patch not to apply. The command now knows to
|
||||
see through whitespace fixes done to context lines to successfully
|
||||
apply such a patch series.
|
||||
|
||||
* "git branch" (and "git checkout -b") to branch from a local branch can
|
||||
optionally set "branch.<name>.merge" to mark the new branch to build on
|
||||
the other local branch, when "branch.autosetupmerge" is set to
|
||||
"always", or when passing the command line option "--track" (this option
|
||||
was ignored when branching from local branches). By default, this does
|
||||
not happen when branching from a local branch.
|
||||
|
||||
* "git checkout" to switch to a branch that has "branch.<name>.merge" set
|
||||
(i.e. marked to build on another branch) reports how much the branch
|
||||
and the other branch diverged.
|
||||
|
||||
* When "git checkout" has to update a lot of paths, it used to be silent
|
||||
for 4 seconds before it showed any progress report. It is now a bit
|
||||
more impatient and starts showing progress report early.
|
||||
|
||||
* "git commit" learned a new hook "prepare-commit-msg" that can
|
||||
inspect what is going to be committed and prepare the commit
|
||||
log message template to be edited.
|
||||
|
||||
* "git cvsimport" can now take more than one -M options.
|
||||
|
||||
* "git describe" learned to limit the tags to be used for
|
||||
naming with --match option.
|
||||
|
||||
* "git describe --contains" now barfs when the named commit
|
||||
cannot be described.
|
||||
|
||||
* "git describe --exact-match" describes only commits that are tagged.
|
||||
|
||||
* "git describe --long" describes a tagged commit as $tag-0-$sha1,
|
||||
instead of just showing the exact tagname.
|
||||
|
||||
* "git describe" warns when using a tag whose name and path contradict
|
||||
with each other.
|
||||
|
||||
* "git diff" learned "--relative" option to limit and output paths
|
||||
relative to the current directory when working in a subdirectory.
|
||||
|
||||
* "git diff" learned "--dirstat" option to show birds-eye-summary of
|
||||
changes more concisely than "--diffstat".
|
||||
|
||||
* "git format-patch" learned --cover-letter option to generate a cover
|
||||
letter template.
|
||||
|
||||
* "git gc" learned --quiet option.
|
||||
|
||||
* "git gc" now automatically prunes unreachable objects that are two
|
||||
weeks old or older.
|
||||
|
||||
* "git gc --auto" can be disabled more easily by just setting gc.auto
|
||||
to zero. It also tolerates more packfiles by default.
|
||||
|
||||
* "git grep" now knows "--name-only" is a synonym for the "-l" option.
|
||||
|
||||
* "git help <alias>" now reports "'git <alias>' is alias to <what>",
|
||||
instead of saying "No manual entry for git-<alias>".
|
||||
|
||||
* "git help" can use different backends to show manual pages and this can
|
||||
be configured using "man.viewer" configuration.
|
||||
|
||||
* "gitk" does not restore window position from $HOME/.gitk anymore (it
|
||||
still restores the size).
|
||||
|
||||
* "git log --grep=<what>" learned "--fixed-strings" option to look for
|
||||
<what> without treating it as a regular expression.
|
||||
|
||||
* "git gui" learned an auto-spell checking.
|
||||
|
||||
* "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as
|
||||
expected; they push the current branch (and only the current branch).
|
||||
In addition, HEAD can be written as the value of "remote.<there>.push"
|
||||
configuration variable.
|
||||
|
||||
* When the configuration variable "pack.threads" is set to 0, "git
|
||||
repack" auto detects the number of CPUs and uses that many threads.
|
||||
|
||||
* "git send-email" learned to prompt for passwords
|
||||
interactively.
|
||||
|
||||
* "git send-email" learned an easier way to suppress CC
|
||||
recipients.
|
||||
|
||||
* "git stash" learned "pop" command, that applies the latest stash and
|
||||
removes it from the stash, and "drop" command to discard the named
|
||||
stash entry.
|
||||
|
||||
* "git submodule" learned a new subcommand "summary" to show the
|
||||
symmetric difference between the HEAD version and the work tree version
|
||||
of the submodule commits.
|
||||
|
||||
* Various "git cvsimport", "git cvsexportcommit", "git cvsserver",
|
||||
"git svn" and "git p4" improvements.
|
||||
|
||||
(internal)
|
||||
|
||||
* Duplicated code between git-help and git-instaweb that
|
||||
launches user's preferred browser has been refactored.
|
||||
|
||||
* It is now easier to write test scripts that records known
|
||||
breakages.
|
||||
|
||||
* "git checkout" is rewritten in C.
|
||||
|
||||
* "git remote" is rewritten in C.
|
||||
|
||||
* Two conflict hunks that are separated by a very short span of common
|
||||
lines are now coalesced into one larger hunk, to make the result easier
|
||||
to read.
|
||||
|
||||
* Run-command API's use of file descriptors is documented clearer and
|
||||
is more consistent now.
|
||||
|
||||
* diff output can be sent to FILE * that is different from stdout. This
|
||||
will help reimplementing more things in C.
|
||||
|
||||
Fixes since v1.5.4
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.4 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* "git-http-push" did not allow deletion of remote ref with the usual
|
||||
"push <remote> :<branch>" syntax.
|
||||
|
||||
* "git-rebase --abort" did not go back to the right location if
|
||||
"git-reset" was run during the "git-rebase" session.
|
||||
|
||||
* "git imap-send" without setting imap.host did not error out but
|
||||
segfaulted.
|
||||
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.1.adoc
Normal file
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.1.adoc
Normal file
@@ -0,0 +1,28 @@
|
||||
GIT v1.5.6.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6
|
||||
------------------
|
||||
|
||||
* Last minute change broke loose object creation on AIX.
|
||||
|
||||
* (performance fix) We used to make $GIT_DIR absolute path early in the
|
||||
programs but keeping it relative to the current directory internally
|
||||
gives 1-3 per-cent performance boost.
|
||||
|
||||
* bash completion knows the new --graph option to git-log family.
|
||||
|
||||
|
||||
* git-diff -c/--cc showed unnecessary "deletion" lines at the context
|
||||
boundary.
|
||||
|
||||
* git-for-each-ref ignored %(object) and %(type) requests for tag
|
||||
objects.
|
||||
|
||||
* git-merge usage had a typo.
|
||||
|
||||
* Rebuilding of git-svn metainfo database did not take rewriteRoot
|
||||
option into account.
|
||||
|
||||
* Running "git-rebase --continue/--skip/--abort" before starting a
|
||||
rebase gave nonsense error messages.
|
||||
40
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.2.adoc
Normal file
40
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.2.adoc
Normal file
@@ -0,0 +1,40 @@
|
||||
GIT v1.5.6.2 Release Notes
|
||||
==========================
|
||||
|
||||
Futureproof
|
||||
-----------
|
||||
|
||||
* "git-shell" accepts requests without a dash between "git" and
|
||||
subcommand name (e.g. "git upload-pack") which the newer client will
|
||||
start to make sometime in the future.
|
||||
|
||||
Fixes since v1.5.6.1
|
||||
--------------------
|
||||
|
||||
* "git clone" from a remote that is named with url.insteadOf setting in
|
||||
$HOME/.gitconfig did not work well.
|
||||
|
||||
* "git describe --long --tags" segfaulted when the described revision was
|
||||
tagged with a lightweight tag.
|
||||
|
||||
* "git diff --check" did not report the result via its exit status
|
||||
reliably.
|
||||
|
||||
* When remote side used to have branch 'foo' and git-fetch finds that now
|
||||
it has branch 'foo/bar', it refuses to lose the existing remote tracking
|
||||
branch and its reflog. The error message has been improved to suggest
|
||||
pruning the remote if the user wants to proceed and get the latest set
|
||||
of branches from the remote, including such 'foo/bar'.
|
||||
|
||||
* "git reset file" should mean the same thing as "git reset HEAD file",
|
||||
but we required disambiguating -- even when "file" is not ambiguous.
|
||||
|
||||
* "git show" segfaulted when an annotated tag that points at another
|
||||
annotated tag was given to it.
|
||||
|
||||
* Optimization for a large import via "git-svn" introduced in v1.5.6 had a
|
||||
serious memory and temporary file leak, which made it unusable for
|
||||
moderately large import.
|
||||
|
||||
* "git-svn" mangled remote nickname used in the configuration file
|
||||
unnecessarily.
|
||||
52
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.3.adoc
Normal file
52
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.3.adoc
Normal file
@@ -0,0 +1,52 @@
|
||||
GIT v1.5.6.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.2
|
||||
--------------------
|
||||
|
||||
* Setting core.sharedrepository to traditional "true" value was supposed to make
|
||||
the repository group writable but should not affect permission for others.
|
||||
However, since 1.5.6, it was broken to drop permission for others when umask is
|
||||
022, making the repository unreadable by others.
|
||||
|
||||
* Setting GIT_TRACE will report spawning of external process via run_command().
|
||||
|
||||
* Using an object with very deep delta chain pinned memory needed for extracting
|
||||
intermediate base objects unnecessarily long, leading to excess memory usage.
|
||||
|
||||
* Bash completion script did not notice '--' marker on the command
|
||||
line and tried the relatively slow "ref completion" even when
|
||||
completing arguments after one.
|
||||
|
||||
* Registering a non-empty blob racily and then truncating the working
|
||||
tree file for it confused "racy-git avoidance" logic into thinking
|
||||
that the path is now unchanged.
|
||||
|
||||
* The section that describes attributes related to git-archive were placed
|
||||
in a wrong place in the gitattributes(5) manual page.
|
||||
|
||||
* "git am" was not helpful to the users when it detected that the committer
|
||||
information is not set up properly yet.
|
||||
|
||||
* "git clone" had a leftover debugging fprintf().
|
||||
|
||||
* "git clone -q" was not quiet enough as it used to and gave object count
|
||||
and progress reports.
|
||||
|
||||
* "git clone" marked downloaded packfile with .keep; this could be a
|
||||
good thing if the remote side is well packed but otherwise not,
|
||||
especially for a project that is not really big.
|
||||
|
||||
* "git daemon" used to call syslog() from a signal handler, which
|
||||
could raise signals of its own but generally is not reentrant. This
|
||||
was fixed by restructuring the code to report syslog() after the handler
|
||||
returns.
|
||||
|
||||
* When "git push" tries to remove a remote ref, and corresponding
|
||||
tracking ref is missing, we used to report error (i.e. failure to
|
||||
remove something that does not exist).
|
||||
|
||||
* "git mailinfo" (hence "git am") did not handle commit log messages in a
|
||||
MIME multipart mail correctly.
|
||||
|
||||
Contains other various documentation fixes.
|
||||
47
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.4.adoc
Normal file
47
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.4.adoc
Normal file
@@ -0,0 +1,47 @@
|
||||
GIT v1.5.6.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.3
|
||||
--------------------
|
||||
|
||||
* Various commands could overflow its internal buffer on a platform
|
||||
with small PATH_MAX value in a repository that has contents with
|
||||
long pathnames.
|
||||
|
||||
* There wasn't a way to make --pretty=format:%<> specifiers to honor
|
||||
.mailmap name rewriting for authors and committers. Now you can with
|
||||
%aN and %cN.
|
||||
|
||||
* Bash completion wasted too many cycles; this has been optimized to be
|
||||
usable again.
|
||||
|
||||
* Bash completion lost ref part when completing something like "git show
|
||||
pu:Makefile".
|
||||
|
||||
* "git-cvsserver" did not clean up its temporary working area after annotate
|
||||
request.
|
||||
|
||||
* "git-daemon" called syslog() from its signal handler, which was a
|
||||
no-no.
|
||||
|
||||
* "git-fetch" into an empty repository used to remind that the fetch will
|
||||
be huge by saying "no common commits", but this was an unnecessary
|
||||
noise; it is already known by the user anyway.
|
||||
|
||||
* "git-http-fetch" would have segfaulted when pack idx file retrieved
|
||||
from the other side was corrupt.
|
||||
|
||||
* "git-index-pack" used too much memory when dealing with a deep delta chain.
|
||||
|
||||
* "git-mailinfo" (hence "git-am") did not correctly handle in-body [PATCH]
|
||||
line to override the commit title taken from the mail Subject header.
|
||||
|
||||
* "git-rebase -i -p" lost parents that are not involved in the history
|
||||
being rewritten.
|
||||
|
||||
* "git-rm" lost track of where the index file was when GIT_DIR was
|
||||
specified as a relative path.
|
||||
|
||||
* "git-rev-list --quiet" was not quiet as advertised.
|
||||
|
||||
Contains other various documentation fixes.
|
||||
29
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.5.adoc
Normal file
29
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.5.adoc
Normal file
@@ -0,0 +1,29 @@
|
||||
GIT v1.5.6.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.5.6.4
|
||||
--------------------
|
||||
|
||||
* "git cvsimport" used to spit out "UNKNOWN LINE..." diagnostics to stdout.
|
||||
|
||||
* "git commit -F filename" and "git tag -F filename" run from subdirectories
|
||||
did not read the right file.
|
||||
|
||||
* "git init --template=" with blank "template" parameter linked files
|
||||
under root directories to .git, which was a total nonsense. Instead, it
|
||||
means "I do not want to use anything from the template directory".
|
||||
|
||||
* "git diff-tree" and other diff plumbing ignored diff.renamelimit configuration
|
||||
variable when the user explicitly asked for rename detection.
|
||||
|
||||
* "git name-rev --name-only" did not work when "--stdin" option was in effect.
|
||||
|
||||
* "git show-branch" mishandled its 8th branch.
|
||||
|
||||
* Addition of "git update-index --ignore-submodules" that happened during
|
||||
1.5.6 cycle broke "git update-index --ignore-missing".
|
||||
|
||||
* "git send-email" did not parse charset from an existing Content-type:
|
||||
header properly.
|
||||
|
||||
Contains other various documentation fixes.
|
||||
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.6.adoc
Normal file
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.6.adoc
Normal file
@@ -0,0 +1,10 @@
|
||||
GIT v1.5.6.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.5.6.5
|
||||
-------------------
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
||||
115
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.adoc
Normal file
115
gitportable/mingw64/share/doc/git-doc/RelNotes/1.5.6.adoc
Normal file
@@ -0,0 +1,115 @@
|
||||
GIT v1.5.6 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.5.5
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* Comes with updated gitk and git-gui.
|
||||
|
||||
(portability)
|
||||
|
||||
* git will build on AIX better than before now.
|
||||
|
||||
* core.ignorecase configuration variable can be used to work better on
|
||||
filesystems that are not case sensitive.
|
||||
|
||||
* "git init" now autodetects the case sensitivity of the filesystem and
|
||||
sets core.ignorecase accordingly.
|
||||
|
||||
* cpio is no longer used; neither "curl" binary (libcurl is still used).
|
||||
|
||||
(documentation)
|
||||
|
||||
* Many freestanding documentation pages have been converted and made
|
||||
available to "git help" (aka "man git<something>") as section 7 of
|
||||
the manual pages. This means bookmarks to some HTML documentation
|
||||
files may need to be updated (eg "tutorial.html" became
|
||||
"gittutorial.html").
|
||||
|
||||
(performance)
|
||||
|
||||
* "git clone" was rewritten in C. This will hopefully help cloning a
|
||||
repository with insane number of refs.
|
||||
|
||||
* "git rebase --onto $there $from $branch" used to switch to the tip of
|
||||
$branch only to immediately reset back to $from, smudging work tree
|
||||
files unnecessarily. This has been optimized.
|
||||
|
||||
* Object creation codepath in "git-svn" has been optimized by enhancing
|
||||
plumbing commands git-cat-file and git-hash-object.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* "git add -p" (and the "patch" subcommand of "git add -i") can choose to
|
||||
apply (or not apply) mode changes independently from contents changes.
|
||||
|
||||
* "git bisect help" gives longer and more helpful usage information.
|
||||
|
||||
* "git bisect" does not use a special branch "bisect" anymore; instead, it
|
||||
does its work on a detached HEAD.
|
||||
|
||||
* "git branch" (and "git checkout -b") can be told to set up
|
||||
branch.<name>.rebase automatically, so that later you can say "git pull"
|
||||
and magically cause "git pull --rebase" to happen.
|
||||
|
||||
* "git branch --merged" and "git branch --no-merged" can be used to list
|
||||
branches that have already been merged (or not yet merged) to the
|
||||
current branch.
|
||||
|
||||
* "git cherry-pick" and "git revert" can add a sign-off.
|
||||
|
||||
* "git commit" mentions the author identity when you are committing
|
||||
somebody else's changes.
|
||||
|
||||
* "git diff/log --dirstat" output is consistent between binary and textual
|
||||
changes.
|
||||
|
||||
* "git filter-branch" rewrites signed tags by demoting them to annotated.
|
||||
|
||||
* "git format-patch --no-binary" can produce a patch that lack binary
|
||||
changes (i.e. cannot be used to propagate the whole changes) meant only
|
||||
for reviewing.
|
||||
|
||||
* "git init --bare" is a synonym for "git --bare init" now.
|
||||
|
||||
* "git gc --auto" honors a new pre-auto-gc hook to temporarily disable it.
|
||||
|
||||
* "git log --pretty=tformat:<custom format>" gives a LF after each entry,
|
||||
instead of giving a LF between each pair of entries which is how
|
||||
"git log --pretty=format:<custom format>" works.
|
||||
|
||||
* "git log" and friends learned the "--graph" option to show the ancestry
|
||||
graph at the left margin of the output.
|
||||
|
||||
* "git log" and friends can be told to use date format that is different
|
||||
from the default via 'log.date' configuration variable.
|
||||
|
||||
* "git send-email" now can send out messages outside a git repository.
|
||||
|
||||
* "git send-email --compose" was made aware of rfc2047 quoting.
|
||||
|
||||
* "git status" can optionally include output from "git submodule
|
||||
summary".
|
||||
|
||||
* "git svn" learned --add-author-from option to propagate the authorship
|
||||
by munging the commit log message.
|
||||
|
||||
* new object creation and looking up in "git svn" has been optimized.
|
||||
|
||||
* "gitweb" can read from a system-wide configuration file.
|
||||
|
||||
(internal)
|
||||
|
||||
* "git unpack-objects" and "git receive-pack" is now more strict about
|
||||
detecting breakage in the objects they receive over the wire.
|
||||
|
||||
|
||||
Fixes since v1.5.5
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.5 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
And there are too numerous small fixes to otherwise note here ;-)
|
||||
36
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.1.adoc
Normal file
36
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.1.adoc
Normal file
@@ -0,0 +1,36 @@
|
||||
GIT v1.6.0.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0
|
||||
------------------
|
||||
|
||||
* "git diff --cc" did not honor content mangling specified by
|
||||
gitattributes and core.autocrlf when reading from the work tree.
|
||||
|
||||
* "git diff --check" incorrectly detected new trailing blank lines when
|
||||
whitespace check was in effect.
|
||||
|
||||
* "git for-each-ref" tried to dereference NULL when asked for '%(body)" on
|
||||
a tag with a single incomplete line as its payload.
|
||||
|
||||
* "git format-patch" peeked before the beginning of a string when
|
||||
"format.headers" variable is empty (a misconfiguration).
|
||||
|
||||
* "git help help" did not work correctly.
|
||||
|
||||
* "git mailinfo" (hence "git am") was unhappy when MIME multipart message
|
||||
contained garbage after the finishing boundary.
|
||||
|
||||
* "git mailinfo" also was unhappy when the "From: " line only had a bare
|
||||
e-mail address.
|
||||
|
||||
* "git merge" did not refresh the index correctly when a merge resulted in
|
||||
a fast-forward.
|
||||
|
||||
* "git merge" did not resolve a truly trivial merges that can be done
|
||||
without content level merges.
|
||||
|
||||
* "git svn dcommit" to a repository with URL that has embedded usernames
|
||||
did not work correctly.
|
||||
|
||||
Contains other various documentation fixes.
|
||||
81
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.2.adoc
Normal file
81
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.2.adoc
Normal file
@@ -0,0 +1,81 @@
|
||||
GIT v1.6.0.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.1
|
||||
--------------------
|
||||
|
||||
* Installation on platforms that needs .exe suffix to git-* programs were
|
||||
broken in 1.6.0.1.
|
||||
|
||||
* Installation on filesystems without symbolic links support did not
|
||||
work well.
|
||||
|
||||
* In-tree documentations and test scripts now use "git foo" form to set a
|
||||
better example, instead of the "git-foo" form (which is an acceptable
|
||||
form if you have "PATH=$(git --exec-path):$PATH" in your script)
|
||||
|
||||
* Many commands did not use the correct working tree location when used
|
||||
with GIT_WORK_TREE environment settings.
|
||||
|
||||
* Some systems need to use compatibility fnmatch and regex libraries
|
||||
independent from each other; the compat/ area has been reorganized to
|
||||
allow this.
|
||||
|
||||
|
||||
* "git apply --unidiff-zero" incorrectly applied a -U0 patch that inserts
|
||||
a new line before the second line.
|
||||
|
||||
* "git blame -c" did not exactly work like "git annotate" when range
|
||||
boundaries are involved.
|
||||
|
||||
* "git checkout file" when file is still unmerged checked out contents from
|
||||
a random high order stage, which was confusing.
|
||||
|
||||
* "git clone $there $here/" with extra trailing slashes after explicit
|
||||
local directory name $here did not work as expected.
|
||||
|
||||
* "git diff" on tracked contents with CRLF line endings did not drive "less"
|
||||
intelligently when showing added or removed lines.
|
||||
|
||||
* "git diff --dirstat -M" did not add changes in subdirectories up
|
||||
correctly for renamed paths.
|
||||
|
||||
* "git diff --cumulative" did not imply "--dirstat".
|
||||
|
||||
* "git for-each-ref refs/heads/" did not work as expected.
|
||||
|
||||
* "git gui" allowed users to feed patch without any context to be applied.
|
||||
|
||||
* "git gui" botched parsing "diff" output when a line that begins with two
|
||||
dashes and a space gets removed or a line that begins with two pluses
|
||||
and a space gets added.
|
||||
|
||||
* "git gui" translation updates and i18n fixes.
|
||||
|
||||
* "git index-pack" is more careful against disk corruption while completing
|
||||
a thin pack.
|
||||
|
||||
* "git log -i --grep=pattern" did not ignore case; neither "git log -E
|
||||
--grep=pattern" triggered extended regexp.
|
||||
|
||||
* "git log --pretty="%ad" --date=short" did not use short format when
|
||||
showing the timestamp.
|
||||
|
||||
* "git log --author=author" match incorrectly matched with the
|
||||
timestamp part of "author " line in commit objects.
|
||||
|
||||
* "git log -F --author=author" did not work at all.
|
||||
|
||||
* Build procedure for "git shell" that used stub versions of some
|
||||
functions and globals was not understood by linkers on some platforms.
|
||||
|
||||
* "git stash" was fooled by a stat-dirty but otherwise unmodified paths
|
||||
and refused to work until the user refreshed the index.
|
||||
|
||||
* "git svn" was broken on Perl before 5.8 with recent fixes to reduce
|
||||
use of temporary files.
|
||||
|
||||
* "git verify-pack -v" did not work correctly when given more than one
|
||||
packfile.
|
||||
|
||||
Also contains many documentation updates.
|
||||
117
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.3.adoc
Normal file
117
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.3.adoc
Normal file
@@ -0,0 +1,117 @@
|
||||
GIT v1.6.0.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.2
|
||||
--------------------
|
||||
|
||||
* "git archive --format=zip" did not honor core.autocrlf while
|
||||
--format=tar did.
|
||||
|
||||
* Continuing "git rebase -i" was very confused when the user left modified
|
||||
files in the working tree while resolving conflicts.
|
||||
|
||||
* Continuing "git rebase -i" was also very confused when the user left
|
||||
some staged changes in the index after "edit".
|
||||
|
||||
* "git rebase -i" now honors the pre-rebase hook, just like the
|
||||
other rebase implementations "git rebase" and "git rebase -m".
|
||||
|
||||
* "git rebase -i" incorrectly aborted when there is no commit to replay.
|
||||
|
||||
* Behaviour of "git diff --quiet" was inconsistent with "diff --exit-code"
|
||||
with the output redirected to /dev/null.
|
||||
|
||||
* "git diff --no-index" on binary files no longer outputs a bogus
|
||||
"diff --git" header line.
|
||||
|
||||
* "git diff" hunk header patterns with multiple elements separated by LF
|
||||
were not used correctly.
|
||||
|
||||
* Hunk headers in "git diff" default to using extended regular
|
||||
expressions, fixing some of the internal patterns on non-GNU
|
||||
platforms.
|
||||
|
||||
* New config "diff.*.xfuncname" exposes extended regular expressions
|
||||
for user specified hunk header patterns.
|
||||
|
||||
* "git gc" when ejecting otherwise unreachable objects from packfiles into
|
||||
loose form leaked memory.
|
||||
|
||||
* "git index-pack" was recently broken and mishandled objects added by
|
||||
thin-pack completion processing under memory pressure.
|
||||
|
||||
* "git index-pack" was recently broken and misbehaved when run from inside
|
||||
.git/objects/pack/ directory.
|
||||
|
||||
* "git stash apply sash@{1}" was fixed to error out. Prior versions
|
||||
would have applied stash@{0} incorrectly.
|
||||
|
||||
* "git stash apply" now offers a better suggestion on how to continue
|
||||
if the working tree is currently dirty.
|
||||
|
||||
* "git for-each-ref --format=%(subject)" fixed for commits with no
|
||||
newline in the message body.
|
||||
|
||||
* "git remote" fixed to protect printf from user input.
|
||||
|
||||
* "git remote show -v" now displays all URLs of a remote.
|
||||
|
||||
* "git checkout -b branch" was confused when branch already existed.
|
||||
|
||||
* "git checkout -q" once again suppresses the locally modified file list.
|
||||
|
||||
* "git clone -q", "git fetch -q" asks remote side to not send
|
||||
progress messages, actually making their output quiet.
|
||||
|
||||
* Cross-directory renames are no longer used when creating packs. This
|
||||
allows more graceful behavior on filesystems like sshfs.
|
||||
|
||||
* Stale temporary files under $GIT_DIR/objects/pack are now cleaned up
|
||||
automatically by "git prune".
|
||||
|
||||
* "git merge" once again removes directories after the last file has
|
||||
been removed from it during the merge.
|
||||
|
||||
* "git merge" did not allocate enough memory for the structure itself when
|
||||
enumerating the parents of the resulting commit.
|
||||
|
||||
* "git blame -C -C" no longer segfaults while trying to pass blame if
|
||||
it encounters a submodule reference.
|
||||
|
||||
* "git rm" incorrectly claimed that you have local modifications when a
|
||||
path was merely stat-dirty.
|
||||
|
||||
* "git svn" fixed to display an error message when 'set-tree' failed,
|
||||
instead of a Perl compile error.
|
||||
|
||||
* "git submodule" fixed to handle checking out a different commit
|
||||
than HEAD after initializing the submodule.
|
||||
|
||||
* The "git commit" error message when there are still unmerged
|
||||
files present was clarified to match "git write-tree".
|
||||
|
||||
* "git init" was confused when core.bare or core.sharedRepository are set
|
||||
in system or user global configuration file by mistake. When --bare or
|
||||
--shared is given from the command line, these now override such
|
||||
settings made outside the repositories.
|
||||
|
||||
* Some segfaults due to uncaught NULL pointers were fixed in multiple
|
||||
tools such as apply, reset, update-index.
|
||||
|
||||
* Solaris builds now default to OLD_ICONV=1 to avoid compile warnings;
|
||||
Solaris 8 does not define NEEDS_LIBICONV by default.
|
||||
|
||||
* "Git.pm" tests relied on unnecessarily more recent version of Perl.
|
||||
|
||||
* "gitweb" triggered undef warning on commits without log messages.
|
||||
|
||||
* "gitweb" triggered undef warnings on missing trees.
|
||||
|
||||
* "gitweb" now removes PATH_INFO from its URLs so users don't have
|
||||
to manually set the URL in the gitweb configuration.
|
||||
|
||||
* Bash completion removed support for legacy "git-fetch", "git-push"
|
||||
and "git-pull" as these are no longer installed. Dashless form
|
||||
("git fetch") is still however supported.
|
||||
|
||||
Many other documentation updates.
|
||||
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.4.adoc
Normal file
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.4.adoc
Normal file
@@ -0,0 +1,39 @@
|
||||
GIT v1.6.0.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.3
|
||||
--------------------
|
||||
|
||||
* 'git add -p' said "No changes" when only binary files were changed.
|
||||
|
||||
* 'git archive' did not work correctly in bare repositories.
|
||||
|
||||
* 'git checkout -t -b newbranch' when you are on detached HEAD was broken.
|
||||
|
||||
* when we refuse to detect renames because there are too many new or
|
||||
deleted files, 'git diff' did not say how many there are.
|
||||
|
||||
* 'git push --mirror' tried and failed to push the stash; there is no
|
||||
point in sending it to begin with.
|
||||
|
||||
* 'git push' did not update the remote tracking reference if the corresponding
|
||||
ref on the remote end happened to be already up to date.
|
||||
|
||||
* 'git pull $there $branch:$current_branch' did not work when you were on
|
||||
a branch yet to be born.
|
||||
|
||||
* when giving up resolving a conflicted merge, 'git reset --hard' failed
|
||||
to remove new paths from the working tree.
|
||||
|
||||
* 'git send-email' had a small fd leak while scanning directory.
|
||||
|
||||
* 'git status' incorrectly reported a submodule directory as an untracked
|
||||
directory.
|
||||
|
||||
* 'git svn' used deprecated 'git-foo' form of subcommand invocation.
|
||||
|
||||
* 'git update-ref -d' to remove a reference did not honor --no-deref option.
|
||||
|
||||
* Plugged small memleaks here and there.
|
||||
|
||||
* Also contains many documentation updates.
|
||||
56
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.5.adoc
Normal file
56
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.5.adoc
Normal file
@@ -0,0 +1,56 @@
|
||||
GIT v1.6.0.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.0.4
|
||||
--------------------
|
||||
|
||||
* "git checkout" used to crash when your HEAD was pointing at a deleted
|
||||
branch.
|
||||
|
||||
* "git checkout" from an un-checked-out state did not allow switching out
|
||||
of the current branch.
|
||||
|
||||
* "git diff" always allowed GIT_EXTERNAL_DIFF and --no-ext-diff was no-op for
|
||||
the command.
|
||||
|
||||
* Giving 3 or more tree-ish to "git diff" is supposed to show the combined
|
||||
diff from second and subsequent trees to the first one, but the order was
|
||||
screwed up.
|
||||
|
||||
* "git fast-export" did not export all tags.
|
||||
|
||||
* "git ls-files --with-tree=<tree>" did not work with options other
|
||||
than -c, most notably with -m.
|
||||
|
||||
* "git pack-objects" did not make its best effort to honor --max-pack-size
|
||||
option when a single first object already busted the given limit and
|
||||
placed many objects in a single pack.
|
||||
|
||||
* "git-p4" fast import frontend was too eager to trigger its keyword expansion
|
||||
logic, even on a keyword-looking string that does not have closing '$' on the
|
||||
same line.
|
||||
|
||||
* "git push $there" when the remote $there is defined in $GIT_DIR/branches/$there
|
||||
behaves more like what cg-push from Cogito used to work.
|
||||
|
||||
* when giving up resolving a conflicted merge, "git reset --hard" failed
|
||||
to remove new paths from the working tree.
|
||||
|
||||
* "git tag" did not complain when given mutually incompatible set of options.
|
||||
|
||||
* The message constructed in the internal editor was discarded when "git
|
||||
tag -s" failed to sign the message, which was often caused by the user
|
||||
not configuring GPG correctly.
|
||||
|
||||
* "make check" cannot be run without sparse; people may have meant to say
|
||||
"make test" instead, so suggest that.
|
||||
|
||||
* Internal diff machinery had a corner case performance bug that choked on
|
||||
a large file with many repeated contents.
|
||||
|
||||
* "git repack" used to grab objects out of packs marked with .keep
|
||||
into a new pack.
|
||||
|
||||
* Many unsafe call to sprintf() style varargs functions are corrected.
|
||||
|
||||
* Also contains quite a few documentation updates.
|
||||
33
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.6.adoc
Normal file
33
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.6.adoc
Normal file
@@ -0,0 +1,33 @@
|
||||
GIT v1.6.0.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since 1.6.0.5
|
||||
-------------------
|
||||
|
||||
* "git fsck" had a deep recursion that wasted stack space.
|
||||
|
||||
* "git fast-export" and "git fast-import" choked on an old style
|
||||
annotated tag that lack the tagger information.
|
||||
|
||||
* "git mergetool -- file" did not correctly skip "--" marker that
|
||||
signals the end of options list.
|
||||
|
||||
* "git show $tag" segfaulted when an annotated $tag pointed at a
|
||||
nonexistent object.
|
||||
|
||||
* "git show 2>error" when the standard output is automatically redirected
|
||||
to the pager redirected the standard error to the pager as well; there
|
||||
was no need to.
|
||||
|
||||
* "git send-email" did not correctly handle list of addresses when
|
||||
they had quoted comma (e.g. "Lastname, Givenname" <mail@addre.ss>).
|
||||
|
||||
* Logic to discover branch ancestry in "git svn" was unreliable when
|
||||
the process to fetch history was interrupted.
|
||||
|
||||
* Removed support for an obsolete gitweb request URI, whose
|
||||
implementation ran "git diff" Porcelain, instead of using plumbing,
|
||||
which would have run an external diff command specified in the
|
||||
repository configuration as the gitweb user.
|
||||
|
||||
Also contains numerous documentation typofixes.
|
||||
258
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.adoc
Normal file
258
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.0.adoc
Normal file
@@ -0,0 +1,258 @@
|
||||
GIT v1.6.0 Release Notes
|
||||
========================
|
||||
|
||||
User visible changes
|
||||
--------------------
|
||||
|
||||
With the default Makefile settings, most of the programs are now
|
||||
installed outside your $PATH, except for "git", "gitk" and
|
||||
some server side programs that need to be accessible for technical
|
||||
reasons. Invoking a git subcommand as "git-xyzzy" from the command
|
||||
line has been deprecated since early 2006 (and officially announced in
|
||||
1.5.4 release notes); use of them from your scripts after adding
|
||||
output from "git --exec-path" to the $PATH is still supported in this
|
||||
release, but users are again strongly encouraged to adjust their
|
||||
scripts to use "git xyzzy" form, as we will stop installing
|
||||
"git-xyzzy" hardlinks for built-in commands in later releases.
|
||||
|
||||
An earlier change to page "git status" output was overwhelmingly unpopular
|
||||
and has been reverted.
|
||||
|
||||
Source changes needed for porting to MinGW environment are now all in the
|
||||
main git.git codebase.
|
||||
|
||||
By default, packfiles created with this version uses delta-base-offset
|
||||
encoding introduced in v1.4.4. Pack idx files are using version 2 that
|
||||
allows larger packs and added robustness thanks to its CRC checking,
|
||||
introduced in v1.5.2 and v1.4.4.5. If you want to keep your repositories
|
||||
backwards compatible past these versions, set repack.useDeltaBaseOffset
|
||||
to false or pack.indexVersion to 1, respectively.
|
||||
|
||||
We used to prevent sample hook scripts shipped in templates/ from
|
||||
triggering by default by relying on the fact that we install them as
|
||||
unexecutable, but on some filesystems, this approach does not work.
|
||||
They are now shipped with ".sample" suffix. If you want to activate
|
||||
any of these samples as-is, rename them to drop the ".sample" suffix,
|
||||
instead of running "chmod +x" on them. For example, you can rename
|
||||
hooks/post-update.sample to hooks/post-update to enable the sample
|
||||
hook that runs update-server-info, in order to make repositories
|
||||
friendly to dumb protocols (i.e. HTTP).
|
||||
|
||||
GIT_CONFIG, which was only documented as affecting "git config", but
|
||||
actually affected all git commands, now only affects "git config".
|
||||
GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
|
||||
not different from GIT_CONFIG in a useful way, is removed.
|
||||
|
||||
The ".dotest" temporary area "git am" and "git rebase" use is now moved
|
||||
inside the $GIT_DIR, to avoid mistakes of adding it to the project by
|
||||
accident.
|
||||
|
||||
An ancient merge strategy "stupid" has been removed.
|
||||
|
||||
|
||||
Updates since v1.5.6
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* git-p4 in contrib learned "allowSubmit" configuration to control on
|
||||
which branch to allow "submit" subcommand.
|
||||
|
||||
* git-gui learned to stage changes per-line.
|
||||
|
||||
(portability)
|
||||
|
||||
* Changes for MinGW port have been merged, thanks to Johannes Sixt and
|
||||
gangs.
|
||||
|
||||
* Sample hook scripts shipped in templates/ are now suffixed with
|
||||
*.sample.
|
||||
|
||||
* perl's in-place edit (-i) does not work well without backup files on Windows;
|
||||
some tests are rewritten to cope with this.
|
||||
|
||||
(documentation)
|
||||
|
||||
* Updated howto/update-hook-example
|
||||
|
||||
* Got rid of usage of "git-foo" from the tutorial and made typography
|
||||
more consistent.
|
||||
|
||||
* Disambiguating "--" between revs and paths is finally documented.
|
||||
|
||||
(performance, robustness, sanity etc.)
|
||||
|
||||
* index-pack used too much memory when dealing with a deep delta chain.
|
||||
This has been optimized.
|
||||
|
||||
* reduced excessive inlining to shrink size of the "git" binary.
|
||||
|
||||
* verify-pack checks the object CRC when using version 2 idx files.
|
||||
|
||||
* When an object is corrupt in a pack, the object became unusable even
|
||||
when the same object is available in a loose form, We now try harder to
|
||||
fall back to these redundant objects when able. In particular, "git
|
||||
repack -a -f" can be used to fix such a corruption as long as necessary
|
||||
objects are available.
|
||||
|
||||
* Performance of "git-blame -C -C" operation is vastly improved.
|
||||
|
||||
* git-clone does not create refs in loose form anymore (it behaves as
|
||||
if you immediately ran git-pack-refs after cloning). This will help
|
||||
repositories with insanely large number of refs.
|
||||
|
||||
* core.fsyncobjectfiles configuration can be used to ensure that the loose
|
||||
objects created will be fsync'ed (this is only useful on filesystems
|
||||
that does not order data writes properly).
|
||||
|
||||
* "git commit-tree" plumbing can make Octopus with more than 16 parents.
|
||||
"git commit" has been capable of this for quite some time.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* even more documentation pages are now accessible via "man" and "git help".
|
||||
|
||||
* A new environment variable GIT_CEILING_DIRECTORIES can be used to stop
|
||||
the discovery process of the toplevel of working tree; this may be useful
|
||||
when you are working in a slow network disk and are outside any working tree,
|
||||
as bash-completion and "git help" may still need to run in these places.
|
||||
|
||||
* By default, stash entries never expire. Set reflogexpire in [gc
|
||||
"refs/stash"] to a reasonable value to get traditional auto-expiration
|
||||
behaviour back
|
||||
|
||||
* Longstanding latency issue with bash completion script has been
|
||||
addressed. This will need to be backmerged to 'maint' later.
|
||||
|
||||
* pager.<cmd> configuration variable can be used to enable/disable the
|
||||
default paging behaviour per command.
|
||||
|
||||
* "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk
|
||||
manually.
|
||||
|
||||
* git-am records the original tip of the branch in ORIG_HEAD before it
|
||||
starts applying patches.
|
||||
|
||||
* git-apply can handle a patch that touches the same path more than once
|
||||
much better than before.
|
||||
|
||||
* git-apply can be told not to trust the line counts recorded in the input
|
||||
patch but recount, with the new --recount option.
|
||||
|
||||
* git-apply can be told to apply a patch to a path deeper than what the
|
||||
patch records with --directory option.
|
||||
|
||||
* git-archive can be told to omit certain paths from its output using
|
||||
export-ignore attributes.
|
||||
|
||||
* git-archive uses the zlib default compression level when creating
|
||||
zip archive.
|
||||
|
||||
* git-archive's command line options --exec and --remote can take their
|
||||
parameters as separate command line arguments, similar to other commands.
|
||||
IOW, both "--exec=path" and "--exec path" are now supported.
|
||||
|
||||
* With -v option, git-branch describes the remote tracking statistics
|
||||
similar to the way git-checkout reports by how many commits your branch
|
||||
is ahead/behind.
|
||||
|
||||
* git-branch's --contains option used to always require a commit parameter
|
||||
to limit the branches with; it now defaults to list branches that
|
||||
contains HEAD if this parameter is omitted.
|
||||
|
||||
* git-branch's --merged and --no-merged option used to always limit the
|
||||
branches relative to the HEAD, but they can now take an optional commit
|
||||
argument that is used in place of HEAD.
|
||||
|
||||
* git-bundle can read the revision arguments from the standard input.
|
||||
|
||||
* git-cherry-pick can replay a root commit now.
|
||||
|
||||
* git-clone can clone from a remote whose URL would be rewritten by
|
||||
configuration stored in $HOME/.gitconfig now.
|
||||
|
||||
* "git-clone --mirror" is a handy way to set up a bare mirror repository.
|
||||
|
||||
* git-cvsserver learned to respond to "cvs co -c".
|
||||
|
||||
* git-diff --check now checks leftover merge conflict markers.
|
||||
|
||||
* "git-diff -p" learned to grab a better hunk header lines in
|
||||
BibTex, Pascal/Delphi, and Ruby files and also pays attention to
|
||||
chapter and part boundary in TeX documents.
|
||||
|
||||
* When remote side used to have branch 'foo' and git-fetch finds that now
|
||||
it has branch 'foo/bar', it refuses to lose the existing remote tracking
|
||||
branch and its reflog. The error message has been improved to suggest
|
||||
pruning the remote if the user wants to proceed and get the latest set
|
||||
of branches from the remote, including such 'foo/bar'.
|
||||
|
||||
* fast-export learned to export and import marks file; this can be used to
|
||||
interface with fast-import incrementally.
|
||||
|
||||
* fast-import and fast-export learned to export and import gitlinks.
|
||||
|
||||
* "gitk" left background process behind after being asked to dig very deep
|
||||
history and the user killed the UI; the process is killed when the UI goes
|
||||
away now.
|
||||
|
||||
* git-rebase records the original tip of branch in ORIG_HEAD before it is
|
||||
rewound.
|
||||
|
||||
* "git rerere" can be told to update the index with auto-reused resolution
|
||||
with rerere.autoupdate configuration variable.
|
||||
|
||||
* git-rev-parse learned $commit^! and $commit^@ notations used in "log"
|
||||
family. These notations are available in gitk as well, because the gitk
|
||||
command internally uses rev-parse to interpret its arguments.
|
||||
|
||||
* git-rev-list learned --children option to show child commits it
|
||||
encountered during the traversal, instead of showing parent commits.
|
||||
|
||||
* git-send-mail can talk not just over SSL but over TLS now.
|
||||
|
||||
* git-shortlog honors custom output format specified with "--pretty=format:".
|
||||
|
||||
* "git-stash save" learned --keep-index option. This lets you stash away the
|
||||
local changes and bring the changes staged in the index to your working
|
||||
tree for examination and testing.
|
||||
|
||||
* git-stash also learned branch subcommand to create a new branch out of
|
||||
stashed changes.
|
||||
|
||||
* git-status gives the remote tracking statistics similar to the way
|
||||
git-checkout reports by how many commits your branch is ahead/behind.
|
||||
|
||||
* "git-svn dcommit" is now aware of auto-props setting the subversion user
|
||||
has.
|
||||
|
||||
* You can tell "git status -u" to even more aggressively omit checking
|
||||
untracked files with --untracked-files=no.
|
||||
|
||||
* Original SHA-1 value for "update-ref -d" is optional now.
|
||||
|
||||
* Error codes from gitweb are made more descriptive where possible, rather
|
||||
than "403 forbidden" as we used to issue everywhere.
|
||||
|
||||
(internal)
|
||||
|
||||
* git-merge has been reimplemented in C.
|
||||
|
||||
|
||||
Fixes since v1.5.6
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.5.6 maintenance series are included in
|
||||
this release, unless otherwise noted.
|
||||
|
||||
* git-clone ignored its -u option; the fix needs to be backported to
|
||||
'maint';
|
||||
|
||||
* git-mv used to lose the distinction between changes that are staged
|
||||
and that are only in the working tree, by staging both in the index
|
||||
after moving such a path.
|
||||
|
||||
* "git-rebase -i -p" rewrote the parents to wrong ones when amending
|
||||
(either edit or squash) was involved, and did not work correctly
|
||||
when fast forwarding.
|
||||
|
||||
59
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.1.adoc
Normal file
59
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.1.adoc
Normal file
@@ -0,0 +1,59 @@
|
||||
GIT v1.6.1.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1
|
||||
------------------
|
||||
|
||||
* "git add frotz/nitfol" when "frotz" is a submodule should have errored
|
||||
out, but it didn't.
|
||||
|
||||
* "git apply" took file modes from the patch text and updated the mode
|
||||
bits of the target tree even when the patch was not about mode changes.
|
||||
|
||||
* "git bisect view" on Cygwin did not launch gitk
|
||||
|
||||
* "git checkout $tree" did not trigger an error.
|
||||
|
||||
* "git commit" tried to remove COMMIT_EDITMSG from the work tree by mistake.
|
||||
|
||||
* "git describe --all" complained when a commit is described with a tag,
|
||||
which was nonsense.
|
||||
|
||||
* "git diff --no-index --" did not trigger no-index (aka "use git-diff as
|
||||
a replacement of diff on untracked files") behaviour.
|
||||
|
||||
* "git format-patch -1 HEAD" on a root commit failed to produce patch
|
||||
text.
|
||||
|
||||
* "git fsck branch" did not work as advertised; instead it behaved the same
|
||||
way as "git fsck".
|
||||
|
||||
* "git log --pretty=format:%s" did not handle a multi-line subject the
|
||||
same way as built-in log listers (i.e. shortlog, --pretty=oneline, etc.)
|
||||
|
||||
* "git daemon", and "git merge-file" are more careful when freopen fails
|
||||
and barf, instead of going on and writing to unopened filehandle.
|
||||
|
||||
* "git http-push" did not like some RFC 4918 compliant DAV server
|
||||
responses.
|
||||
|
||||
* "git merge -s recursive" mistakenly overwritten an untracked file in the
|
||||
work tree upon delete/modify conflict.
|
||||
|
||||
* "git merge -s recursive" didn't leave the index unmerged for entries with
|
||||
rename/delete conflicts.
|
||||
|
||||
* "git merge -s recursive" clobbered untracked files in the work tree.
|
||||
|
||||
* "git mv -k" with more than one erroneous paths misbehaved.
|
||||
|
||||
* "git read-tree -m -u" hence branch switching incorrectly lost a
|
||||
subdirectory in rare cases.
|
||||
|
||||
* "git rebase -i" issued an unnecessary error message upon a user error of
|
||||
marking the first commit to be "squash"ed.
|
||||
|
||||
* "git shortlog" did not format a commit message with multi-line
|
||||
subject correctly.
|
||||
|
||||
Many documentation updates.
|
||||
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.2.adoc
Normal file
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.2.adoc
Normal file
@@ -0,0 +1,39 @@
|
||||
GIT v1.6.1.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.1
|
||||
--------------------
|
||||
|
||||
* The logic for rename detection in internal diff used by commands like
|
||||
"git diff" and "git blame" has been optimized to avoid loading the same
|
||||
blob repeatedly.
|
||||
|
||||
* We did not allow writing out a blob that is larger than 2GB for no good
|
||||
reason.
|
||||
|
||||
* "git format-patch -o $dir", when $dir is a relative directory, used it
|
||||
as relative to the root of the work tree, not relative to the current
|
||||
directory.
|
||||
|
||||
* v1.6.1 introduced an optimization for "git push" into a repository (A)
|
||||
that borrows its objects from another repository (B) to avoid sending
|
||||
objects that are available in repository B, when they are not yet used
|
||||
by repository A. However the code on the "git push" sender side was
|
||||
buggy and did not work when repository B had new objects that are not
|
||||
known by the sender. This caused pushing into a "forked" repository
|
||||
served by v1.6.1 software using "git push" from v1.6.1 sometimes did not
|
||||
work. The bug was purely on the "git push" sender side, and has been
|
||||
corrected.
|
||||
|
||||
* "git status -v" did not paint its diff output in colour even when
|
||||
color.ui configuration was set.
|
||||
|
||||
* "git ls-tree" learned --full-tree option to help Porcelain scripts that
|
||||
want to always see the full path regardless of the current working
|
||||
directory.
|
||||
|
||||
* "git grep" incorrectly searched in work tree paths even when they are
|
||||
marked as assume-unchanged. It now searches in the index entries.
|
||||
|
||||
* "git gc" with no grace period needlessly ejected packed but unreachable
|
||||
objects in their loose form, only to delete them right away.
|
||||
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.3.adoc
Normal file
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.3.adoc
Normal file
@@ -0,0 +1,28 @@
|
||||
GIT v1.6.1.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.2
|
||||
--------------------
|
||||
|
||||
* "git diff --binary | git apply" pipeline did not work well when
|
||||
a binary blob is changed to a symbolic link.
|
||||
|
||||
* Some combinations of -b/-w/--ignore-space-at-eol to "git diff" did
|
||||
not work as expected.
|
||||
|
||||
* "git grep" did not pass the -I (ignore binary) option when
|
||||
calling out an external grep program.
|
||||
|
||||
* "git log" and friends include HEAD to the set of starting points
|
||||
when --all is given. This makes a difference when you are not
|
||||
on any branch.
|
||||
|
||||
* "git mv" to move an untracked file to overwrite a tracked
|
||||
contents misbehaved.
|
||||
|
||||
* "git merge -s octopus" with many potential merge bases did not
|
||||
work correctly.
|
||||
|
||||
* RPM binary package installed the html manpages in a wrong place.
|
||||
|
||||
Also includes minor documentation fixes and updates.
|
||||
41
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.4.adoc
Normal file
41
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.4.adoc
Normal file
@@ -0,0 +1,41 @@
|
||||
GIT v1.6.1.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.1.3
|
||||
--------------------
|
||||
|
||||
* .gitignore learned to handle backslash as a quoting mechanism for
|
||||
comment introduction character "#".
|
||||
This fix was first merged to 1.6.2.1.
|
||||
|
||||
* "git fast-export" produced wrong output with some parents missing from
|
||||
commits, when the history is clock-skewed.
|
||||
|
||||
* "git fast-import" sometimes failed to read back objects it just wrote
|
||||
out and aborted, because it failed to flush stale cached data.
|
||||
|
||||
* "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
|
||||
deciding to descend into a subdirectory but they did not match the
|
||||
individual paths correctly. This caused pathspecs "abc/d ab" to match
|
||||
"abc/0" ("abc/d" made them decide to descend into the directory "abc/",
|
||||
and then "ab" incorrectly matched "abc/0" when it shouldn't).
|
||||
This fix was first merged to 1.6.2.3.
|
||||
|
||||
* import-zips script (in contrib) did not compute the common directory
|
||||
prefix correctly.
|
||||
This fix was first merged to 1.6.2.2.
|
||||
|
||||
* "git init" segfaulted when given an overlong template location via
|
||||
the --template= option.
|
||||
This fix was first merged to 1.6.2.4.
|
||||
|
||||
* "git repack" did not error out when necessary object was missing in the
|
||||
repository.
|
||||
|
||||
* git-repack (invoked from git-gc) did not work as nicely as it should in
|
||||
a repository that borrows objects from neighbours via alternates
|
||||
mechanism especially when some packs are marked with the ".keep" flag
|
||||
to prevent them from being repacked.
|
||||
This fix was first merged to 1.6.2.3.
|
||||
|
||||
Also includes minor documentation fixes and updates.
|
||||
280
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.adoc
Normal file
280
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.1.adoc
Normal file
@@ -0,0 +1,280 @@
|
||||
GIT v1.6.1 Release Notes
|
||||
========================
|
||||
|
||||
Updates since v1.6.0
|
||||
--------------------
|
||||
|
||||
When some commands (e.g. "git log", "git diff") spawn pager internally, we
|
||||
used to make the pager the parent process of the git command that produces
|
||||
output. This meant that the exit status of the whole thing comes from the
|
||||
pager, not the underlying git command. We swapped the order of the
|
||||
processes around and you will see the exit code from the command from now
|
||||
on.
|
||||
|
||||
(subsystems)
|
||||
|
||||
* gitk can call out to git-gui to view "git blame" output; git-gui in turn
|
||||
can run gitk from its blame view.
|
||||
|
||||
* Various git-gui updates including updated translations.
|
||||
|
||||
* Various gitweb updates from repo.or.cz installation.
|
||||
|
||||
* Updates to emacs bindings.
|
||||
|
||||
(portability)
|
||||
|
||||
* A few test scripts used nonportable "grep" that did not work well on
|
||||
some platforms, e.g. Solaris.
|
||||
|
||||
* Sample pre-auto-gc script has OS X support.
|
||||
|
||||
* Makefile has support for (ancient) FreeBSD 4.9.
|
||||
|
||||
(performance)
|
||||
|
||||
* Many operations that are lstat(3) heavy can be told to pre-execute
|
||||
necessary lstat(3) in parallel before their main operations, which
|
||||
potentially gives much improved performance for cold-cache cases or in
|
||||
environments with weak metadata caching (e.g. NFS).
|
||||
|
||||
* The underlying diff machinery to produce textual output has been
|
||||
optimized, which would result in faster "git blame" processing.
|
||||
|
||||
* Most of the test scripts (but not the ones that try to run servers)
|
||||
can be run in parallel.
|
||||
|
||||
* Bash completion of refnames in a repository with massive number of
|
||||
refs has been optimized.
|
||||
|
||||
* Cygwin port uses native stat/lstat implementations when applicable,
|
||||
which leads to improved performance.
|
||||
|
||||
* "git push" pays attention to alternate repositories to avoid sending
|
||||
unnecessary objects.
|
||||
|
||||
* "git svn" can rebuild an out-of-date rev_map file.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* When you mistype a command name, git helpfully suggests what it guesses
|
||||
you might have meant to say. help.autocorrect configuration can be set
|
||||
to a non-zero value to accept the suggestion when git can uniquely
|
||||
guess.
|
||||
|
||||
* The packfile machinery hopefully is more robust when dealing with
|
||||
corrupt packs if redundant objects involved in the corruption are
|
||||
available elsewhere.
|
||||
|
||||
* "git add -N path..." adds the named paths as an empty blob, so that
|
||||
subsequent "git diff" will show a diff as if they are creation events.
|
||||
|
||||
* "git add" gained a built-in synonym for people who want to say "stage
|
||||
changes" instead of "add contents to the staging area" which amounts
|
||||
to the same thing.
|
||||
|
||||
* "git apply" learned --include=paths option, similar to the existing
|
||||
--exclude=paths option.
|
||||
|
||||
* "git bisect" is careful about a user mistake and suggests testing of
|
||||
merge base first when good is not a strict ancestor of bad.
|
||||
|
||||
* "git bisect skip" can take a range of commits.
|
||||
|
||||
* "git blame" re-encodes the commit metainfo to UTF-8 from i18n.commitEncoding
|
||||
by default.
|
||||
|
||||
* "git check-attr --stdin" can check attributes for multiple paths.
|
||||
|
||||
* "git checkout --track origin/hack" used to be a syntax error. It now
|
||||
DWIMs to create a corresponding local branch "hack", i.e. acts as if you
|
||||
said "git checkout --track -b hack origin/hack".
|
||||
|
||||
* "git checkout --ours/--theirs" can be used to check out one side of a
|
||||
conflicting merge during conflict resolution.
|
||||
|
||||
* "git checkout -m" can be used to recreate the initial conflicted state
|
||||
during conflict resolution.
|
||||
|
||||
* "git cherry-pick" can also utilize rerere for conflict resolution.
|
||||
|
||||
* "git clone" learned to be verbose with -v
|
||||
|
||||
* "git commit --author=$name" can look up author name from existing
|
||||
commits.
|
||||
|
||||
* output from "git commit" has been reworded in a more concise and yet
|
||||
more informative way.
|
||||
|
||||
* "git count-objects" reports the on-disk footprint for packfiles and
|
||||
their corresponding idx files.
|
||||
|
||||
* "git daemon" learned --max-connections=<count> option.
|
||||
|
||||
* "git daemon" exports REMOTE_ADDR to record client address, so that
|
||||
spawned programs can act differently on it.
|
||||
|
||||
* "git describe --tags" favours closer lightweight tags than farther
|
||||
annotated tags now.
|
||||
|
||||
* "git diff" learned to mimic --suppress-blank-empty from GNU diff via a
|
||||
configuration option.
|
||||
|
||||
* "git diff" learned to put more sensible hunk headers for Python,
|
||||
HTML and ObjC contents.
|
||||
|
||||
* "git diff" learned to vary the a/ vs b/ prefix depending on what are
|
||||
being compared, controlled by diff.mnemonicprefix configuration.
|
||||
|
||||
* "git diff" learned --dirstat-by-file to count changed files, not number
|
||||
of lines, when summarizing the global picture.
|
||||
|
||||
* "git diff" learned "textconv" filters --- a binary or hard-to-read
|
||||
contents can be munged into human readable form and the difference
|
||||
between the results of the conversion can be viewed (obviously this
|
||||
cannot produce a patch that can be applied, so this is disabled in
|
||||
format-patch among other things).
|
||||
|
||||
* "--cached" option to "git diff has an easier to remember synonym "--staged",
|
||||
to ask "what is the difference between the given commit and the
|
||||
contents staged in the index?"
|
||||
|
||||
* "git for-each-ref" learned "refname:short" token that gives an
|
||||
unambiguously abbreviated refname.
|
||||
|
||||
* Auto-numbering of the subject lines is the default for "git
|
||||
format-patch" now.
|
||||
|
||||
* "git grep" learned to accept -z similar to GNU grep.
|
||||
|
||||
* "git help" learned to use GIT_MAN_VIEWER environment variable before
|
||||
using "man" program.
|
||||
|
||||
* "git imap-send" can optionally talk SSL.
|
||||
|
||||
* "git index-pack" is more careful against disk corruption while
|
||||
completing a thin pack.
|
||||
|
||||
* "git log --check" and "git log --exit-code" passes their underlying diff
|
||||
status with their exit status code.
|
||||
|
||||
* "git log" learned --simplify-merges, a milder variant of --full-history;
|
||||
"gitk --simplify-merges" is easier to view than with --full-history.
|
||||
|
||||
* "git log" learned "--source" to show what ref each commit was reached
|
||||
from.
|
||||
|
||||
* "git log" also learned "--simplify-by-decoration" to show the
|
||||
birds-eye-view of the topology of the history.
|
||||
|
||||
* "git log --pretty=format:" learned "%d" format element that inserts
|
||||
names of tags that point at the commit.
|
||||
|
||||
* "git merge --squash" and "git merge --no-ff" into an unborn branch are
|
||||
noticed as user errors.
|
||||
|
||||
* "git merge -s $strategy" can use a custom built strategy if you have a
|
||||
command "git-merge-$strategy" on your $PATH.
|
||||
|
||||
* "git pull" (and "git fetch") can be told to operate "-v"erbosely or
|
||||
"-q"uietly.
|
||||
|
||||
* "git push" can be told to reject deletion of refs with receive.denyDeletes
|
||||
configuration.
|
||||
|
||||
* "git rebase" honours pre-rebase hook; use --no-verify to bypass it.
|
||||
|
||||
* "git rebase -p" uses interactive rebase machinery now to preserve the merges.
|
||||
|
||||
* "git reflog expire branch" can be used in place of "git reflog expire
|
||||
refs/heads/branch".
|
||||
|
||||
* "git remote show $remote" lists remote branches one-per-line now.
|
||||
|
||||
* "git send-email" can be given revision range instead of files and
|
||||
maildirs on the command line, and automatically runs format-patch to
|
||||
generate patches for the given revision range.
|
||||
|
||||
* "git submodule foreach" subcommand allows you to iterate over checked
|
||||
out submodules.
|
||||
|
||||
* "git submodule sync" subcommands allows you to update the origin URL
|
||||
recorded in submodule directories from the toplevel .gitmodules file.
|
||||
|
||||
* "git svn branch" can create new branches on the other end.
|
||||
|
||||
* "gitweb" can use more saner PATH_INFO based URL.
|
||||
|
||||
(internal)
|
||||
|
||||
* "git hash-object" learned to lie about the path being hashed, so that
|
||||
correct gitattributes processing can be done while hashing contents
|
||||
stored in a temporary file.
|
||||
|
||||
* various callers of git-merge-recursive avoid forking it as an external
|
||||
process.
|
||||
|
||||
* Git class defined in "Git.pm" can be subclasses a bit more easily.
|
||||
|
||||
* We used to link GNU regex library as a compatibility layer for some
|
||||
platforms, but it turns out it is not necessary on most of them.
|
||||
|
||||
* Some path handling routines used fixed number of buffers used alternately
|
||||
but depending on the call depth, this arrangement led to hard to track
|
||||
bugs. This issue is being addressed.
|
||||
|
||||
|
||||
Fixes since v1.6.0
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.0.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
* Porcelains implemented as shell scripts were utterly confused when you
|
||||
entered to a subdirectory of a work tree from sideways, following a
|
||||
symbolic link (this may need to be backported to older releases later).
|
||||
|
||||
* Tracking symbolic links would work better on filesystems whose lstat()
|
||||
returns incorrect st_size value for them.
|
||||
|
||||
* "git add" and "git update-index" incorrectly allowed adding S/F when S
|
||||
is a tracked symlink that points at a directory D that has a path F in
|
||||
it (we still need to fix a similar nonsense when S is a submodule and F
|
||||
is a path in it).
|
||||
|
||||
* "git am" after stopping at a broken patch lost --whitespace, -C, -p and
|
||||
--3way options given from the command line initially.
|
||||
|
||||
* "git diff --stdin" used to take two trees on a line and compared them,
|
||||
but we dropped support for such a use case long time ago. This has
|
||||
been resurrected.
|
||||
|
||||
* "git filter-branch" failed to rewrite a tag name with slashes in it.
|
||||
|
||||
* "git http-push" did not understand URI scheme other than opaquelocktoken
|
||||
when acquiring a lock from the server (this may need to be backported to
|
||||
older releases later).
|
||||
|
||||
* After "git rebase -p" stopped with conflicts while replaying a merge,
|
||||
"git rebase --continue" did not work (may need to be backported to older
|
||||
releases).
|
||||
|
||||
* "git revert" records relative to which parent a revert was made when
|
||||
reverting a merge. Together with new documentation that explains issues
|
||||
around reverting a merge and merging from the updated branch later, this
|
||||
hopefully will reduce user confusion (this may need to be backported to
|
||||
older releases later).
|
||||
|
||||
* "git rm --cached" used to allow an empty blob that was added earlier to
|
||||
be removed without --force, even when the file in the work tree has
|
||||
since been modified.
|
||||
|
||||
* "git push --tags --all $there" failed with generic usage message without
|
||||
telling saying these two options are incompatible.
|
||||
|
||||
* "git log --author/--committer" match used to potentially match the
|
||||
timestamp part, exposing internal implementation detail. Also these did
|
||||
not work with --fixed-strings match at all.
|
||||
|
||||
* "gitweb" did not mark non-ASCII characters imported from external HTML fragments
|
||||
correctly.
|
||||
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.1.adoc
Normal file
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.1.adoc
Normal file
@@ -0,0 +1,19 @@
|
||||
GIT v1.6.2.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2
|
||||
------------------
|
||||
|
||||
* .gitignore learned to handle backslash as a quoting mechanism for
|
||||
comment introduction character "#".
|
||||
|
||||
* timestamp output in --date=relative mode used to display timestamps that
|
||||
are long time ago in the default mode; it now uses "N years M months
|
||||
ago", and "N years ago".
|
||||
|
||||
* git-add -i/-p now works with non-ASCII pathnames.
|
||||
|
||||
* "git hash-object -w" did not read from the configuration file from the
|
||||
correct .git directory.
|
||||
|
||||
* git-send-email learned to correctly handle multiple Cc: addresses.
|
||||
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.2.adoc
Normal file
45
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.2.adoc
Normal file
@@ -0,0 +1,45 @@
|
||||
GIT v1.6.2.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.1
|
||||
--------------------
|
||||
|
||||
* A longstanding confusing description of what --pickaxe option of
|
||||
git-diff does has been clarified in the documentation.
|
||||
|
||||
* "git-blame -S" did not quite work near the commits that were given
|
||||
on the command line correctly.
|
||||
|
||||
* "git diff --pickaxe-regexp" did not count overlapping matches
|
||||
correctly.
|
||||
|
||||
* "git diff" did not feed files in work-tree representation to external
|
||||
diff and textconv.
|
||||
|
||||
* "git-fetch" in a repository that was not cloned from anywhere said
|
||||
it cannot find 'origin', which was hard to understand for new people.
|
||||
|
||||
* "git-format-patch --numbered-files --stdout" did not have to die of
|
||||
incompatible options; it now simply ignores --numbered-files as no files
|
||||
are produced anyway.
|
||||
|
||||
* "git-ls-files --deleted" did not work well with GIT_DIR&GIT_WORK_TREE.
|
||||
|
||||
* "git-read-tree A B C..." without -m option has been broken for a long
|
||||
time.
|
||||
|
||||
* git-send-email ignored --in-reply-to when --no-thread was given.
|
||||
|
||||
* 'git-submodule add' did not tolerate extra slashes and ./ in the path it
|
||||
accepted from the command line; it now is more lenient.
|
||||
|
||||
* git-svn misbehaved when the project contained a path that began with
|
||||
two dashes.
|
||||
|
||||
* import-zips script (in contrib) did not compute the common directory
|
||||
prefix correctly.
|
||||
|
||||
* miscompilation of negated enum constants by old gcc (2.9) affected the
|
||||
codepaths to spawn subprocesses.
|
||||
|
||||
Many small documentation updates are included as well.
|
||||
22
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.3.adoc
Normal file
22
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.3.adoc
Normal file
@@ -0,0 +1,22 @@
|
||||
GIT v1.6.2.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.2
|
||||
--------------------
|
||||
|
||||
* Setting an octal mode value to core.sharedrepository configuration to
|
||||
restrict access to the repository to group members did not work as
|
||||
advertised.
|
||||
|
||||
* A fairly large and trivial memory leak while rev-list shows list of
|
||||
reachable objects has been identified and plugged.
|
||||
|
||||
* "git-commit --interactive" did not abort when underlying "git-add -i"
|
||||
signaled a failure.
|
||||
|
||||
* git-repack (invoked from git-gc) did not work as nicely as it should in
|
||||
a repository that borrows objects from neighbours via alternates
|
||||
mechanism especially when some packs are marked with the ".keep" flag
|
||||
to prevent them from being repacked.
|
||||
|
||||
Many small documentation updates are included as well.
|
||||
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.4.adoc
Normal file
39
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.4.adoc
Normal file
@@ -0,0 +1,39 @@
|
||||
GIT v1.6.2.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.3
|
||||
--------------------
|
||||
|
||||
* The configuration parser had a buffer overflow while parsing an overlong
|
||||
value.
|
||||
|
||||
* pruning reflog entries that are unreachable from the tip of the ref
|
||||
during "git reflog prune" (hence "git gc") was very inefficient.
|
||||
|
||||
* "git-add -p" lacked a way to say "q"uit to refuse staging any hunks for
|
||||
the remaining paths. You had to say "d" and then ^C.
|
||||
|
||||
* "git-checkout <tree-ish> <submodule>" did not update the index entry at
|
||||
the named path; it now does.
|
||||
|
||||
* "git-fast-export" choked when seeing a tag that does not point at commit.
|
||||
|
||||
* "git init" segfaulted when given an overlong template location via
|
||||
the --template= option.
|
||||
|
||||
* "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
|
||||
deciding to descend into a subdirectory but they did not match the
|
||||
individual paths correctly. This caused pathspecs "abc/d ab" to match
|
||||
"abc/0" ("abc/d" made them decide to descend into the directory "abc/",
|
||||
and then "ab" incorrectly matched "abc/0" when it shouldn't).
|
||||
|
||||
* "git-merge-recursive" was broken when a submodule entry was involved in
|
||||
a criss-cross merge situation.
|
||||
|
||||
Many small documentation updates are included as well.
|
||||
|
||||
---
|
||||
exec >/var/tmp/1
|
||||
echo O=$(git describe maint)
|
||||
O=v1.6.2.3-38-g318b847
|
||||
git shortlog --no-merges $O..maint
|
||||
21
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.5.adoc
Normal file
21
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.5.adoc
Normal file
@@ -0,0 +1,21 @@
|
||||
GIT v1.6.2.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.2.4
|
||||
--------------------
|
||||
|
||||
* "git apply" mishandled if you fed a git generated patch that renames
|
||||
file A to B and file B to A at the same time.
|
||||
|
||||
* "git diff -c -p" (and "diff --cc") did not expect to see submodule
|
||||
differences and instead refused to work.
|
||||
|
||||
* "git grep -e '('" segfaulted, instead of diagnosing a mismatched
|
||||
parentheses error.
|
||||
|
||||
* "git fetch" generated packs with offset-delta encoding when both ends of
|
||||
the connection are capable of producing one; this cannot be read by
|
||||
ancient git and the user should be able to disable this by setting
|
||||
repack.usedeltabaseoffset configuration to false.
|
||||
|
||||
|
||||
164
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.adoc
Normal file
164
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.2.adoc
Normal file
@@ -0,0 +1,164 @@
|
||||
GIT v1.6.2 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
|
||||
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
|
||||
Updates since v1.6.1
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* git-svn updates.
|
||||
|
||||
* gitweb updates, including a new patch view and RSS/Atom feed
|
||||
improvements.
|
||||
|
||||
* (contrib/emacs) git.el now has commands for checking out a branch,
|
||||
creating a branch, cherry-picking and reverting commits; vc-git.el
|
||||
is not shipped with git anymore (it is part of official Emacs).
|
||||
|
||||
(performance)
|
||||
|
||||
* pack-objects autodetects the number of CPUs available and uses threaded
|
||||
version.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* automatic typo correction works on aliases as well
|
||||
|
||||
* @{-1} is a way to refer to the last branch you were on. This is
|
||||
accepted not only where an object name is expected, but anywhere
|
||||
a branch name is expected and acts as if you typed the branch name.
|
||||
E.g. "git branch --track mybranch @{-1}", "git merge @{-1}", and
|
||||
"git rev-parse --symbolic-full-name @{-1}" would work as expected.
|
||||
|
||||
* When refs/remotes/origin/HEAD points at a remote tracking branch that
|
||||
has been pruned away, many git operations issued warning when they
|
||||
internally enumerated the refs. We now warn only when you say "origin"
|
||||
to refer to that pruned branch.
|
||||
|
||||
* The location of .mailmap file can be configured, and its file format was
|
||||
enhanced to allow mapping an incorrect e-mail field as well.
|
||||
|
||||
* "git add -p" learned 'g'oto action to jump directly to a hunk.
|
||||
|
||||
* "git add -p" learned to find a hunk with given text with '/'.
|
||||
|
||||
* "git add -p" optionally can be told to work with just the command letter
|
||||
without Enter.
|
||||
|
||||
* when "git am" stops upon a patch that does not apply, it shows the
|
||||
title of the offending patch.
|
||||
|
||||
* "git am --directory=<dir>" and "git am --reject" passes these options
|
||||
to underlying "git apply".
|
||||
|
||||
* "git am" learned --ignore-date option.
|
||||
|
||||
* "git blame" aligns author names better when they are spelled in
|
||||
non US-ASCII encoding.
|
||||
|
||||
* "git clone" now makes its best effort when cloning from an empty
|
||||
repository to set up configuration variables to refer to the remote
|
||||
repository.
|
||||
|
||||
* "git checkout -" is a shorthand for "git checkout @{-1}".
|
||||
|
||||
* "git cherry" defaults to whatever the current branch is tracking (if
|
||||
exists) when the <upstream> argument is not given.
|
||||
|
||||
* "git cvsserver" can be told not to add extra "via git-CVS emulator" to
|
||||
the commit log message it serves via gitcvs.commitmsgannotation
|
||||
configuration.
|
||||
|
||||
* "git cvsserver" learned to handle 'noop' command some CVS clients seem
|
||||
to expect to work.
|
||||
|
||||
* "git diff" learned a new option --inter-hunk-context to coalesce close
|
||||
hunks together and show context between them.
|
||||
|
||||
* The definition of what constitutes a word for "git diff --color-words"
|
||||
can be customized via gitattributes, command line or a configuration.
|
||||
|
||||
* "git diff" learned --patience to run "patience diff" algorithm.
|
||||
|
||||
* "git filter-branch" learned --prune-empty option that discards commits
|
||||
that do not change the contents.
|
||||
|
||||
* "git fsck" now checks loose objects in alternate object stores, instead
|
||||
of misreporting them as missing.
|
||||
|
||||
* "git gc --prune" was resurrected to allow "git gc --no-prune" and
|
||||
giving non-default expiration period e.g. "git gc --prune=now".
|
||||
|
||||
* "git grep -w" and "git grep" for fixed strings have been optimized.
|
||||
|
||||
* "git mergetool" learned -y(--no-prompt) option to disable prompting.
|
||||
|
||||
* "git rebase -i" can transplant a history down to root to elsewhere
|
||||
with --root option.
|
||||
|
||||
* "git reset --merge" is a new mode that works similar to the way
|
||||
"git checkout" switches branches, taking the local changes while
|
||||
switching to another commit.
|
||||
|
||||
* "git submodule update" learned --no-fetch option.
|
||||
|
||||
* "git tag" learned --contains that works the same way as the same option
|
||||
from "git branch".
|
||||
|
||||
|
||||
Fixes since v1.6.1
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.1.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.1.X series.
|
||||
|
||||
* "git-add sub/file" when sub is a submodule incorrectly added the path to
|
||||
the superproject.
|
||||
|
||||
* "git bundle" did not exclude annotated tags even when a range given
|
||||
from the command line wanted to.
|
||||
|
||||
* "git filter-branch" unnecessarily refused to work when you had
|
||||
checked out a different commit from what is recorded in the superproject
|
||||
index in a submodule.
|
||||
|
||||
* "git filter-branch" incorrectly tried to update a nonexistent work tree
|
||||
at the end when it is run in a bare repository.
|
||||
|
||||
* "git gc" did not work if your repository was created with an ancient git
|
||||
and never had any pack files in it before.
|
||||
|
||||
* "git mergetool" used to ignore autocrlf and other attributes
|
||||
based content rewriting.
|
||||
|
||||
* branch switching and merges had a silly bug that did not validate
|
||||
the correct directory when making sure an existing subdirectory is
|
||||
clean.
|
||||
|
||||
* "git -p cmd" when cmd is not a built-in one left the display in funny state
|
||||
when killed in the middle.
|
||||
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.1.adoc
Normal file
10
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.1.adoc
Normal file
@@ -0,0 +1,10 @@
|
||||
GIT v1.6.3.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3
|
||||
------------------
|
||||
|
||||
* "git checkout -b new-branch" with a staged change in the index
|
||||
incorrectly primed the in-index cache-tree, resulting a wrong tree
|
||||
object to be written out of the index. This is a grave regression
|
||||
since the last 1.6.2.X maintenance release.
|
||||
61
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.2.adoc
Normal file
61
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.2.adoc
Normal file
@@ -0,0 +1,61 @@
|
||||
GIT v1.6.3.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.1
|
||||
--------------------
|
||||
|
||||
* A few codepaths picked up the first few bytes from an sha1[] by
|
||||
casting the (char *) pointer to (int *); GCC 4.4 did not like this,
|
||||
and aborted compilation.
|
||||
|
||||
* Some unlink(2) failures went undiagnosed.
|
||||
|
||||
* The "recursive" merge strategy misbehaved when faced rename/delete
|
||||
conflicts while coming up with an intermediate merge base.
|
||||
|
||||
* The low-level merge algorithm did not handle a degenerate case of
|
||||
merging a file with itself using itself as the common ancestor
|
||||
gracefully. It should produce the file itself, but instead
|
||||
produced an empty result.
|
||||
|
||||
* GIT_TRACE mechanism segfaulted when tracing a shell-quoted aliases.
|
||||
|
||||
* OpenBSD also uses st_ctimspec in "struct stat", instead of "st_ctim".
|
||||
|
||||
* With NO_CROSS_DIRECTORY_HARDLINKS, "make install" can be told not to
|
||||
create hardlinks between $(gitexecdir)/git-$builtin_commands and
|
||||
$(bindir)/git.
|
||||
|
||||
* command completion code in bash did not reliably detect that we are
|
||||
in a bare repository.
|
||||
|
||||
* "git add ." in an empty directory complained that pathspec "." did not
|
||||
match anything, which may be technically correct, but not useful. We
|
||||
silently make it a no-op now.
|
||||
|
||||
* "git add -p" (and "patch" action in "git add -i") was broken when
|
||||
the first hunk that adds a line at the top was split into two and
|
||||
both halves are marked to be used.
|
||||
|
||||
* "git blame path" misbehaved at the commit where path became file
|
||||
from a directory with some files in it.
|
||||
|
||||
* "git for-each-ref" had a segfaulting bug when dealing with a tag object
|
||||
created by an ancient git.
|
||||
|
||||
* "git format-patch -k" still added patch numbers if format.numbered
|
||||
configuration was set.
|
||||
|
||||
* "git grep --color ''" did not terminate. The command also had
|
||||
subtle bugs with its -w option.
|
||||
|
||||
* http-push had a small use-after-free bug.
|
||||
|
||||
* "git push" was converting OFS_DELTA pack representation into less
|
||||
efficient REF_DELTA representation unconditionally upon transfer,
|
||||
making the transferred data unnecessarily larger.
|
||||
|
||||
* "git remote show origin" segfaulted when origin was still empty.
|
||||
|
||||
Many other general usability updates around help text, diagnostic messages
|
||||
and documentation are included as well.
|
||||
38
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.3.adoc
Normal file
38
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.3.adoc
Normal file
@@ -0,0 +1,38 @@
|
||||
GIT v1.6.3.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.2
|
||||
--------------------
|
||||
|
||||
* "git archive" running on Cygwin can get stuck in an infinite loop.
|
||||
|
||||
* "git daemon" did not correctly parse the initial line that carries
|
||||
virtual host request information.
|
||||
|
||||
* "git diff --textconv" leaked memory badly when the textconv filter
|
||||
errored out.
|
||||
|
||||
* The built-in regular expressions to pick function names to put on
|
||||
hunk header lines for java and objc were very inefficiently written.
|
||||
|
||||
* in certain error situations git-fetch (and git-clone) on Windows didn't
|
||||
detect connection abort and ended up waiting indefinitely.
|
||||
|
||||
* import-tars script (in contrib) did not import symbolic links correctly.
|
||||
|
||||
* http.c used CURLOPT_SSLKEY even on libcURL version 7.9.2, even though
|
||||
it was only available starting 7.9.3.
|
||||
|
||||
* low-level filelevel merge driver used return value from strdup()
|
||||
without checking if we ran out of memory.
|
||||
|
||||
* "git rebase -i" left stray closing parenthesis in its reflog message.
|
||||
|
||||
* "git remote show" did not show all the URLs associated with the named
|
||||
remote, even though "git remote -v" did. Made them consistent by
|
||||
making the former show all URLs.
|
||||
|
||||
* "whitespace" attribute that is set was meant to detect all errors known
|
||||
to git, but it told git to ignore trailing carriage-returns.
|
||||
|
||||
Includes other documentation fixes.
|
||||
36
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.4.adoc
Normal file
36
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.4.adoc
Normal file
@@ -0,0 +1,36 @@
|
||||
GIT v1.6.3.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.3.3
|
||||
--------------------
|
||||
|
||||
* "git add --no-ignore-errors" did not override configured
|
||||
add.ignore-errors configuration.
|
||||
|
||||
* "git apply --whitespace=fix" did not fix trailing whitespace on an
|
||||
incomplete line.
|
||||
|
||||
* "git branch" opened too many commit objects unnecessarily.
|
||||
|
||||
* "git checkout -f $commit" with a path that is a file (or a symlink) in
|
||||
the work tree to a commit that has a directory at the path issued an
|
||||
unnecessary error message.
|
||||
|
||||
* "git diff -c/--cc" was very inefficient in coalescing the removed lines
|
||||
shared between parents.
|
||||
|
||||
* "git diff -c/--cc" showed removed lines at the beginning of a file
|
||||
incorrectly.
|
||||
|
||||
* "git remote show nickname" did not honor configured
|
||||
remote.nickname.uploadpack when inspecting the branches at the remote.
|
||||
|
||||
* "git request-pull" when talking to the terminal for a preview
|
||||
showed some of the output in the pager.
|
||||
|
||||
* "git request-pull start nickname [end]" did not honor configured
|
||||
remote.nickname.uploadpack when it ran git-ls-remote against the remote
|
||||
repository to learn the current tip of branches.
|
||||
|
||||
Includes other documentation updates and minor fixes.
|
||||
|
||||
182
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.adoc
Normal file
182
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.3.adoc
Normal file
@@ -0,0 +1,182 @@
|
||||
GIT v1.6.3 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
|
||||
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
When the user does not tell "git push" what to push, it has always
|
||||
pushed matching refs. For some people it is unexpected, and a new
|
||||
configuration variable push.default has been introduced to allow
|
||||
changing a different default behaviour. To advertise the new feature,
|
||||
a big warning is issued if this is not configured and a git push without
|
||||
arguments is attempted.
|
||||
|
||||
|
||||
Updates since v1.6.2
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* various git-svn updates.
|
||||
|
||||
* git-gui updates, including an update to Russian translation, and a
|
||||
fix to an infinite loop when showing an empty diff.
|
||||
|
||||
* gitk updates, including an update to Russian translation and improved Windows
|
||||
support.
|
||||
|
||||
(performance)
|
||||
|
||||
* many uses of lstat(2) in the codepath for "git checkout" have been
|
||||
optimized out.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* Boolean configuration variable yes/no can be written as on/off.
|
||||
|
||||
* rsync:/path/to/repo can be used to run git over rsync for local
|
||||
repositories. It may not be useful in practice; meant primarily for
|
||||
testing.
|
||||
|
||||
* http transport learned to prompt and use password when fetching from or
|
||||
pushing to http://user@host.xz/ URL.
|
||||
|
||||
* (msysgit) progress output that is sent over the sideband protocol can
|
||||
be handled appropriately in Windows console.
|
||||
|
||||
* "--pretty=<style>" option to the log family of commands can now be
|
||||
spelled as "--format=<style>". In addition, --format=%formatstring
|
||||
is a short-hand for --pretty=tformat:%formatstring.
|
||||
|
||||
* "--oneline" is a synonym for "--pretty=oneline --abbrev-commit".
|
||||
|
||||
* "--graph" to the "git log" family can draw the commit ancestry graph
|
||||
in colors.
|
||||
|
||||
* If you realize that you botched the patch when you are editing hunks
|
||||
with the 'edit' action in git-add -i/-p, you can abort the editor to
|
||||
tell git not to apply it.
|
||||
|
||||
* @{-1} is a new way to refer to the last branch you were on introduced in
|
||||
1.6.2, but the initial implementation did not teach this to a few
|
||||
commands. Now the syntax works with "branch -m @{-1} newname".
|
||||
|
||||
* git-archive learned --output=<file> option.
|
||||
|
||||
* git-archive takes attributes from the tree being archived; strictly
|
||||
speaking, this is an incompatible behaviour change, but is a good one.
|
||||
Use --worktree-attributes option to allow it to read attributes from
|
||||
the work tree as before (deprecated git-tar tree command always reads
|
||||
attributes from the work tree).
|
||||
|
||||
* git-bisect shows not just the number of remaining commits whose goodness
|
||||
is unknown, but also shows the estimated number of remaining rounds.
|
||||
|
||||
* You can give --date=<format> option to git-blame.
|
||||
|
||||
* "git-branch -r" shows HEAD symref that points at a remote branch in
|
||||
interest of each tracked remote repository.
|
||||
|
||||
* "git-branch -v -v" is a new way to get list of names for branches and the
|
||||
"upstream" branch for them.
|
||||
|
||||
* git-config learned -e option to open an editor to edit the config file
|
||||
directly.
|
||||
|
||||
* git-clone runs post-checkout hook when run without --no-checkout.
|
||||
|
||||
* git-difftool is now part of the officially supported command, primarily
|
||||
maintained by David Aguilar.
|
||||
|
||||
* git-for-each-ref learned a new "upstream" token.
|
||||
|
||||
* git-format-patch can be told to use attachment with a new configuration,
|
||||
format.attach.
|
||||
|
||||
* git-format-patch can be told to produce deep or shallow message threads.
|
||||
|
||||
* git-format-patch can be told to always add sign-off with a configuration
|
||||
variable.
|
||||
|
||||
* git-format-patch learned format.headers configuration to add extra
|
||||
header fields to the output. This behaviour is similar to the existing
|
||||
--add-header=<header> option of the command.
|
||||
|
||||
* git-format-patch gives human readable names to the attached files, when
|
||||
told to send patches as attachments.
|
||||
|
||||
* git-grep learned to highlight the found substrings in color.
|
||||
|
||||
* git-imap-send learned to work around Thunderbird's inability to easily
|
||||
disable format=flowed with a new configuration, imap.preformattedHTML.
|
||||
|
||||
* git-rebase can be told to rebase the series even if your branch is a
|
||||
descendant of the commit you are rebasing onto with --force-rebase
|
||||
option.
|
||||
|
||||
* git-rebase can be told to report diffstat with the --stat option.
|
||||
|
||||
* Output from git-remote command has been vastly improved.
|
||||
|
||||
* "git remote update --prune $remote" updates from the named remote and
|
||||
then prunes stale tracking branches.
|
||||
|
||||
* git-send-email learned --confirm option to review the Cc: list before
|
||||
sending the messages out.
|
||||
|
||||
(developers)
|
||||
|
||||
* Test scripts can be run under valgrind.
|
||||
|
||||
* Test scripts can be run with installed git.
|
||||
|
||||
* Makefile learned 'coverage' option to run the test suites with
|
||||
coverage tracking enabled.
|
||||
|
||||
* Building the manpages with docbook-xsl between 1.69.1 and 1.71.1 now
|
||||
requires setting DOCBOOK_SUPPRESS_SP to work around a docbook-xsl bug.
|
||||
This workaround used to be enabled by default, but causes problems
|
||||
with newer versions of docbook-xsl. In addition, there are a few more
|
||||
knobs you can tweak to work around issues with various versions of the
|
||||
docbook-xsl package. See comments in Documentation/Makefile for details.
|
||||
|
||||
* Support for building and testing a subset of git on a system without a
|
||||
working perl has been improved.
|
||||
|
||||
|
||||
Fixes since v1.6.2
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.2.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.2.X series.
|
||||
|
||||
* "git-apply" rejected a patch that swaps two files (i.e. renames A to B
|
||||
and B to A at the same time). May need to be backported by cherry
|
||||
picking d8c81df and then 7fac0ee).
|
||||
|
||||
* The initial checkout did not read the attributes from the .gitattribute
|
||||
file that is being checked out.
|
||||
|
||||
* git-gc spent excessive amount of time to decide if an object appears
|
||||
in a locally existing pack (if needed, backport by merging 69e020a).
|
||||
46
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.1.adoc
Normal file
46
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.1.adoc
Normal file
@@ -0,0 +1,46 @@
|
||||
GIT v1.6.4.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.4
|
||||
------------------
|
||||
|
||||
* An unquoted value in the configuration file, when it contains more than
|
||||
one whitespaces in a row, got them replaced with a single space.
|
||||
|
||||
* "git am" used to accept a single piece of e-mail per file (not a mbox)
|
||||
as its input, but multiple input format support in v1.6.4 broke it.
|
||||
Apparently many people have been depending on this feature.
|
||||
|
||||
* The short help text for "git filter-branch" command was a single long
|
||||
line, wrapped by terminals, and was hard to read.
|
||||
|
||||
* The "recursive" strategy of "git merge" segfaulted when a merge has
|
||||
more than one merge-bases, and merging of these merge-bases involves
|
||||
a rename/rename or a rename/add conflict.
|
||||
|
||||
* "git pull --rebase" did not use the right fork point when the
|
||||
repository has already fetched from the upstream that rewinds the
|
||||
branch it is based on in an earlier fetch.
|
||||
|
||||
* Explain the concept of fast-forward more fully in "git push"
|
||||
documentation, and hint to refer to it from an error message when the
|
||||
command refuses an update to protect the user.
|
||||
|
||||
* The default value for pack.deltacachesize, used by "git repack", is now
|
||||
256M, instead of unbounded. Otherwise a repack of a moderately sized
|
||||
repository would needlessly eat into swap.
|
||||
|
||||
* Document how "git repack" (hence "git gc") interacts with a repository
|
||||
that borrows its objects from other repositories (e.g. ones created by
|
||||
"git clone -s").
|
||||
|
||||
* "git show" on an annotated tag lacked a delimiting blank line between
|
||||
the tag itself and the contents of the object it tags.
|
||||
|
||||
* "git verify-pack -v" erroneously reported number of objects with too
|
||||
deep delta depths as "chain length 0" objects.
|
||||
|
||||
* Long names of authors and committers outside US-ASCII were sometimes
|
||||
incorrectly shown in "gitweb".
|
||||
|
||||
Other minor documentation updates are included.
|
||||
32
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.2.adoc
Normal file
32
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.2.adoc
Normal file
@@ -0,0 +1,32 @@
|
||||
GIT v1.6.4.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.4.1
|
||||
--------------------
|
||||
|
||||
* --date=relative output between 1 and 5 years ago rounded the number of
|
||||
years when saying X years Y months ago, instead of rounding it down.
|
||||
|
||||
* "git add -p" did not handle changes in executable bits correctly
|
||||
(a regression around 1.6.3).
|
||||
|
||||
* "git apply" did not honor GNU diff's convention to mark the creation/deletion
|
||||
event with UNIX epoch timestamp on missing side.
|
||||
|
||||
* "git checkout" incorrectly removed files in a directory pointed by a
|
||||
symbolic link during a branch switch that replaces a directory with
|
||||
a symbolic link.
|
||||
|
||||
* "git clean -d -f" happily descended into a subdirectory that is managed by a
|
||||
separate git repository. It now requires two -f options for safety.
|
||||
|
||||
* "git fetch/push" over http transports had two rather grave bugs.
|
||||
|
||||
* "git format-patch --cover-letter" did not prepare the cover letter file
|
||||
for use with non-ASCII strings when there are the series contributors with
|
||||
non-ASCII names.
|
||||
|
||||
* "git pull origin branch" and "git fetch origin && git merge origin/branch"
|
||||
left different merge messages in the resulting commit.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
29
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.3.adoc
Normal file
29
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.3.adoc
Normal file
@@ -0,0 +1,29 @@
|
||||
GIT v1.6.4.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.4.2
|
||||
--------------------
|
||||
|
||||
* "git clone" from an empty repository gave unnecessary error message,
|
||||
even though it did everything else correctly.
|
||||
|
||||
* "git cvsserver" invoked git commands via "git-foo" style, which has long
|
||||
been deprecated.
|
||||
|
||||
* "git fetch" and "git clone" had an extra sanity check to verify the
|
||||
presence of the corresponding *.pack file before downloading *.idx
|
||||
file by issuing a HEAD request. Github server however sometimes
|
||||
gave 500 (Internal server error) response to HEAD even if a GET
|
||||
request for *.pack file to the same URL would have succeeded, and broke
|
||||
clone over HTTP from some of their repositories. As a workaround, this
|
||||
verification has been removed (as it is not absolutely necessary).
|
||||
|
||||
* "git grep" did not like relative pathname to refer outside the current
|
||||
directory when run from a subdirectory.
|
||||
|
||||
* an error message from "git push" was formatted in a very ugly way.
|
||||
|
||||
* "git svn" did not quote the subversion user name correctly when
|
||||
running its author-prog helper program.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
26
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.4.adoc
Normal file
26
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.4.adoc
Normal file
@@ -0,0 +1,26 @@
|
||||
GIT v1.6.4.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.4.4
|
||||
--------------------
|
||||
|
||||
* The workaround for Github server that sometimes gave 500 (Internal server
|
||||
error) response to HEAD requests in 1.6.4.3 introduced a regression that
|
||||
caused re-fetching projects over http to segfault in certain cases due
|
||||
to uninitialized pointer being freed.
|
||||
|
||||
* "git pull" on an unborn branch used to consider anything in the work
|
||||
tree and the index discardable.
|
||||
|
||||
* "git diff -b/w" did not work well on the incomplete line at the end of
|
||||
the file, due to an incorrect hashing of lines in the low-level xdiff
|
||||
routines.
|
||||
|
||||
* "git checkout-index --prefix=$somewhere" used to work when $somewhere is
|
||||
a symbolic link to a directory elsewhere, but v1.6.4.2 broke it.
|
||||
|
||||
* "git unpack-objects --strict", invoked when receive.fsckobjects
|
||||
configuration is set in the receiving repository of "git push", did not
|
||||
properly check the objects, especially the submodule links, it received.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
20
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.5.adoc
Normal file
20
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.5.adoc
Normal file
@@ -0,0 +1,20 @@
|
||||
Git v1.6.4.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.4.4
|
||||
--------------------
|
||||
|
||||
* Simplified base85 implementation.
|
||||
|
||||
* An overlong line after ".gitdir: " in a git file caused out of bounds
|
||||
access to an array on the stack.
|
||||
|
||||
* "git count-objects" did not handle packs larger than 4G.
|
||||
|
||||
* "git rev-parse --parseopt --stop-at-non-option" did not stop at non option
|
||||
when --keep-dashdash was in effect.
|
||||
|
||||
* "gitweb" can sometimes be tricked into parrotting a filename argument
|
||||
given in a request without properly quoting.
|
||||
|
||||
Other minor fixes and documentation updates are included.
|
||||
147
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.adoc
Normal file
147
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.4.adoc
Normal file
@@ -0,0 +1,147 @@
|
||||
GIT v1.6.4 Release Notes
|
||||
========================
|
||||
|
||||
With the next major release, "git push" into a branch that is
|
||||
currently checked out will be refused by default. You can choose
|
||||
what should happen upon such a push by setting the configuration
|
||||
variable receive.denyCurrentBranch in the receiving repository.
|
||||
|
||||
To ease the transition plan, the receiving repository of such a
|
||||
push running this release will issue a big warning when the
|
||||
configuration variable is missing. Please refer to:
|
||||
|
||||
https://archive.kernel.org/oldwiki/git.wiki.kernel.org/index.php/GitFaq.html#non-bare
|
||||
https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/
|
||||
|
||||
for more details on the reason why this change is needed and the
|
||||
transition plan.
|
||||
|
||||
For a similar reason, "git push $there :$killed" to delete the branch
|
||||
$killed in a remote repository $there, if $killed branch is the current
|
||||
branch pointed at by its HEAD, gets a large warning. You can choose what
|
||||
should happen upon such a push by setting the configuration variable
|
||||
receive.denyDeleteCurrent in the receiving repository.
|
||||
|
||||
|
||||
Updates since v1.6.3
|
||||
--------------------
|
||||
|
||||
(subsystems)
|
||||
|
||||
* gitweb Perl style clean-up.
|
||||
|
||||
* git-svn updates, including a new --authors-prog option to map author
|
||||
names by invoking an external program, 'git svn reset' to unwind
|
||||
'git svn fetch', support for more than one branches, documenting
|
||||
of the useful --minimize-url feature, new "git svn gc" command, etc.
|
||||
|
||||
(portability)
|
||||
|
||||
* We feed iconv with "UTF-8" instead of "utf8"; the former is
|
||||
understood more widely. Similarly updated test scripts to use
|
||||
encoding names more widely understood (e.g. use "ISO8859-1" instead
|
||||
of "ISO-8859-1").
|
||||
|
||||
* Various portability fixes/workarounds for different vintages of
|
||||
SunOS, IRIX, and Windows.
|
||||
|
||||
* Git-over-ssh transport on Windows supports PuTTY plink and TortoisePlink.
|
||||
|
||||
(performance)
|
||||
|
||||
* Many repeated use of lstat() are optimized out in "checkout" codepath.
|
||||
|
||||
* git-status (and underlying git-diff-index --cached) are optimized
|
||||
to take advantage of cache-tree information in the index.
|
||||
|
||||
(usability, bells and whistles)
|
||||
|
||||
* "git add --edit" lets users edit the whole patch text to fine-tune what
|
||||
is added to the index.
|
||||
|
||||
* "git am" accepts StGIT series file as its input.
|
||||
|
||||
* "git bisect skip" skips to a more randomly chosen place in the hope
|
||||
to avoid testing a commit that is too close to a commit that is
|
||||
already known to be untestable.
|
||||
|
||||
* "git cvsexportcommit" learned -k option to stop CVS keywords expansion
|
||||
|
||||
* "git fast-export" learned to handle history simplification more
|
||||
gracefully.
|
||||
|
||||
* "git fast-export" learned an option --tag-of-filtered-object to handle
|
||||
dangling tags resulting from history simplification more usefully.
|
||||
|
||||
* "git grep" learned -p option to show the location of the match using the
|
||||
same context hunk marker "git diff" uses.
|
||||
|
||||
* https transport can optionally be told that the used client
|
||||
certificate is password protected, in which case it asks the
|
||||
password only once.
|
||||
|
||||
* "git imap-send" is IPv6 aware.
|
||||
|
||||
* "git log --graph" draws graphs more compactly by using horizontal lines
|
||||
when able.
|
||||
|
||||
* "git log --decorate" shows shorter refnames by stripping well-known
|
||||
refs/* prefix.
|
||||
|
||||
* "git push $name" honors remote.$name.pushurl if present before
|
||||
using remote.$name.url. In other words, the URL used for fetching
|
||||
and pushing can be different.
|
||||
|
||||
* "git send-email" understands quoted aliases in .mailrc files (might
|
||||
have to be backported to 1.6.3.X).
|
||||
|
||||
* "git send-email" can fetch the sender address from the configuration
|
||||
variable "sendmail.from" (and "sendmail.<identity>.from").
|
||||
|
||||
* "git show-branch" can color its output.
|
||||
|
||||
* "add" and "update" subcommands to "git submodule" learned --reference
|
||||
option to use local clone with references.
|
||||
|
||||
* "git submodule update" learned --rebase option to update checked
|
||||
out submodules by rebasing the local changes.
|
||||
|
||||
* "gitweb" can optionally use gravatar to adorn author/committer names.
|
||||
|
||||
(developers)
|
||||
|
||||
* A major part of the "git bisect" wrapper has moved to C.
|
||||
|
||||
* Formatting with the new version of AsciiDoc 8.4.1 is now supported.
|
||||
|
||||
Fixes since v1.6.3
|
||||
------------------
|
||||
|
||||
All of the fixes in v1.6.3.X maintenance series are included in this
|
||||
release, unless otherwise noted.
|
||||
|
||||
Here are fixes that this release has, but have not been backported to
|
||||
v1.6.3.X series.
|
||||
|
||||
* "git diff-tree -r -t" used to omit new or removed directories from
|
||||
the output. df533f3 (diff-tree -r -t: include added/removed
|
||||
directories in the output, 2009-06-13) may need to be cherry-picked
|
||||
to backport this fix.
|
||||
|
||||
* The way Git.pm sets up a Repository object was not friendly to callers
|
||||
that chdir around. It now internally records the repository location
|
||||
as an absolute path when autodetected.
|
||||
|
||||
* Removing a section with "git config --remove-section", when its
|
||||
section header has a variable definition on the same line, lost
|
||||
that variable definition.
|
||||
|
||||
* "git rebase -p --onto" used to always leave side branches of a merge
|
||||
intact, even when both branches are subject to rewriting.
|
||||
|
||||
* "git repack" used to faithfully follow grafts and considered true
|
||||
parents recorded in the commit object unreachable from the commit.
|
||||
After such a repacking, you cannot remove grafts without corrupting
|
||||
the repository.
|
||||
|
||||
* "git send-email" did not detect erroneous loops in alias expansion.
|
||||
20
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.1.adoc
Normal file
20
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.1.adoc
Normal file
@@ -0,0 +1,20 @@
|
||||
GIT v1.6.5.1 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5
|
||||
------------------
|
||||
|
||||
* An corrupt pack could make codepath to read objects into an
|
||||
infinite loop.
|
||||
|
||||
* Download throughput display was always shown in KiB/s but on fast links
|
||||
it is more appropriate to show it in MiB/s.
|
||||
|
||||
* "git grep -f filename" used uninitialized variable and segfaulted.
|
||||
|
||||
* "git clone -b branch" gave a wrong commit object name to post-checkout
|
||||
hook.
|
||||
|
||||
* "git pull" over http did not work on msys.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.2.adoc
Normal file
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.2.adoc
Normal file
@@ -0,0 +1,19 @@
|
||||
GIT v1.6.5.2 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.1
|
||||
--------------------
|
||||
|
||||
* Installation of templates triggered a bug in busybox when using tar
|
||||
implementation from it.
|
||||
|
||||
* "git add -i" incorrectly ignored paths that are already in the index
|
||||
if they matched .gitignore patterns.
|
||||
|
||||
* "git describe --always" should have produced some output even there
|
||||
were no tags in the repository, but it didn't.
|
||||
|
||||
* "git ls-files" when showing tracked files incorrectly paid attention
|
||||
to the exclude patterns.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
63
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.3.adoc
Normal file
63
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.3.adoc
Normal file
@@ -0,0 +1,63 @@
|
||||
Git v1.6.5.3 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.2
|
||||
--------------------
|
||||
|
||||
* info/grafts file didn't ignore trailing CR at the end of lines.
|
||||
|
||||
* Packages generated on newer FC were unreadable by older versions of
|
||||
RPM as the new default is to use stronger hash.
|
||||
|
||||
* output from "git blame" was unreadable when the file ended in an
|
||||
incomplete line.
|
||||
|
||||
* "git add -i/-p" didn't handle deletion of empty files correctly.
|
||||
|
||||
* "git clone" takes up to two parameters, but did not complain when
|
||||
given more arguments than necessary and silently ignored them.
|
||||
|
||||
* "git cvsimport" did not read files given as command line arguments
|
||||
correctly when it is run from a subdirectory.
|
||||
|
||||
* "git diff --color-words -U0" didn't work correctly.
|
||||
|
||||
* The handling of blank lines at the end of file by "git diff/apply
|
||||
--whitespace" was inconsistent with the other kinds of errors.
|
||||
They are now colored, warned against, and fixed the same way as others.
|
||||
|
||||
* There was no way to allow blank lines at the end of file without
|
||||
allowing extra blanks at the end of lines. You can use blank-at-eof
|
||||
and blank-at-eol whitespace error class to specify them separately.
|
||||
The old trailing-space error class is now a short-hand to set both.
|
||||
|
||||
* "-p" option to "git format-patch" was supposed to suppress diffstat
|
||||
generation, but it was broken since 1.6.1.
|
||||
|
||||
* "git imap-send" did not compile cleanly with newer OpenSSL.
|
||||
|
||||
* "git help -a" outside of a git repository was broken.
|
||||
|
||||
* "git ls-files -i" was supposed to be inverse of "git ls-files" without -i
|
||||
with respect to exclude patterns, but it was broken since 1.6.5.2.
|
||||
|
||||
* "git ls-remote" outside of a git repository over http was broken.
|
||||
|
||||
* "git rebase -i" gave bogus error message when the command word was
|
||||
misspelled.
|
||||
|
||||
* "git receive-pack" that is run in response to "git push" did not run
|
||||
garbage collection nor update-server-info, but in larger hosting sites,
|
||||
these almost always need to be run. To help site administrators, the
|
||||
command now runs "gc --auto" and "u-s-i" by setting receive.autogc
|
||||
and receive.updateserverinfo configuration variables, respectively.
|
||||
|
||||
* Release notes spelled the package name with incorrect capitalization.
|
||||
|
||||
* "gitweb" did not escape non-ascii characters correctly in the URL.
|
||||
|
||||
* "gitweb" showed "patch" link even for merge commits.
|
||||
|
||||
* "gitweb" showed incorrect links for blob line numbers in pathinfo mode.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
32
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.4.adoc
Normal file
32
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.4.adoc
Normal file
@@ -0,0 +1,32 @@
|
||||
Git v1.6.5.4 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.3
|
||||
--------------------
|
||||
|
||||
* "git help" (without argument) used to check if you are in a directory
|
||||
under git control. There was no breakage in behaviour per-se, but this
|
||||
was unnecessary.
|
||||
|
||||
* "git prune-packed" gave progress output even when its standard error is
|
||||
not connected to a terminal; this caused cron jobs that run it to
|
||||
produce cruft.
|
||||
|
||||
* "git pack-objects --all-progress" is an option to ask progress output
|
||||
from write-object phase _if_ progress output were to be produced, and
|
||||
shouldn't have forced the progress output.
|
||||
|
||||
* "git apply -p<n> --directory=<elsewhere>" did not work well for a
|
||||
non-default value of n.
|
||||
|
||||
* "git merge foo HEAD" was misparsed as an old-style invocation of the
|
||||
command and produced a confusing error message. As it does not specify
|
||||
any other branch to merge, it shouldn't be mistaken as such. We will
|
||||
remove the old style "git merge <message> HEAD <commit>..." syntax in
|
||||
future versions, but not in this release,
|
||||
|
||||
* "git merge -m <message> <branch>..." added the standard merge message
|
||||
on its own after user-supplied message, which should have overridden the
|
||||
standard one.
|
||||
|
||||
Other minor documentation updates are included.
|
||||
49
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.5.adoc
Normal file
49
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.5.adoc
Normal file
@@ -0,0 +1,49 @@
|
||||
Git v1.6.5.5 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.4
|
||||
--------------------
|
||||
|
||||
* Manual pages can be formatted with older xmlto again.
|
||||
|
||||
* GREP_OPTIONS exported from user's environment could have broken
|
||||
our scripted commands.
|
||||
|
||||
* In configuration files, a few variables that name paths can begin with
|
||||
~/ and ~username/ and they are expanded as expected. This is not a
|
||||
bugfix but 1.6.6 will have this and without backporting users cannot
|
||||
easily use the same ~/.gitconfig across versions.
|
||||
|
||||
* "git diff -B -M" did the same computation to hash lines of contents
|
||||
twice, and held onto memory after it has used the data in it
|
||||
unnecessarily before it freed.
|
||||
|
||||
* "git diff -B" and "git diff --dirstat" was not counting newly added
|
||||
contents correctly.
|
||||
|
||||
* "git format-patch revisions... -- path" issued an incorrect error
|
||||
message that suggested to use "--" on the command line when path
|
||||
does not exist in the current work tree (it is a separate matter if
|
||||
it makes sense to limit format-patch with pathspecs like that
|
||||
without using the --full-diff option).
|
||||
|
||||
* "git grep -F -i StRiNg" did not work as expected.
|
||||
|
||||
* Enumeration of available merge strategies iterated over the list of
|
||||
commands in a wrong way, sometimes producing an incorrect result.
|
||||
|
||||
* "git shortlog" did not honor the "encoding" header embedded in the
|
||||
commit object like "git log" did.
|
||||
|
||||
* Reading progress messages that come from the remote side while running
|
||||
"git pull" is given precedence over reading the actual pack data to
|
||||
prevent garbled progress message on the user's terminal.
|
||||
|
||||
* "git rebase" got confused when the log message began with certain
|
||||
strings that looked like Subject:, Date: or From: header.
|
||||
|
||||
* "git reset" accidentally run in .git/ directory checked out the
|
||||
work tree contents in there.
|
||||
|
||||
|
||||
Other minor documentation updates are included.
|
||||
23
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.6.adoc
Normal file
23
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.6.adoc
Normal file
@@ -0,0 +1,23 @@
|
||||
Git v1.6.5.6 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.5
|
||||
--------------------
|
||||
|
||||
* "git add -p" had a regression since v1.6.5.3 that broke deletion of
|
||||
non-empty files.
|
||||
|
||||
* "git archive -o o.zip -- Makefile" produced an archive in o.zip
|
||||
but in POSIX tar format.
|
||||
|
||||
* Error message given to "git pull --rebase" when the user didn't give
|
||||
enough clue as to what branch to integrate with still talked about
|
||||
"merging with" the branch.
|
||||
|
||||
* Error messages given by "git merge" when the merge resulted in a
|
||||
fast-forward still were in plumbing lingo, even though in v1.6.5
|
||||
we reworded messages in other cases.
|
||||
|
||||
* The post-upload-hook run by upload-pack in response to "git fetch" has
|
||||
been removed, due to security concerns (the hook first appeared in
|
||||
1.6.5).
|
||||
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.7.adoc
Normal file
19
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.7.adoc
Normal file
@@ -0,0 +1,19 @@
|
||||
Git v1.6.5.7 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.6
|
||||
--------------------
|
||||
|
||||
* If a user specifies a color for a <slot> (i.e. a class of things to show
|
||||
in a particular color) that is known only by newer versions of git
|
||||
(e.g. "color.diff.func" was recently added for upcoming 1.6.6 release),
|
||||
an older version of git should just ignore them. Instead we diagnosed
|
||||
it as an error.
|
||||
|
||||
* With help.autocorrect set to non-zero value, the logic to guess typos
|
||||
in the subcommand name misfired and ran a random nonsense command.
|
||||
|
||||
* If a command is run with an absolute path as a pathspec inside a bare
|
||||
repository, e.g. "rev-list HEAD -- /home", the code tried to run
|
||||
strlen() on NULL, which is the result of get_git_work_tree(), and
|
||||
segfaulted.
|
||||
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.8.adoc
Normal file
28
gitportable/mingw64/share/doc/git-doc/RelNotes/1.6.5.8.adoc
Normal file
@@ -0,0 +1,28 @@
|
||||
Git v1.6.5.8 Release Notes
|
||||
==========================
|
||||
|
||||
Fixes since v1.6.5.7
|
||||
--------------------
|
||||
|
||||
* "git count-objects" did not handle packfiles that are bigger than 4G on
|
||||
platforms with 32-bit off_t.
|
||||
|
||||
* "git rebase -i" did not abort cleanly if it failed to launch the editor.
|
||||
|
||||
* "git blame" did not work well when commit lacked the author name.
|
||||
|
||||
* "git fast-import" choked when handling a tag that points at an object
|
||||
that is not a commit.
|
||||
|
||||
* "git reset --hard" did not work correctly when GIT_WORK_TREE environment
|
||||
variable is used to point at the root of the true work tree.
|
||||
|
||||
* "git grep" fed a buffer that is not NUL-terminated to underlying
|
||||
regexec().
|
||||
|
||||
* "git checkout -m other" while on a branch that does not have any commit
|
||||
segfaulted, instead of failing.
|
||||
|
||||
* "git branch -a other" should have diagnosed the command as an error.
|
||||
|
||||
Other minor documentation updates are also included.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user