Browse Source
* master: commit-tree: allow generic object name for the tree as well. Makefile: remove and create xdiff library from scratch. t0000-basic: Add ls-tree recursive test back. Libified diff-index: backward compatibility fix. Libify diff-index. Libify diff-files. Makefile: remove and create libgit.a from scratch. Document the configuration file Document git-var -l listing also configuration variables rev-parse: better error message for ambiguous arguments make update-index --chmod work with multiple files and --stdin socksetup: don't return on set_reuse_addr() error Fix "git show --stat" git-update-index --unresolve Add git-unresolve <paths>... Add colordiff for git to contrib/colordiff. gitk: Let git-rev-list do the argument list parsingmaint

22 changed files with 2693 additions and 2183 deletions
@ -0,0 +1,181 @@
@@ -0,0 +1,181 @@
|
||||
CONFIGURATION FILE |
||||
------------------ |
||||
|
||||
The git configuration file contains a number of variables that affect |
||||
the git commands behaviour. They can be used by both the git plumbing |
||||
and the porcelains. The variables are divided to sections, where |
||||
in the fully qualified variable name the variable itself is the last |
||||
dot-separated segment and the section name is everything before the last |
||||
dot. The variable names are case-insensitive and only alphanumeric |
||||
characters are allowed. Some variables may appear multiple times. |
||||
|
||||
The syntax is fairly flexible and permissive; whitespaces are mostly |
||||
ignored. The '#' and ';' characters begin commends to the end of line, |
||||
blank lines are ignored, lines containing strings enclosed in square |
||||
brackets start sections and all the other lines are recognized |
||||
as setting variables, in the form 'name = value'. If there is no equal |
||||
sign on the line, the entire line is taken as 'name' and the variable |
||||
is recognized as boolean "true". String values may be entirely or partially |
||||
enclosed in double quotes; some variables may require special value format. |
||||
|
||||
Example |
||||
~~~~~~~ |
||||
|
||||
# Core variables |
||||
[core] |
||||
; Don't trust file modes |
||||
filemode = false |
||||
|
||||
# Our diff algorithm |
||||
[diff] |
||||
external = "/usr/local/bin/gnu-diff -u" |
||||
renames = true |
||||
|
||||
Variables |
||||
~~~~~~~~~ |
||||
|
||||
Note that this list is non-comprehensive and not necessarily complete. |
||||
For command-specific variables, you will find more detailed description |
||||
in the appropriate manual page. You will find description of non-core |
||||
porcelain configuration variables in the respective porcelain documentation. |
||||
|
||||
core.fileMode:: |
||||
If false, the executable bit differences between the index and |
||||
the working copy are ignored; useful on broken filesystems like FAT. |
||||
See gitlink:git-update-index[1]. True by default. |
||||
|
||||
core.gitProxy:: |
||||
A "proxy command" to execute (as 'command host port') instead |
||||
of establishing direct connection to the remote server when |
||||
using the git protocol for fetching. If the variable value is |
||||
in the "COMMAND for DOMAIN" format, the command is applied only |
||||
on hostnames ending with the specified domain string. This variable |
||||
may be set multiple times and is matched in the given order; |
||||
the first match wins. |
||||
|
||||
Can be overriden by the 'GIT_PROXY_COMMAND' environment variable |
||||
(which always applies universally, without the special "for" |
||||
handling). |
||||
|
||||
core.ignoreStat:: |
||||
The working copy files are assumed to stay unchanged until you |
||||
mark them otherwise manually - Git will not detect the file changes |
||||
by lstat() calls. This is useful on systems where those are very |
||||
slow, such as Microsoft Windows. See gitlink:git-update-index[1]. |
||||
False by default. |
||||
|
||||
core.onlyUseSymrefs:: |
||||
Always use the "symref" format instead of symbolic links for HEAD |
||||
and other symbolic reference files. True by default. |
||||
|
||||
core.repositoryFormatVersion:: |
||||
Internal variable identifying the repository format and layout |
||||
version. |
||||
|
||||
core.sharedRepository:: |
||||
If true, the repository is made shareable between several users |
||||
in a group (making sure all the files and objects are group-writable). |
||||
See gitlink:git-init-db[1]. False by default. |
||||
|
||||
core.warnAmbiguousRefs:: |
||||
If true, git will warn you if the ref name you passed it is ambiguous |
||||
and might match multiple refs in the .git/refs/ tree. True by default. |
||||
|
||||
apply.whitespace:: |
||||
Tells `git-apply` how to handle whitespaces, in the same way |
||||
as the '--whitespace' option. See gitlink:git-apply[1]. |
||||
|
||||
diff.renameLimit:: |
||||
The number of files to consider when performing the copy/rename |
||||
detection; equivalent to the git diff option '-l'. |
||||
|
||||
format.headers:: |
||||
Additional email headers to include in a patch to be submitted |
||||
by mail. See gitlink:git-format-patch[1]. |
||||
|
||||
gitcvs.enabled:: |
||||
Whether the cvs pserver interface is enabled for this repository. |
||||
See gitlink:git-cvsserver[1]. |
||||
|
||||
gitcvs.logfile:: |
||||
Path to a log file where the cvs pserver interface well... logs |
||||
various stuff. See gitlink:git-cvsserver[1]. |
||||
|
||||
http.sslVerify:: |
||||
Whether to verify the SSL certificate when fetching or pushing |
||||
over HTTPS. Can be overriden by the 'GIT_SSL_NO_VERIFY' environment |
||||
variable. |
||||
|
||||
http.sslCert:: |
||||
File containing the SSL certificate when fetching or pushing |
||||
over HTTPS. Can be overriden by the 'GIT_SSL_CERT' environment |
||||
variable. |
||||
|
||||
http.sslKey:: |
||||
File containing the SSL private key when fetching or pushing |
||||
over HTTPS. Can be overriden by the 'GIT_SSL_KEY' environment |
||||
variable. |
||||
|
||||
http.sslCAInfo:: |
||||
File containing the certificates to verify the peer with when |
||||
fetching or pushing over HTTPS. Can be overriden by the |
||||
'GIT_SSL_CAINFO' environment variable. |
||||
|
||||
http.sslCAPath:: |
||||
Path containing files with the CA certificates to verify the peer |
||||
with when fetching or pushing over HTTPS. Can be overriden |
||||
by the 'GIT_SSL_CAPATH' environment variable. |
||||
|
||||
http.maxRequests:: |
||||
How many HTTP requests to launch in parallel. Can be overriden |
||||
by the 'GIT_HTTP_MAX_REQUESTS' environment variable. Default is 5. |
||||
|
||||
http.lowSpeedLimit, http.lowSpeedTime:: |
||||
If the HTTP transfer speed is less than 'http.lowSpeedLimit' |
||||
for longer than 'http.lowSpeedTime' seconds, the transfer is aborted. |
||||
Can be overriden by the 'GIT_HTTP_LOW_SPEED_LIMIT' and |
||||
'GIT_HTTP_LOW_SPEED_TIME' environment variables. |
||||
|
||||
i18n.commitEncoding:: |
||||
Character encoding the commit messages are stored in; git itself |
||||
does not care per se, but this information is necessary e.g. when |
||||
importing commits from emails or in the gitk graphical history |
||||
browser (and possibly at other places in the future or in other |
||||
porcelains). See e.g. gitlink:git-mailinfo[1]. Defaults to 'utf-8'. |
||||
|
||||
merge.summary:: |
||||
Whether to include summaries of merged commits in newly created |
||||
merge commit messages. False by default. |
||||
|
||||
pull.octopus:: |
||||
The default merge strategy to use when pulling multiple branches |
||||
at once. |
||||
|
||||
pull.twohead:: |
||||
The default merge strategy to use when pulling a single branch. |
||||
|
||||
show.difftree:: |
||||
The default gitlink:git-diff-tree[1] arguments to be used |
||||
for gitlink:git-show[1]. |
||||
|
||||
showbranch.default:: |
||||
The default set of branches for gitlink:git-show-branch[1]. |
||||
See gitlink:git-show-branch[1]. |
||||
|
||||
user.email:: |
||||
Your email address to be recorded in any newly created commits. |
||||
Can be overriden by the 'GIT_AUTHOR_EMAIL' and 'GIT_COMMITTER_EMAIL' |
||||
environment variables. See gitlink:git-commit-tree[1]. |
||||
|
||||
user.name:: |
||||
Your full name to be recorded in any newly created commits. |
||||
Can be overriden by the 'GIT_AUTHOR_NAME' and 'GIT_COMMITTER_NAME' |
||||
environment variables. See gitlink:git-commit-tree[1]. |
||||
|
||||
whatchanged.difftree:: |
||||
The default gitlink:git-diff-tree[1] arguments to be used |
||||
for gitlink:git-whatchanged[1]. |
||||
|
||||
imap:: |
||||
The configuration variables in the 'imap' section are described |
||||
in gitlink:git-imap-send[1]. |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
This is "colordiff" (http://colordiff.sourceforge.net/) by Dave |
||||
Ewart <davee@sungate.co.uk>, modified specifically for git. |
@ -0,0 +1,196 @@
@@ -0,0 +1,196 @@
|
||||
#!/usr/bin/perl -w |
||||
# |
||||
# $Id: colordiff.pl,v 1.4.2.10 2004/01/04 15:02:59 daveewart Exp $ |
||||
|
||||
######################################################################## |
||||
# # |
||||
# ColorDiff - a wrapper/replacment for 'diff' producing # |
||||
# colourful output # |
||||
# # |
||||
# Copyright (C)2002-2004 Dave Ewart (davee@sungate.co.uk) # |
||||
# # |
||||
######################################################################## |
||||
# # |
||||
# This program is free software; you can redistribute it and/or modify # |
||||
# it under the terms of the GNU General Public License as published by # |
||||
# the Free Software Foundation; either version 2 of the License, or # |
||||
# (at your option) any later version. # |
||||
# # |
||||
# This program is distributed in the hope that it will be useful, # |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of # |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # |
||||
# GNU General Public License for more details. # |
||||
# # |
||||
# You should have received a copy of the GNU General Public License # |
||||
# along with this program; if not, write to the Free Software # |
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # |
||||
# # |
||||
######################################################################## |
||||
|
||||
use strict; |
||||
use Getopt::Long qw(:config pass_through); |
||||
use IPC::Open2; |
||||
|
||||
my $app_name = 'colordiff'; |
||||
my $version = '1.0.4'; |
||||
my $author = 'Dave Ewart'; |
||||
my $author_email = 'davee@sungate.co.uk'; |
||||
my $app_www = 'http://colordiff.sourceforge.net/'; |
||||
my $copyright = '(C)2002-2004'; |
||||
my $show_banner = 1; |
||||
|
||||
# ANSI sequences for colours |
||||
my %colour; |
||||
$colour{white} = "\033[1;37m"; |
||||
$colour{yellow} = "\033[1;33m"; |
||||
$colour{green} = "\033[1;32m"; |
||||
$colour{blue} = "\033[1;34m"; |
||||
$colour{cyan} = "\033[1;36m"; |
||||
$colour{red} = "\033[1;31m"; |
||||
$colour{magenta} = "\033[1;35m"; |
||||
$colour{black} = "\033[1;30m"; |
||||
$colour{darkwhite} = "\033[0;37m"; |
||||
$colour{darkyellow} = "\033[0;33m"; |
||||
$colour{darkgreen} = "\033[0;32m"; |
||||
$colour{darkblue} = "\033[0;34m"; |
||||
$colour{darkcyan} = "\033[0;36m"; |
||||
$colour{darkred} = "\033[0;31m"; |
||||
$colour{darkmagenta} = "\033[0;35m"; |
||||
$colour{darkblack} = "\033[0;30m"; |
||||
$colour{OFF} = "\033[0;0m"; |
||||
|
||||
# Default colours if /etc/colordiffrc or ~/.colordiffrc do not exist |
||||
my $plain_text = $colour{OFF}; |
||||
my $file_old = $colour{red}; |
||||
my $file_new = $colour{blue}; |
||||
my $diff_stuff = $colour{magenta}; |
||||
|
||||
# Locations for personal and system-wide colour configurations |
||||
my $HOME = $ENV{HOME}; |
||||
my $etcdir = '/etc'; |
||||
|
||||
my ($setting, $value); |
||||
my @config_files = ("$etcdir/colordiffrc", "$HOME/.colordiffrc"); |
||||
my $config_file; |
||||
|
||||
foreach $config_file (@config_files) { |
||||
if (open(COLORDIFFRC, "<$config_file")) { |
||||
while (<COLORDIFFRC>) { |
||||
chop; |
||||
next if (/^#/ || /^$/); |
||||
s/\s+//g; |
||||
($setting, $value) = split ('='); |
||||
if ($setting eq 'banner') { |
||||
if ($value eq 'no') { |
||||
$show_banner = 0; |
||||
} |
||||
next; |
||||
} |
||||
if (!defined $colour{$value}) { |
||||
print "Invalid colour specification ($value) in $config_file\n"; |
||||
next; |
||||
} |
||||
if ($setting eq 'plain') { |
||||
$plain_text = $colour{$value}; |
||||
} |
||||
elsif ($setting eq 'oldtext') { |
||||
$file_old = $colour{$value}; |
||||
} |
||||
elsif ($setting eq 'newtext') { |
||||
$file_new = $colour{$value}; |
||||
} |
||||
elsif ($setting eq 'diffstuff') { |
||||
$diff_stuff = $colour{$value}; |
||||
} |
||||
else { |
||||
print "Unknown option in $etcdir/colordiffrc: $setting\n"; |
||||
} |
||||
} |
||||
close COLORDIFFRC; |
||||
} |
||||
} |
||||
|
||||
# colordiff specfic options here. Need to pre-declare if using variables |
||||
GetOptions( |
||||
"no-banner" => sub { $show_banner = 0 }, |
||||
"plain-text=s" => \&set_color, |
||||
"file-old=s" => \&set_color, |
||||
"file-new=s" => \&set_color, |
||||
"diff-stuff=s" => \&set_color |
||||
); |
||||
|
||||
if ($show_banner == 1) { |
||||
print STDERR "$app_name $version ($app_www)\n"; |
||||
print STDERR "$copyright $author, $author_email\n\n"; |
||||
} |
||||
|
||||
if (defined $ARGV[0]) { |
||||
# More reliable way of pulling in arguments |
||||
open2(\*INPUTSTREAM, undef, "git", "diff", @ARGV); |
||||
} |
||||
else { |
||||
*INPUTSTREAM = \*STDIN; |
||||
} |
||||
|
||||
my $record; |
||||
my $nrecs = 0; |
||||
my $inside_file_old = 1; |
||||
my $nparents = undef; |
||||
|
||||
while (<INPUTSTREAM>) { |
||||
$nrecs++; |
||||
if (/^(\@\@+) -[-+0-9, ]+ \1/) { |
||||
print "$diff_stuff"; |
||||
$nparents = length($1) - 1; |
||||
} |
||||
elsif (/^diff -/ || /^index / || |
||||
/^old mode / || /^new mode / || |
||||
/^deleted file mode / || /^new file mode / || |
||||
/^similarity index / || /^dissimilarity index / || |
||||
/^copy from / || /^copy to / || |
||||
/^rename from / || /^rename to /) { |
||||
$nparents = undef; |
||||
print "$diff_stuff"; |
||||
} |
||||
elsif (defined $nparents) { |
||||
if ($nparents == 1) { |
||||
if (/^\+/) { |
||||
print $file_new; |
||||
} |
||||
elsif (/^-/) { |
||||
print $file_old; |
||||
} |
||||
else { |
||||
print $plain_text; |
||||
} |
||||
} |
||||
elsif (/^ {$nparents}/) { |
||||
print "$plain_text"; |
||||
} |
||||
elsif (/^[+ ]{$nparents}/) { |
||||
print "$file_new"; |
||||
} |
||||
elsif (/^[- ]{$nparents}/) { |
||||
print "$file_old"; |
||||
} |
||||
else { |
||||
print $plain_text; |
||||
} |
||||
} |
||||
elsif (/^--- / || /^\+\+\+ /) { |
||||
print $diff_stuff; |
||||
} |
||||
else { |
||||
print "$plain_text"; |
||||
} |
||||
s/$/$colour{OFF}/; |
||||
print "$_"; |
||||
} |
||||
close INPUTSTREAM; |
||||
|
||||
sub set_color { |
||||
my ($type, $color) = @_; |
||||
|
||||
$type =~ s/-/_/; |
||||
eval "\$$type = \$colour{$color}"; |
||||
} |
Loading…
Reference in new issue