* Re: comparing file contents in is_exact_match?
From: Florian Weimer @ 2006-07-07 16:33 UTC (permalink / raw)
To: git
In-Reply-To: <20060706055729.GA12512@admingilde.org>
* Martin Waitz:
> I created a git repository for my photo collection and then renamed
> some photos (about 600). Now git status and commit get hit by
> the OOM killer.
>
> The reason for that is that is_exact_match (in diffcore-rename.c) maps
> both the source and destination file into memory and then compares them
> byte for byte. This is a little bit too much for my little machine.
Uhm, this shouldn't trigger the OOM killer, really. You already have
physical backing storage for both files, so this shouldn't count
towards the OOM limit. Ah, diff_populate_filespec has the following:
s->data = mmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd, 0);
Perhaps the following patch is in order? On some systems, MAP_PRIVATE
might guarantee some form of repeatable reads, but I don't think GIT
needs this to guard against concurrent modification.
-- >8 --
diff_populate_filespec: use shared mapping
It seems that on some systems, PROT_READ + MAP_PRIVATE counts towards
the OOM limit, even though no additional backing store is required.
Requesting MAP_SHARED mapping should fix this.
Signed-off-by: Florian Weimer <fw@deneb.enyo.de>
---
diff.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/diff.c b/diff.c
index 428ff78..2b4367e 100644
--- a/diff.c
+++ b/diff.c
@@ -1007,7 +1007,7 @@ int diff_populate_filespec(struct diff_f
fd = open(s->path, O_RDONLY);
if (fd < 0)
goto err_empty;
- s->data = mmap(NULL, s->size, PROT_READ, MAP_PRIVATE, fd, 0);
+ s->data = mmap(NULL, s->size, PROT_READ, MAP_SHARED, fd, 0);
close(fd);
if (s->data == MAP_FAILED)
goto err_empty;
--
1.4.0
^ permalink raw reply related
* Re: git2rss --- publish changes from git-log via RSS
From: Jakub Narebski @ 2006-07-07 18:38 UTC (permalink / raw)
To: git
In-Reply-To: <20060706125328.GA19414@rahul.net>
Bennett Todd wrote:
> 2006-07-04T21:09:32 Jakub Narebski:
>> BTW. gitweb includes RSS feed, see e.g.:
>> http://www.kernel.org/git/?p=git/git.git;a=rss
>> http://www.kernel.org/git/?p=git/git.git;a=opml
>
> Can it be used for offline generation? I don't run any CGIs on my
> webserver, I re-generate bent.xml whenever I push any updates.
Just run it as a script. IIRC there is a way to pass CGI params
to a script...
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: Why's Git called Git ?
From: Jakub Narebski @ 2006-07-07 18:40 UTC (permalink / raw)
To: git
In-Reply-To: <01f201c6a0a2$6faa0f80$0200a8c0@AMD2500>
Aaron Gray wrote:
>> I really like notion of branching in Git; but be warned about tracking and
>> not recording renames, and the need of explicit packing (the latter very
>> minor). Powerfull, perhaps too powerfull for newbie user: but that is what
>> Cogito is for (although now Git contains fairly large set of high-level
>> commands).
>
> We like to move forward.
What I like a lot in Git is very easy switching of working area between
branches, and to arbitrary commit (point in history).
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH] Add "raw" output option to blobs in "tree" view format
From: Junio C Hamano @ 2006-07-07 18:45 UTC (permalink / raw)
To: ltuikov; +Cc: git
In-Reply-To: <20060707164152.86022.qmail@web31805.mail.mud.yahoo.com>
Luben Tuikov <ltuikov@yahoo.com> writes:
> That is, the user would still have to click through "tree->blob->plain"
> to download a "text/*" file, as opposed to just "tree->raw".
>
> What this patch allows, is that the user be able to simply download the file,
> right from "tree" view, regardless of the type of file. (I.e. the type of
> file as decided by the _user_, not gitweb.cgi.)
OK, I see what you are aiming at.
I have been irritated by the current git_blob that always seems
to do "cat -n" even for non text/* files, but you are tackling
the opposite problem.
^ permalink raw reply
* [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 18:53 UTC (permalink / raw)
To: git; +Cc: Jakub Narebski
---
git-send-email.perl | 41 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 38 insertions(+), 3 deletions(-)
f00ff14faf86c376d0ffb3cef24d2e5a5437dfcf
diff --git a/git-send-email.perl b/git-send-email.perl
index b04b8f4..c9c1975 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -34,8 +34,43 @@ sub readline {
package main;
# most mail servers generate the Date: header, but not all...
-$ENV{LC_ALL} = 'C';
-use POSIX qw/strftime/;
+sub format_2822_time {
+ my ($time) = @_;
+ my @localtm = localtime($time);
+ my @gmttm = gmtime($time);
+ my $localmin = $localtm[1] + $localtm[2] * 60;
+ my $gmtmin = $gmttm[1] + $gmttm[2] * 60;
+ if ($localtm[0] != $gmttm[0]) {
+ die "local zone differs from GMT by a non-minute interval\n";
+ }
+ if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
+ $localmin += 1440;
+ } elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
+ $localmin -= 1440;
+ } elsif ($gmttm[6] != $localtm[6]) {
+ die "local time offset greater than or equal to 24 hours\n";
+ }
+ my $offset = $localmin - $gmtmin;
+ my $offhour = $offset / 60;
+ my $offmin = abs($offset % 60);
+ if (abs($offhour) >= 24) {
+ die ("local time offset greater than or equal to 24 hours\n");
+ }
+
+ return sprintf("%s, %2d %s %d %02d:%02d:%02d %s%02d%02d",
+ qw(Sun Mon Tue Wed Thu Fri Sat)[$localtm[6]],
+ $localtm[3],
+ qw(Jan Feb Mar Apr May Jun
+ Jul Aug Sep Oct Nov Dec)[$localtm[4]],
+ $localtm[5]+1900,
+ $localtm[2],
+ $localtm[1],
+ $localtm[0],
+ ($offset >= 0) ? '+' : '-',
+ abs($offhour),
+ $offmin,
+ );
+}
my $have_email_valid = eval { require Email::Valid; 1 };
my $smtp;
@@ -387,7 +422,7 @@ sub send_message
my @recipients = unique_email_list(@to);
my $to = join (",\n\t", @recipients);
@recipients = unique_email_list(@recipients,@cc,@bcclist);
- my $date = strftime('%a, %d %b %Y %H:%M:%S %z', localtime($time++));
+ my $date = format_2822_time($time++);
my $gitversion = '@@GIT_VERSION@@';
if ($gitversion =~ m/..GIT_VERSION../) {
$gitversion = `git --version`;
--
1.3.0
^ permalink raw reply related
* [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 18:57 UTC (permalink / raw)
To: git; +Cc: Jakub Narebski, Junio C Hamano
In-Reply-To: <7vlkr7bvc1.fsf@assigned-by-dhcp.cox.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Acked-by: Jakub Narebski <jnareb@gmail.com>
---
This patch is sent from patched version of git-send-email.perl
with git tools 1.3.0. This patch is generated from current master
after Junio's patch
Message-ID: <7vd5cnv1v5.fsf@assigned-by-dhcp.cox.net>
applied.
git-send-email.perl | 41 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 38 insertions(+), 3 deletions(-)
f00ff14faf86c376d0ffb3cef24d2e5a5437dfcf
diff --git a/git-send-email.perl b/git-send-email.perl
index b04b8f4..c9c1975 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -34,8 +34,43 @@ sub readline {
package main;
# most mail servers generate the Date: header, but not all...
-$ENV{LC_ALL} = 'C';
-use POSIX qw/strftime/;
+sub format_2822_time {
+ my ($time) = @_;
+ my @localtm = localtime($time);
+ my @gmttm = gmtime($time);
+ my $localmin = $localtm[1] + $localtm[2] * 60;
+ my $gmtmin = $gmttm[1] + $gmttm[2] * 60;
+ if ($localtm[0] != $gmttm[0]) {
+ die "local zone differs from GMT by a non-minute interval\n";
+ }
+ if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
+ $localmin += 1440;
+ } elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
+ $localmin -= 1440;
+ } elsif ($gmttm[6] != $localtm[6]) {
+ die "local time offset greater than or equal to 24 hours\n";
+ }
+ my $offset = $localmin - $gmtmin;
+ my $offhour = $offset / 60;
+ my $offmin = abs($offset % 60);
+ if (abs($offhour) >= 24) {
+ die ("local time offset greater than or equal to 24 hours\n");
+ }
+
+ return sprintf("%s, %2d %s %d %02d:%02d:%02d %s%02d%02d",
+ qw(Sun Mon Tue Wed Thu Fri Sat)[$localtm[6]],
+ $localtm[3],
+ qw(Jan Feb Mar Apr May Jun
+ Jul Aug Sep Oct Nov Dec)[$localtm[4]],
+ $localtm[5]+1900,
+ $localtm[2],
+ $localtm[1],
+ $localtm[0],
+ ($offset >= 0) ? '+' : '-',
+ abs($offhour),
+ $offmin,
+ );
+}
my $have_email_valid = eval { require Email::Valid; 1 };
my $smtp;
@@ -387,7 +422,7 @@ sub send_message
my @recipients = unique_email_list(@to);
my $to = join (",\n\t", @recipients);
@recipients = unique_email_list(@recipients,@cc,@bcclist);
- my $date = strftime('%a, %d %b %Y %H:%M:%S %z', localtime($time++));
+ my $date = format_2822_time($time++);
my $gitversion = '@@GIT_VERSION@@';
if ($gitversion =~ m/..GIT_VERSION../) {
$gitversion = `git --version`;
--
1.3.0
^ permalink raw reply related
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 19:03 UTC (permalink / raw)
To: git
In-Reply-To: <1152298675925-git-send-email-jnareb@gmail.com>
It looks like it is _almost_ correct. It should be
Date: Fri, 07 Jul 2006 20:57:55 +0200
instead of
Date: Fri, 7 Jul 2006 20:57:55 +0200
It is "day = ([FWS] 1*2DIGIT) / obs-day" in RFC2822.
--
Jakub Narebski
^ permalink raw reply
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Junio C Hamano @ 2006-07-07 19:08 UTC (permalink / raw)
To: Jakub Narebski; +Cc: git
In-Reply-To: <1152298675925-git-send-email-jnareb@gmail.com>
Jakub Narebski <jnareb@gmail.com> writes:
> Signed-off-by: Junio C Hamano <junkio@cox.net>
> Acked-by: Jakub Narebski <jnareb@gmail.com>
> ---
> This patch is sent from patched version of git-send-email.perl
> with git tools 1.3.0. This patch is generated from current master
> after Junio's patch
> Message-ID: <7vd5cnv1v5.fsf@assigned-by-dhcp.cox.net>
> applied.
Good test. Thanks.
^ permalink raw reply
* Re: qgit idea: marking refs (heads and tags)
From: Jakub Narebski @ 2006-07-07 19:07 UTC (permalink / raw)
To: git
In-Reply-To: <e5bfff550607061139y3ccbab37xb83e654d24a19964@mail.gmail.com>
Marco Costalba wrote:
> On 7/4/06, Jakub Narebski <jnareb@gmail.com> wrote:
>>> Something as a typical browser "copy selected link" context menu entry?
>>
>> Yes, "copy sha1 of selected link" would be nice.
>>
>
> Patch pushed to public repo (git.kernel.org/pub/scm/qgit/qgit.git)
Thanks a lot!
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: Does Git run on Windows ?
From: Jakub Narebski @ 2006-07-07 19:05 UTC (permalink / raw)
To: git
In-Reply-To: <Pine.LNX.4.63.0607060830060.29667@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin wrote:
> On Thu, 6 Jul 2006, Aaron Gray wrote:
>
>> Its got lots of C code, and Bash scripts, with a couple of Perl scripts.
>
> And you completely forgot Python.
If I remember correctly the only Python dependency was recursive merge
strategy, currently being reworked in C.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: git2rss --- publish changes from git-log via RSS
From: Matthias Lederhofer @ 2006-07-07 19:23 UTC (permalink / raw)
To: Bennett Todd, Jakub Narebski; +Cc: git
In-Reply-To: <e8m9m2$m37$1@sea.gmane.org>
Jakub Narebski wrote:
> Bennett Todd wrote:
>
> > 2006-07-04T21:09:32 Jakub Narebski:
>
> >> BTW. gitweb includes RSS feed, see e.g.:
> >> http://www.kernel.org/git/?p=git/git.git;a=rss
> >> http://www.kernel.org/git/?p=git/git.git;a=opml
> >
> > Can it be used for offline generation? I don't run any CGIs on my
> > webserver, I re-generate bent.xml whenever I push any updates.
>
> Just run it as a script. IIRC there is a way to pass CGI params
> to a script...
env REQUEST_METHOD=GET QUERY_STRING='p=git/git.git;a=rss' \
./gitweb.cgi | (read; read; cat)
works fine if gitweb.cgi is setup correctly.
^ permalink raw reply
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Junio C Hamano @ 2006-07-07 19:25 UTC (permalink / raw)
To: jnareb; +Cc: git
In-Reply-To: <e8mb4l$t1u$1@sea.gmane.org>
Jakub Narebski <jnareb@gmail.com> writes:
> It looks like it is _almost_ correct. It should be
> Date: Fri, 07 Jul 2006 20:57:55 +0200
> instead of
> Date: Fri, 7 Jul 2006 20:57:55 +0200
>
> It is "day = ([FWS] 1*2DIGIT) / obs-day" in RFC2822.
I think you are reading ABNF wrong. <a>*<b>element means at least
<a> times and at most <b> times occurrences of element. Exact
number of repetition is written as <n>element (which is a
short-and for <n>*<n>element).
See the definition of "hour" and friends a few lines below what
you quoted. It is defined as "2DIGIT / obs-hour" and that is
why we say "01:23:45" not "1:23:45"
^ permalink raw reply
* Re: [PATCH 0/4] More tests for hand-written configure (resend)
From: Junio C Hamano @ 2006-07-07 19:40 UTC (permalink / raw)
To: Dennis Stosberg; +Cc: git
In-Reply-To: <20060707162513.25746.57374.stgit@leonov.stosberg.net>
Dennis Stosberg <dennis@stosberg.net> writes:
> I noticed that the autoconf-based solution has replaced Pasky's
> scripts in the pu branch. Has a final decision been made?
My preference has been to see both sides battle it out without
forcing me to decide, but...
> I must admit that I'm less convinced today that a hand-written
> configuration script is better than I was yesterday when I started
> to write the tests.
... I started to share the same feeling after Pavel Roskin made
a good point in "git on HP-UX" thread,
http://thread.gmane.org/gmane.comp.version-control.git/23380/focus=23393
and then after seeing the messages in response to your patch
that used `which` from yesterday.
Shell scripts generated by autoconf are almost unreadable, but
the way how they detect features have been polished in the field
for portability for a long time, and there is no point for us to
spend time reinventing the wheel. The configure.ac files are
often quite readable even when generated configure scripts are
not.
So, I would not veto the use of autoconf, as long as configure
stays as an _optional_ mechanism to manage config.mak.gen that
is used by the main Makefile. The users for whom the configure
script breaks for whatever reason can work it around by simply
not using it, instead of having to debug either the unreadable
configure or having to install autoconf and debug configure.ac
just to build git.
The _optional_ is really the key word here. So "make clean" to
clean autoconf intermediate files is good, "make realclean" to
remove "configure" script generated from "configure.ac" is also
good, but if "make rpm" by default runs "configure", then that
is BAD and I would be very unhappy.
I could probably live with "make rpm-using-configure", though.
^ permalink raw reply
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 19:53 UTC (permalink / raw)
To: git
In-Reply-To: <7vveq9w736.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
>
>> It looks like it is _almost_ correct. It should be
>> Date: Fri, 07 Jul 2006 20:57:55 +0200
>> instead of
>> Date: Fri, 7 Jul 2006 20:57:55 +0200
>>
>> It is "day = ([FWS] 1*2DIGIT) / obs-day" in RFC2822.
>
> I think you are reading ABNF wrong. [...]
>
> See the definition of "hour" and friends a few lines below what
> you quoted. It is defined as "2DIGIT / obs-hour" and that is
> why we say "01:23:45" not "1:23:45"
But it is "day = [...] 2DIGIT [...]"!
Besides, that what other mailers do (I checked the post I replied via
git-send-email to, i.e. your post). Although I don't think that it can
cause any problems, like using locale date with non US-ASCII characters
did...
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 19:59 UTC (permalink / raw)
To: git
In-Reply-To: <1152298402442-git-send-email-jnareb@gmail.com>
Disregard this email. It was send by mistake by git-send-spam^Wemail.perl
--
Jakub Narebski
^ permalink raw reply
* Re: [PATCH] Fix compilation
From: Junio C Hamano @ 2006-07-07 20:02 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git, junkio
In-Reply-To: <Pine.LNX.4.63.0607070120590.29667@wbgn013.biozentrum.uni-wuerzburg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> Note also, that this patch relies on the perl scripts not
> caring if an additional command is shifted into the 2nd line.
How about doing something like this instead, then?
diff --git a/Makefile b/Makefile
index 71657ec..01b9a94 100644
--- a/Makefile
+++ b/Makefile
@@ -550,9 +550,13 @@ common-cmds.h: Documentation/git-*.txt
$(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl
rm -f $@ $@+
INSTLIBDIR=`$(MAKE) -C perl -s --no-print-directory instlibdir` && \
- sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|1' \
- -e '2i\
- use lib (split(/:/, $$ENV{GITPERLLIB} || '\'"$$INSTLIBDIR"\''));' \
+ sed -e '1{' \
+ -e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \
+ -e ' h' \
+ -e ' s=.*=use lib (split(/:/, $$ENV{GITPERLLIB} || "@@INSTLIBDIR@@"));=' \
+ -e ' H' \
+ -e ' x' \
+ -e '}' \
-e 's|@@INSTLIBDIR@@|'"$$INSTLIBDIR"'|g' \
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
$@.perl >$@+
^ permalink raw reply related
* Re: [PATCH] do not use locale specific strftime when preparing 2822 date
From: Jakub Narebski @ 2006-07-07 20:01 UTC (permalink / raw)
To: git
In-Reply-To: <7vzmflw7vd.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
>
>> Signed-off-by: Junio C Hamano <junkio@cox.net>
>> Acked-by: Jakub Narebski <jnareb@gmail.com>
>> ---
>> This patch is sent from patched version of git-send-email.perl
>> with git tools 1.3.0. This patch is generated from current master
>> after Junio's patch
>> Message-ID: <7vd5cnv1v5.fsf@assigned-by-dhcp.cox.net>
>> applied.
>
> Good test. Thanks.
By the way, patch didn't apply cleanly (some fuzz was used).
The patch I send was from _applied_ (to master) patch.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH 2, proof of concept] autoconf: Use %configure in git.spec, autoconf dependency only in rpm target
From: Jakub Narebski @ 2006-07-07 20:06 UTC (permalink / raw)
To: git
In-Reply-To: <1152159397.10415.29.camel@dv>
Pavel Roskin wrote:
> On Tue, 2006-07-04 at 16:09 +0200, Jakub Narebski wrote:
>
>> +Patch0: git-add-autoconf-configure.patch.gz
>
> I don't think we need patches in git.spec.in. Let's leave it to the
> actual distributions. If you have a problem with rpm, please submit the
> autoconf support for now and the rest will be cleaned up eventually.
> Besides, the "next" branch has different and potentially conflicting
> changes to git.spec.in for Git.pm support.
First, it is proof of concept patch, the concept being having autoconf
dependency _only_ in rpm target.
Second, it should be "Source1: autoconf-configure.tar.gz" or something like
that. Using "Patch0:" was an ugly hack.
That to say RPM builders use "PatchN:" for patches which didn't made
upstream; perhaps they make sources more compatibile with distribution RPM
is prepared for.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
^ permalink raw reply
* Re: [PATCH] Use configurable zlib compression level everywhere.
From: David Lang @ 2006-07-07 21:53 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Joachim B Haga, git
In-Reply-To: <7v4pxyscdt.fsf@assigned-by-dhcp.cox.net>
On Mon, 3 Jul 2006, Junio C Hamano wrote:
> * sha1write_compressed() in csum-file.c is for producing packs
> and most of the things we compress there are deltas and less
> compressible, so even when core.compression is set to high we
> might be better off using faster compression.
why would deltas have poor compression? I'd expect them to have about the same
as the files they are deltas of (or slightly better due to the fact that the
deta metainfo is highly repetitive)
David Lang
^ permalink raw reply
* What's in git.git
From: Junio C Hamano @ 2006-07-08 0:37 UTC (permalink / raw)
To: git
Many fixes came in since 1.4.1 was done. Please see the
short-log for what's new in "master".
In the "next" branch, these are cooking:
- Early parts of Perly Git by Petr Baudis with help from others
are merged to "next". Please report breakages before other
Perl scripts are converted to use this.
- "diff --text" by Stephan Feder. I think this one is correct
and should be very safe, but bugs happen to "obvious" code
too, so I have not merged it to "master" yet.
- Move git-svn by Eric Wong out of contrib to make it a
first-class citizen.
- "git-merge-tree" improvements by Linus. I may want to update
this to use our diff routines, but probably after OLS.
In "pu", there are a few more:
- An updated result minimization code in merge-base. I think
this is correct and is not too expensive. I'd like to run a
few more test on this and merge it to "next".
- Updated upload-pack to avoid letting the downloader to
traverse commits from a branch all the way down to root in
vain, when that root is knot known to upload-pack. This
needs another round of test with something like Linus's 2.6
repository and MIPS repository, which costs me quite a lot of
time so I am postponing it right now.
- Built-in git-prune by Linus. I have read the code and did
not spot problems, and it indeed is a lot faster. But this
is git-prune, so I am playing it a bit more cautiously than I
usually do.
- GIT_TRACE by Matthias Lederhofer. What it lets you do is
interesting (although I personally do not foresee myself
using it), and I am in favor of its inclusion. The issue
that the mechanism does not let you trace some commands
(scripts) raised on the list has stalled this topic branch.
I'd either want people to agree that it is not a problem, or
if they feel it is a problem, have a fix for that, before
merging this to "next".
- Auto configuration by Pasky and Jakub. This deserves a fresh
paragraph.
The first patch to use autoconf to build ./configure by Jakub
Narebski is in "pu". I am not against an autoconfiguration
mechanism to maintain config.mak.gen mechanically as an _option_,
and if we are going to have a ./configure script, it would be
better to avoid reinventing the tests autoconf people worked for
a long time to make robust and portable.
I hope further patches to this series will be added soon to
autodetect the following in our Makefile (from "pu"):
NO_D_INO_IN_DIRENT
NO_D_TYPE_IN_DIRENT
NO_STRCASESTR
NO_STRLCPY
NO_SETENV
USE_PIC
NEEDS_SSL_WITH_CRYPTO
NEEDS_LIBICONV
NEEDS_SOCKET
WITH_OWN_SUBPROCESS_PY
NO_IPV6
NO_SOCKADDR_STORAGE
NO_ICONV
These are not something you can change without replacing libc
(or installed Python) wholesale, so autodetection would be
always correct.
Also the following would be nice if autodetection worked for
most of the users with ./configure command line override:
CC
AR
TAR
INSTALL
SHELL_PATH
PERL_PATH
PYTHON_PATH
BASIC_CFLAGS mostly for -I include paths
BASIC_LDFLAGS mostly for -L library paths
ALL_LDFLAGS
NO_OPENSSL
MOZILLA_SHA1
PPC_SHA1
ARM_SHA1
NO_CURL
NO_EXPAT
CURLDIR
OPENSSLDIR
ICONVDIR
EXPATDIR (we do not have one, but I think it should be there
to allow -lexpat installed elsewhere just like
we have CURLDIR and OPENSSLDIR)
Note that I listed NO_OPENSSL, NO_CURL, and NO_EXPAT here not
with the first category, because you may not want to build git
with them even when you do have these libraries.
The directories our stuff will go is builder's policy, so I do
not think automating it is particularly useful, but I am not
opposed if ./configure allowed people to say --prefix=blah.
Because the autodetection of non-policy part is what I primarily
want from ./configure, people who run ./configure without giving
particular --prefix and friends to it should not be burned by
the choice ./configure makes by default. I presume they can
have their own customized prefix and friends in config.mak which
will be included after config.mak.gen so hopefully that is a
non-issue.
----------------------------------------------------------------
* The 'master' branch has these since the last announcement.
Dennis Stosberg:
gitweb: Declare global variables with "our"
Eric Wong:
Add git-instaweb, instantly browse the working repo with gitweb
instaweb: fix unportable ';' usage in sed
t8001-annotate: fix a bash-ism in this test
git-svn: avoid fetching files outside of the URL we're tracking
builtin-log: respect diff configuration options
Jakub Narebski:
send-email: format 2822 datestring ourselves.
Joachim B Haga:
Make zlib compression level configurable, and change default.
core.compression documentation formatting fix.
Johannes Schindelin:
refactor merge_bases() as preparation to libify merge-base
move get_merge_bases() to core lib.
Makefile: replace ugly and unportable sed invocation
Make git-fmt-merge-msg a builtin
Junio C Hamano:
Makefile: add framework to verify and bench sha1 implementations.
test-sha1: test hashing large buffer
t4013: add tests for diff/log family output options.
t4013: add more tests around -c and --cc
Fix some more diff options changes.
t4013 test updates for new output code.
combine-diff.c: type sanity.
format-patch: fix diff format option implementation
t4013: add format-patch tests.
t4013: note improvements brought by the new output code.
gitweb: optimize per-file history generation
t4013: add "diff" UI program tests.
builtin-diff: turn recursive on when defaulting to --patch format.
commit.c: do not redefine UNINTERESTING bit.
Makefile: tighten git-http-{fetch,push} dependencies
get_merge_bases: clean up even when there is no common commit.
revert clear-commit-marks for now.
boolean: accept yes and no as well
send-email: do not barf when Term::ReadLine does not like your terminal
t6200: fmt-merge-msg test.
git-grep: fix parsing of pathspec separator '--'
git-grep: fix exit code when we use external grep.
git-grep: use a bit more specific error messages.
Re-fix clear_commit_marks().
git-reset: complain and exit upon seeing an unknown parameter.
builtin-rev-parse.c: constness tightening
show-branch: match documentation and usage
rev-parse documentation: talk about range notation.
Linus Torvalds:
revision.c: fix "dense" under --remove-empty
Improve git-peek-remote
Luben Tuikov:
gitweb: Enable tree (directory) history display
Rene Scharfe:
Add get_merge_bases_clean()
Add '...' operator for revisions
Make clear_commit_marks() clean harder
Fold get_merge_bases_clean() into get_merge_bases()
rev-list: free commit_list in ... handler
Robin Rosenberg:
Empty author may be presented by svn as an empty string or a null value.
Ryan Anderson:
annotate: Support annotation of files on other revisions.
annotate: Correct most merge following to annotate correctly.
Santi Béjar:
Teach rev-parse the ... syntax.
Stephan Feder:
Do not drop data from '\0' until eol in patch output
Timo Hirvonen:
Merge with_raw, with_stat and summary variables to output_format
Make --raw option available for all diff commands
Set default diff output format after parsing command line
DIFF_FORMAT_RAW is not default anymore
Add msg_sep to diff_options
Don't xcalloc() struct diffstat_t
whatchanged: Default to DIFF_FORMAT_RAW
Print empty line between raw, stat, summary and patch
diff-tree: Use ---\n as a message separator
log --raw: Don't descend into subdirectories by default
Fix diff-tree -s
Unknown:
A better-scheduled PPC SHA-1 implementation.
Ville Skyttä:
Fix print-log and diff compatibility with recent vc versions
* The 'next' branch, in addition, has these.
Dennis Stosberg:
"test" in Solaris' /bin/sh does not support -e
Makefile fix for Solaris
Add possibility to pass CFLAGS and LDFLAGS specific to the perl subdir
Eric Wong:
git-svn: migrate out of contrib
git-svn: migrate out of contrib (follow-up)
diff.c: respect diff.renames config option
Jakub Narebski:
Allow INSTALL, bindir, mandir to be set in main Makefile
Rename man1 and man7 variables to man1dir and man7dir
Johannes Schindelin:
Git.xs: older perl do not know const char *
Makefile: export NO_SVN_TESTS
Junio C Hamano:
Perl interface: add build-time configuration to allow building with -fPIC
Perl interface: make testsuite work again.
perl: fix make clean
Git.pm: tentative fix to test the freshly built Git.pm
Perly Git: arrange include path settings properly.
Makefile: Set USE_PIC on x86-64
Perly git: work around buggy make implementations.
Git.pm: clean generated files.
Perly Git: make sure we do test the freshly built one.
INSTALL: a tip for running after building but without installing.
git-grep: boolean expression on pattern matching.
mailinfo: assume input is latin-1 on the header as we do for the body
diffcore-rename: try matching up renames without populating filespec first.
diff.c: --no-color to defeat diff.color configuration.
Update diff-options and config documentation.
git log -p --merge [[--] paths...]
Linus Torvalds:
xdiff: generate "anti-diffs" aka what is common to two files
Prepare "git-merge-tree" for future work
Improved three-way blob merging code
Pavel Roskin:
Fix probing for already installed Error.pm
Delete manuals if compiling without docs
Make perl interface a separate package
Petr Baudis:
Introduce Git.pm (v4)
Git.pm: Implement Git::exec_path()
Git.pm: Call external commands using execv_git_cmd()
Git.pm: Implement Git::version()
Add Error.pm to the distribution
Git.pm: Better error handling
Git.pm: Handle failed commands' output
Git.pm: Enhance the command_pipe() mechanism
Git.pm: Implement options for the command interface
Git.pm: Add support for subdirectories inside of working copies
Convert git-mv to use Git.pm
Git.pm: assorted build related fixes.
Git.pm: Try to support ActiveState output pipe
Git.pm: Swap hash_object() parameters
Git.pm: Fix Git->repository("/somewhere/totally/elsewhere")
Git.pm: Support for perl/ being built by a different compiler
Git.pm: Remove PerlIO usage from Git.xs
Git.pm: Avoid ppport.h
Git.pm: Don't #define around die
Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC munging
Git.pm: Add config() method
Convert git-send-email to use Git.pm
Git.pm: Introduce ident() and ident_person() methods
Stephan Feder:
Teach --text option to diff
Teach diff -a as shorthand for --text
Add -a and --text to common diff options help
diff-options: Explain --text and -a
Timo Hirvonen:
--name-only, --name-status, --check and -s are mutually exclusive
* The 'pu' branch, in addition, has these.
A Large Angry SCM:
Additional merge-base tests (revised)
Jakub Narebski:
autoconf: Use autoconf to write installation directories to config.mak.autogen
Junio C Hamano:
merge-base: update the clean-up postprocessing
upload-pack: use object pointer not copy of sha1 to keep track of has/needs.
upload-pack: lift MAX_NEEDS and MAX_HAS limitation
upload-pack: minor clean-up in multi-ack logic
upload-pack: stop the other side when they have more roots than we do.
Work around sed and make interactions on the backslash at the end of line.
Linus Torvalds:
builtin "git prune"
Matthias Lederhofer:
GIT_TRACE: show which built-in/external commands are executed
Peter Baumann:
git-cvsexportcommit can't handle merge commits correctly
Petr Baudis:
Make it possible to set up libgit directly (instead of from the environment)
Git.pm: Introduce fast get_object() method
Convert git-annotate to use Git.pm
Timo Hirvonen:
Remove awkward compatibility warts
GIT_TRACE: fix a mixed declarations and code warning
^ permalink raw reply
* [PATCH] Fix several places where diff.renames in config can be problematic
From: Eric Wong @ 2006-07-08 1:58 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Martin Langhoff
In-Reply-To: <7v64i9zk0j.fsf@assigned-by-dhcp.cox.net>
git-cvsexportcommit.perl:
git-cvsserver.perl:
CVS can't handle renames, so we best not show them to
users.
templates/hooks--update:
replace diffstat calls with git diff --stat
There may be other places where users having diff.renames can be
problematic, too. diff.renames is opt-in, but maybe some users
have enabled it in their configs previously because it's been
in examples for a long time...
Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
Junio C Hamano <junkio@cox.net> wrote:
> Junio C Hamano <junkio@cox.net> writes:
>
> > I am more worried about somebody who opts-in finds breakage of
> > commands that happen to internally use low-level diff machinery
> > and expect the diff machinery does not automagically do funny
> > rename detection without being told.
> > ...
> > That is why I said I do not want this at _that_ low level. I do
> > not have objections to have the configuration at a layer closer
> > to the UI, e.g. things in builtin-log.c and builtin-diff.c.
>
> Upon closer look I think the revision pruning code is OK. So
> let's cook this as is in "next" and see what happens.
Cool. I've found these that could be potential issues. There could be
more, and possibly many in 3rd-party scripts outside our control, too.
git-cvsexportcommit.perl | 8 +++++---
git-cvsserver.perl | 2 +-
templates/hooks--update | 4 ++--
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index d1051d0..09ff2cc 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -91,7 +91,8 @@ close MSG;
$? && die "Error extracting the commit message";
my (@afiles, @dfiles, @mfiles, @dirs);
-my @files = safe_pipe_capture('git-diff-tree', '-r', $parent, $commit);
+my @files = safe_pipe_capture('git-diff-tree','--no-renames','-r',
+ $parent, $commit);
#print @files;
$? && die "Error in git-diff-tree";
foreach my $f (@files) {
@@ -175,7 +176,8 @@ foreach my $d (@dirs) {
print "'Patching' binary files\n";
-my @bfiles = grep(m/^Binary/, safe_pipe_capture('git-diff-tree', '-p', $parent, $commit));
+my @bfiles = grep(m/^Binary/, safe_pipe_capture('git-diff-tree','--no-renames',
+ '-p', $parent, $commit));
@bfiles = map { chomp } @bfiles;
foreach my $f (@bfiles) {
# check that the file in cvs matches the "old" file
@@ -206,7 +208,7 @@ ## apply non-binary changes
my $fuzz = $opt_p ? 0 : 2;
print "Patching non-binary files\n";
-print `(git-diff-tree -p $parent -p $commit | patch -p1 -F $fuzz ) 2>&1`;
+print `(git-diff-tree --no-renames -p $parent -p $commit | patch -p1 -F $fuzz ) 2>&1`;
my $dirtypatch = 0;
if (($? >> 8) == 2) {
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 5ccca4f..ae878ea 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -2295,7 +2295,7 @@ sub update
if ( defined ( $lastpicked ) )
{
- my $filepipe = open(FILELIST, '-|', 'git-diff-tree', '-r', $lastpicked, $commit->{hash}) or die("Cannot call git-diff-tree : $!");
+ my $filepipe = open(FILELIST, '-|', 'git-diff-tree', '--no-merges', '-r', $lastpicked, $commit->{hash}) or die("Cannot call git-diff-tree : $!");
while ( <FILELIST> )
{
unless ( /^:\d{6}\s+\d{3}(\d)\d{2}\s+[a-zA-Z0-9]{40}\s+([a-zA-Z0-9]{40})\s+(\w)\s+(.*)$/o )
diff --git a/templates/hooks--update b/templates/hooks--update
index d7a8f0a..76d5ac2 100644
--- a/templates/hooks--update
+++ b/templates/hooks--update
@@ -60,7 +60,7 @@ then
echo "Changes since $prev:"
git rev-list --pretty $prev..$3 | $short
echo ---
- git diff $prev..$3 | diffstat -p1
+ git diff --stat $prev..$3
echo ---
fi
;;
@@ -75,7 +75,7 @@ else
base=$(git-merge-base "$2" "$3")
case "$base" in
"$2")
- git diff "$3" "^$base" | diffstat -p1
+ git diff --stat "$3" "^$base"
echo
echo "New commits:"
;;
--
1.4.1.gc57e
^ permalink raw reply related
* Re: [PATCH] Fix compilation
From: Johannes Schindelin @ 2006-07-08 2:04 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vbqs1w5d0.fsf@assigned-by-dhcp.cox.net>
Hi,
On Fri, 7 Jul 2006, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > Note also, that this patch relies on the perl scripts not
> > caring if an additional command is shifted into the 2nd line.
>
> How about doing something like this instead, then?
I will try as soon as possible. ATM my iBook is in my car, which I had to
leave at a friend's place, because said friend sensibly refused to let me
drive.
Ciao,
Dscho
^ permalink raw reply
* Re: [PATCH] Use configurable zlib compression level everywhere.
From: Johannes Schindelin @ 2006-07-08 2:10 UTC (permalink / raw)
To: David Lang; +Cc: Junio C Hamano, Joachim B Haga, git
In-Reply-To: <Pine.LNX.4.63.0607071451430.1836@qynat.qvtvafvgr.pbz>
Hi,
On Fri, 7 Jul 2006, David Lang wrote:
> On Mon, 3 Jul 2006, Junio C Hamano wrote:
>
> > * sha1write_compressed() in csum-file.c is for producing packs
> > and most of the things we compress there are deltas and less
> > compressible, so even when core.compression is set to high we
> > might be better off using faster compression.
>
> why would deltas have poor compression? I'd expect them to have about the same
> as the files they are deltas of (or slightly better due to the fact that the
> deta metainfo is highly repetitive)
Deltas should have poor compression by definition, because compression
tries to encode those parts of the file more efficiently, which do not
bear much information (think entropy).
If you have deltas which really make sense, they are almost _pure_
information, i.e. they do not contain much redundancy, as compared to real
files. So, the compression (which does not know anything about the
characteristics of deltas in particular) cannot take much redundancy out
of the delta. Therefore, the entropy is very high, and the compression
rate is low.
Hope this makes sense to you,
Dscho
^ permalink raw reply
* Re: What's in git.git
From: Johannes Schindelin @ 2006-07-08 2:28 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vlkr5szi2.fsf@assigned-by-dhcp.cox.net>
Hi,
On Fri, 7 Jul 2006, Junio C Hamano wrote:
> - Early parts of Perly Git by Petr Baudis with help from others
> are merged to "next". Please report breakages before other
> Perl scripts are converted to use this.
I saw many problems on my machines with this, just as I expected. Please
play it _really_ safe. I hated to be forced to rewrite git-fmt-merge-msg
in C, but I just could not use 'next' without that. I would hate it even
more to rewrite git-mv in C just to make the tests happy (they are not on
my iBook right now).
> - GIT_TRACE by Matthias Lederhofer. What it lets you do is
> interesting (although I personally do not foresee myself
> using it), and I am in favor of its inclusion. The issue
> that the mechanism does not let you trace some commands
> (scripts) raised on the list has stalled this topic branch.
> I'd either want people to agree that it is not a problem, or
> if they feel it is a problem, have a fix for that, before
> merging this to "next".
You probably allude to my comments, which were meant more as a hint to go
towards C, instead of scripts. There is a lot to be said about C, but the
fact is: if you have most of the core of git in C (if not all of it), you
have less problems (especially when integrating over _all_ platforms and
setups).
As it is, I am all for inclusion of GIT_TRACE support. If need be,
everybody can add GIT_TRACE support to the script she is debugging. And if
she's nice, she can send a patch to the list, too.
> - Auto configuration by Pasky and Jakub. This deserves a fresh
> paragraph.
I can see why some may want autoconf (or a clone of MPlayer's configure)
in git. But the fact is: on many platforms, the Makefile works out of the
box. Especially on cygwin, where _any_ shell script -- and autoconf
generated scripts in particular -- are slower than a dog's poo, it is
_soooo_ much better to be able to just say "make".
Please, please, _please_ keep autoconfiguration _strictly_ opt-in.
> Linus Torvalds:
> builtin "git prune"
FWIW, I read the code, too, and I agree it is ready for 'next'. After my
first read, I was curious why the parameter "object_array *p" was needed
for all the process_* functions. It turned out that add_object() needs
this. Just in case anybody else wonders.
Ciao,
Dscho
^ permalink raw reply
* Re: Does Git run on Windows ?
From: Johannes Schindelin @ 2006-07-08 2:48 UTC (permalink / raw)
To: Jakub Narebski; +Cc: git
In-Reply-To: <e8mb8r$t1u$2@sea.gmane.org>
Hi,
On Fri, 7 Jul 2006, Jakub Narebski wrote:
> Johannes Schindelin wrote:
>
> > On Thu, 6 Jul 2006, Aaron Gray wrote:
> >
> >> Its got lots of C code, and Bash scripts, with a couple of Perl scripts.
> >
> > And you completely forgot Python.
>
> If I remember correctly the only Python dependency was recursive merge
> strategy, currently being reworked in C.
I remember, too. Because Alex and me are working very hard to provide
something which is presentable to the list. We will release a WIP patch of
it, probably tomorrow.
Ciao,
Dscho
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox