Git development
 help / color / mirror / Atom feed
* Re: Pulling one commit at a time.
From: Matthieu Moy @ 2009-08-24  8:28 UTC (permalink / raw)
  To: Sanjiv Gupta; +Cc: Kai Blin, Nanako Shiraishi, git
In-Reply-To: <4A92476A.4060205@microchip.com>

Sanjiv Gupta <sanjiv.gupta@microchip.com> writes:

> What I would like is to "test *every* commit" available in the
> public master.

Then, you don't want to _merge_ each of them, you want to _fetch_ and
test each of them (Erik Faye-Lund's reply gives a solution for that).

Fetching is about getting existing commits from another repository,
while merging is about creating new commits.

-- 
Matthieu

^ permalink raw reply

* Re: Pulling one commit at a time.
From: skillzero @ 2009-08-24  8:33 UTC (permalink / raw)
  To: Sanjiv Gupta; +Cc: Kai Blin, Nanako Shiraishi, git
In-Reply-To: <4A92476A.4060205@microchip.com>

On Mon, Aug 24, 2009 at 12:55 AM, Sanjiv
Gupta<sanjiv.gupta@microchip.com> wrote:

> What I would like is to "test *every* commit" available in the public
> master. There would be no local changes or commits that aren't pushed in the
> private copy.
> So I just want to clone one copy from the public master and then just keep
> pulling commits from the public master one by one and run regressions on
> each one.
>
> It's a damn simple thing in SVN world.
> $ svn info will give you the current version you are at, assume it is
> "cur_rev"
> $ svn update -r `expr $cur_rev + 1`
> $ build
> $ test

I'm not sure if this is the best way, but you can use git fetch to get
the latest stuff from the server without merging it then you can merge
from origin/master (i.e. the server) into your local master, one
commit at a time, and verify at each step:

$ git merge `git log --format=%h master..origin/master | sed '$!d'`
$ build
$ test

^ permalink raw reply

* Re: Pulling one commit at a time.
From: Matthieu Moy @ 2009-08-24  8:41 UTC (permalink / raw)
  To: skillzero; +Cc: Sanjiv Gupta, Kai Blin, Nanako Shiraishi, git
In-Reply-To: <2729632a0908240133t12eaafd5oe8d50af6d6eec566@mail.gmail.com>

skillzero@gmail.com writes:

> On Mon, Aug 24, 2009 at 12:55 AM, Sanjiv
> Gupta<sanjiv.gupta@microchip.com> wrote:
>
>> What I would like is to "test *every* commit" available in the public
>> master. There would be no local changes or commits that aren't pushed in the
>> private copy.
>> So I just want to clone one copy from the public master and then just keep
>> pulling commits from the public master one by one and run regressions on
>> each one.
>>
>> It's a damn simple thing in SVN world.
>> $ svn info will give you the current version you are at, assume it is
>> "cur_rev"
>> $ svn update -r `expr $cur_rev + 1`
>> $ build
>> $ test
>
> I'm not sure if this is the best way, but you can use git fetch to get
> the latest stuff from the server without merging it then you can merge
> from origin/master (i.e. the server) into your local master, one
> commit at a time, and verify at each step:

See my other reply, but I really don't think you want to _merge_ one
commit at a time. This would not mean "test each commit" but "test the
interaction between any two commits", which few people would care
about.

The example above in SVN doesn't merge each commit, it just walks
history (assuming the history is linear, the example wouldn't be as
simple if it had to walk /branches/* too). To continue the analogy,
merging commits one by one in Git would be more or less the equivalent
in SVN of:

$ svn status
# Hmm, OK, I have stuff to commit.
$ test
# Yes, it works. But do my changes work too on top of the previous
# commits?
$ while ...; do
    svn update $(($cur_rev - 1))
    build
    test
  done
# If so, then
$ svn update
$ svn commit

That is: test the interaction between your new change with any other
changes in the repository. 'never seen anyone interested by such
thing, but why not ;-).

-- 
Matthieu

^ permalink raw reply

* Re: [PATCH v2 05/14] Change regerror() definition from K&R style to  ANSI C (C89)
From: Erik Faye-Lund @ 2009-08-24  9:42 UTC (permalink / raw)
  To: Marius Storm-Olsen; +Cc: lznuaa, msysgit, git
In-Reply-To: <0123e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com>

On Fri, Aug 21, 2009 at 10:10 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:
>  size_t
> -regerror (errcode, preg, errbuf, errbuf_size)
> -    int errcode;
> -    const regex_t *preg;
> -    char *errbuf;
> -    size_t errbuf_size;
> +regerror(int errcode, const regex_t *preg,
> +        char *errbuf, size_t errbuf_size)
>  {

Since the real reason isn't the K&R style defintion, but that
"errcode" has been typedef'ed, perhaps it's better to either do
something like this:

#ifdef _MSC_VER
#define errcode dummy_def
#include <crtdefs.h>
#undef errcode
#endif

...before the first crt-inclusion, or simply to rename "errcode" to
something like "error"? The latter can be done with the preprocessor
after the first crt-inclusion.

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply

* Re: [PATCH] Makefile: Add NEEDS_CRYPTO_WITH_SSL
From: Alex Riesen @ 2009-08-24  9:45 UTC (permalink / raw)
  To: Brian Gernhardt; +Cc: Git List, Junio C Hamano
In-Reply-To: <1250354813-81349-1-git-send-email-brian@gernhardtsoftware.com>

On Sat, Aug 15, 2009 at 18:46, Brian
Gernhardt<brian@gernhardtsoftware.com> wrote:
>
>  After adding BLK_SHA1 to my config.mak, git-imap-send started giving me link
>  errors:
>
>  Undefined symbols:
>    "_ERR_get_error", referenced from:
>        _ssl_socket_perror in imap-send.o
>    "_ERR_error_string", referenced from:
>        _ssl_socket_perror in imap-send.o
>
>  Some investigation led me to the fact that BLK_SHA1 removes LIB_4_CRYPTO from
>  EXTLIBS.  That let me find the missing functions in libcrypto.  At first I
>  considered making NEEDS_SSL_WITH_CRYPTO add -lcrypto to the SSL build flags
>  but decided to go this route in case there are platforms that need it one way
>  around and not the other.

As imap-send is the only one which uses the symbols, why not just add
LIB_4_CRYPTO
to its linking command? Like in the broken GMail-patch below:

diff --git a/Makefile b/Makefile
index 02ff867..33971f3 100644
--- a/Makefile
+++ b/Makefile
@@ -1503,7 +1503,7 @@ git-%$X: %.o $(GITLIBS)

 git-imap-send$X: imap-send.o $(GITLIBS)
 	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
-		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)
+		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)

 http.o http-walker.o http-push.o: http.h

^ permalink raw reply related

* Re: Pulling one commit at a time.
From: David Aguilar @ 2009-08-24 10:22 UTC (permalink / raw)
  To: Sanjiv Gupta; +Cc: Nanako Shiraishi, git
In-Reply-To: <4A92318F.6050105@microchip.com>

On Mon, Aug 24, 2009 at 11:52:07AM +0530, Sanjiv Gupta wrote:
> Excellent description. Thanks for that. I want to merge commits one by  
> one because I want to run a regression suite on each commit and  
> therefore know if any one is causing failures.

'git bisect' is your friend.

If your developers are disciplined and test each change as they
commit it then you're going to have fewer problems.

If they aren't, then make 'em send you patches.  Then you can
at least 'git am' each one and run the tests at each step,
including the critical steps where you merge various topics
together.

I'm not sure what exactly you're trying to accomplish, though.
I'm just making guesses without you telling us more.

Are you trying to do post-mortem change-that-introduced-bug
finding (git bisect), commit-time bug prevention
(patch-based workflows, using git commit hooks to disallow
commits that fail the tests, etc), or is it something
completely different?


HTH,

-- 
		David

^ permalink raw reply

* Re: Pulling one commit at a time.
From: Sanjiv Gupta @ 2009-08-24 10:49 UTC (permalink / raw)
  To: David Aguilar; +Cc: Nanako Shiraishi, git
In-Reply-To: <20090824102242.GA70861@gmail.com>

David Aguilar wrote:
> On Mon, Aug 24, 2009 at 11:52:07AM +0530, Sanjiv Gupta wrote:
>   
>> Excellent description. Thanks for that. I want to merge commits one by  
>> one because I want to run a regression suite on each commit and  
>> therefore know if any one is causing failures.
>>     
>
> 'git bisect' is your friend.
>
> If your developers are disciplined and test each change as they
> commit it then you're going to have fewer problems.
>
> If they aren't, then make 'em send you patches.  Then you can
> at least 'git am' each one and run the tests at each step,
> including the critical steps where you merge various topics
> together.
>
> I'm not sure what exactly you're trying to accomplish, though.
> I'm just making guesses without you telling us more.
>
> Are you trying to do post-mortem change-that-introduced-bug
> finding (git bisect), commit-time bug prevention
> (patch-based workflows, using git commit hooks to disallow
> commits that fail the tests, etc), or is it something
> completely different?
>
>
> HTH,
>
>   
Thanks everyone for the overwhelming response.
I was looking for post-mortem change-that-introduced-bug.
It's also called "buildbot" in other terms, which sends you an email 
with the details of the "culprit" commit as soon as it introduces a bug.

- Sanjiv


-


^ permalink raw reply

* Re: Pulling one commit at a time.
From: Matthieu Moy @ 2009-08-24 11:07 UTC (permalink / raw)
  To: Sanjiv Gupta; +Cc: David Aguilar, Nanako Shiraishi, git
In-Reply-To: <4A92703E.90007@microchip.com>

Sanjiv Gupta <sanjiv.gupta@microchip.com> writes:

> I was looking for post-mortem change-that-introduced-bug.

If so, then you don't need to test every commit. As David mentionned,
"git bisect" is your friend, and will do a binary search, finding the
culprit commit much more efficiently (run the testsuite log(n) times
instead of n times).

OTOH, if you want some kind of quality insurance (i.e. check that
every commit is OK, including the case where a commit introduces a
bug, and the next one fixes it), bisect is rather helpless.

-- 
Matthieu

^ permalink raw reply

* Re: [PATCH] remove ARM and Mozilla SHA1 implementations
From: Johannes Schindelin @ 2009-08-24 11:33 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: Junio C Hamano, git
In-Reply-To: <alpine.LFD.2.00.0908240011010.6044@xanadu.home>

Hi,

On Mon, 24 Aug 2009, Nicolas Pitre wrote:

> On Tue, 18 Aug 2009, Johannes Schindelin wrote:
> 
> > On Mon, 17 Aug 2009, Nicolas Pitre wrote:
> > 
> > > They are both slower than the new BLK_SHA1 implementation, so it is 
> > > pointless to keep them around.
> > > 
> > > Signed-off-by: Nicolas Pitre <nico@cam.org> ---
> > > 
> > > Someone else would need to make the call for the PPC version.
> > 
> > If I don't forget, I can test tomorrow on 2 different 32-bit PPCs and 
> > possibly one 64-bit PPC.
> 
> Did you forget?  ;-)

Yes.

Ciao,
Dscho

^ permalink raw reply

* Re: [PATCH] remove ARM and Mozilla SHA1 implementations
From: Ulrik Sverdrup @ 2009-08-24 11:42 UTC (permalink / raw)
  To: nico; +Cc: git

block-sha1/sha1.{ch} simply say this:

/*
 * Based on the Mozilla SHA1 (see mozilla-sha1/sha1.c),
 * optimized to do word accesses rather than byte accesses,
 * and to avoid unnecessary copies into the context array.
 */

This means that if mozilla-sha1 is removed, we need to copy the
license information back to block-sha1.

Ulrik

^ permalink raw reply

* [PATCH] block-sha1: Use mozilla-sha1 copyright and license information
From: Ulrik Sverdrup @ 2009-08-24 12:07 UTC (permalink / raw)
  To: git

block-sha1 needs an independent copyright and license header, in the
case that the original mozilla SHA-1 implementation is removed from
the tree.

The Contributor(s) list in the header is not in the git style, but
it is copied as well, and augmented with git contributors to
block-sha1.

Signed-off-by: Ulrik Sverdrup <ulrik.sverdrup@gmail.com>
---

block-sha1/sha1.{ch} simply say this:

/*
 * Based on the Mozilla SHA1 (see mozilla-sha1/sha1.c),
 * optimized to do word accesses rather than byte accesses,
 * and to avoid unnecessary copies into the context array.
 */

This means that if mozilla-sha1 is removed, we need to copy the
license information back to block-sha1.


 block-sha1/sha1.c |   38 +++++++++++++++++++++++++++++++++++++-
 block-sha1/sha1.h |   37 ++++++++++++++++++++++++++++++++++---
 2 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/block-sha1/sha1.c b/block-sha1/sha1.c
index 464cb25..34c7415 100644
--- a/block-sha1/sha1.c
+++ b/block-sha1/sha1.c
@@ -1,5 +1,41 @@
 /*
- * Based on the Mozilla SHA1 (see mozilla-sha1/sha1.c),
+ * The contents of this file are subject to the Mozilla Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is SHA 180-1 Reference Implementation (Compact version)
+ *
+ * The Initial Developer of the Original Code is Paul Kocher of
+ * Cryptography Research.  Portions created by Paul Kocher are
+ * Copyright (C) 1995-9 by Cryptography Research, Inc.  All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ *     Paul Kocher
+ *     Linus Torvalds
+ *     Nicolas Pitre
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License Version 2 or later (the
+ * "GPL"), in which case the provisions of the GPL are applicable
+ * instead of those above.  If you wish to allow use of your
+ * version of this file only under the terms of the GPL and not to
+ * allow others to use your version of this file under the MPL,
+ * indicate your decision by deleting the provisions above and
+ * replace them with the notice and other provisions required by
+ * the GPL.  If you do not delete the provisions above, a recipient
+ * may use your version of this file under either the MPL or the
+ * GPL.
+ */
+/*
+ * Based on the Mozilla SHA1, this implementation is
  * optimized to do word accesses rather than byte accesses,
  * and to avoid unnecessary copies into the context array.
  */
diff --git a/block-sha1/sha1.h b/block-sha1/sha1.h
index c1ae74d..dc72ccf 100644
--- a/block-sha1/sha1.h
+++ b/block-sha1/sha1.h
@@ -1,7 +1,38 @@
 /*
- * Based on the Mozilla SHA1 (see mozilla-sha1/sha1.h),
- * optimized to do word accesses rather than byte accesses,
- * and to avoid unnecessary copies into the context array.
+ * The contents of this file are subject to the Mozilla Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is SHA 180-1 Header File
+ *
+ * The Initial Developer of the Original Code is Paul Kocher of
+ * Cryptography Research.  Portions created by Paul Kocher are
+ * Copyright (C) 1995-9 by Cryptography Research, Inc.  All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ *     Paul Kocher
+ *     Linus Torvalds
+ *     Nicolas Pitre
+ *
+ * Alternatively, the contents of this file may be used under the
+ * terms of the GNU General Public License Version 2 or later (the
+ * "GPL"), in which case the provisions of the GPL are applicable
+ * instead of those above.  If you wish to allow use of your
+ * version of this file only under the terms of the GPL and not to
+ * allow others to use your version of this file under the MPL,
+ * indicate your decision by deleting the provisions above and
+ * replace them with the notice and other provisions required by
+ * the GPL.  If you do not delete the provisions above, a recipient
+ * may use your version of this file under either the MPL or the
+ * GPL.
  */
 
 typedef struct {
-- 
1.6.4

^ permalink raw reply related

* gitosis-lite
From: Sitaram Chamarty @ 2009-08-24 12:28 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Tommi Virtanen

[Tommi: I chose this name to reflect that it really owes its existence to
gitosis for the basic ideas etc.  However, if you have any objections I
would be quite happy to find another name.  Just let me know...]



Hello all,

I created a new project called gitosis-lite, which combines
the essential pieces of gitosis with the per-branch
permissions stuff in the example in the howto directory of
git.git.

The config file is different, (there's an annotated example
you can look at).

The "why" and the "what" are all at
http://github.com/sitaramc/gitosis-lite

-- 
Sitaram

^ permalink raw reply

* Re: [RFC/PATCH 3/3] gitweb: add test cases for snapshot settings
From: Jakub Narebski @ 2009-08-24 12:36 UTC (permalink / raw)
  To: Mark Rada; +Cc: Junio C Hamano, git
In-Reply-To: <4A91BA53.1040800@mailservices.uwaterloo.ca>

On Sun, 23 Aug 2009, Mark Rada wrote:

> This commit adds a new test file (t9501) that is used for gitweb test
> cases that parse gitweb output to verify the HTTP status code or
> message.
> 
> Signed-off-by: Mark Rada <marada@uwaterloo.ca>
> ---

I would rather put emphasis on the fact that new test is created, which
is meant to check that gitweb produces expected HTTP status codes.

-- >8 --
Subject: gitweb: Add t9501 test for gitweb's HTTP status codes

This commit adds a new test file (t9501), that is used for gitweb test
cases that parse gitweb output to verify the HTTP status code or
message.

Currently the only tests are about 'snapshot' feature settings
-- [end cut] --

Or something like that.
-- 
Jakub Narebski
Poland

^ permalink raw reply

* Re: gitosis-lite
From: Jakub Narebski @ 2009-08-24 13:13 UTC (permalink / raw)
  To: Sitaram Chamarty; +Cc: Git Mailing List, Tommi Virtanen
In-Reply-To: <2e24e5b90908240528v56fdf30cq4c046fca321a3b17@mail.gmail.com>

Sitaram Chamarty <sitaramc@gmail.com> writes:

> Hello all,
> 
> I created a new project called gitosis-lite, which combines
> the essential pieces of gitosis with the per-branch
> permissions stuff in the example in the howto directory of
> git.git.
> 
> The config file is different, (there's an annotated example
> you can look at).
> 
> The "why" and the "what" are all at
> http://github.com/sitaramc/gitosis-lite

Could you add information about this tool (perhaps after confirmation
/ deciding on project name[1]) to Git Wiki page
  http://git.or.cz/gitwiki/InterfacesFrontendsAndTools
somewhere below Gitosis?  Please do not forget to include that it is
written in Perl; see other entries for example.


You wrote in project's README.markdown that you were inspired by
Gitosis (which requires Python and python-setuptools) and
Documentation/howto/update-hook-example.txt (which uses bash).
Why not contrib/hooks/update-paranoid (which is written in Perl)?

Using Perl code for configuration is simple and fast, but not very
secure.  Why not use git config format (via "git config -l -z" like in
gitweb), or YAML or JSON (or Storable)?  Well, YAML might be overkill.

BTW. if you blog about gitosis-lite (http://sitaramc.blogspot.com/)
it could be picked up by Perl Iron Man Blogging challenge, and you
could get wider review.

[1]: gitosis-lite doesn't look like CPAN-y name.  Git::Admin perlhaps?
-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply

* Re: [PATCH] Re: Teach mailinfo to ignore everything before -- >8 -- mark
From: Don Zickus @ 2009-08-24 14:02 UTC (permalink / raw)
  To: Nicolas Sebrecht
  Cc: Junio C Hamano, Thell Fowler, Nanako Shiraishi, git,
	Johannes.Schindelin
In-Reply-To: <20090824073147.GG3526@vidovic>

On Mon, Aug 24, 2009 at 09:31:47AM +0200, Nicolas Sebrecht wrote:
> ( cc'ing Don Zickus )
> 
> The 23/08/09, Junio C Hamano wrote:
> > Nicolas Sebrecht <nicolas.s.dev@gmx.fr> writes:
> > 
> > >> Does anybody remember what these s_hdr (vs p_hdr) buffers stand for, by
> > >> the way?

>From what I remember, I used p_hdr to designate primary headers, ie the
original mail headers.  s_hdr was supposed to represent the secondary
headers, ie the embedded mail headers in the body of the email that could
override the original primary mail headers.

I hope that clears things up.  Let me know if you have more questions and
I will try my best to remember what I did. :-)

Cheers,
Don

> > >
> > > Has been added by 87ab799234639c .
> > 
> > That much I know ;-), thanks anyway.
> > 
> > The commit does not _explain_ what they are for, what they mean, and what
> > these mysteriously named variables do.
> 
> -- 
> Nicolas Sebrecht

^ permalink raw reply

* Re: [PATCH] block-sha1: Use mozilla-sha1 copyright and license information
From: Nicolas Pitre @ 2009-08-24 13:45 UTC (permalink / raw)
  To: Ulrik Sverdrup; +Cc: git
In-Reply-To: <20090824120756.GA17146@ulrik-ibook>

On Mon, 24 Aug 2009, Ulrik Sverdrup wrote:

> block-sha1 needs an independent copyright and license header, in the
> case that the original mozilla SHA-1 implementation is removed from
> the tree.

The Mozilla SHA1 is already removed from the tree in "next", and 
block-sha1/sha1.c header modified accordingly.

As there is nothing remaining from the Mozilla SHA1 code, I don't think 
copying that Mozilla License block verbatim is appropriate.  As Linus 
has put it himself, the Mozilla SHA1 code was more inspirational than 
anything else.

And even if some license claim could be made, the MPL section was 
deleted anyway (as explicitly allowed), meaning that only the GPL (by 
vertu of being included in a GPL project) would then apply.

A question was recently sent to all contributors (see the mail 
archive) to determine if they 
would agree 
to a relicensing of that code to make wider license compatibility.  
George Spelvin even rewrote that code as well with the goal of 
putting his version in the public domain.  No definitive conclusion 
emerged so far though.

Therefore I don't think this patch is appropriate.


Nicolas

^ permalink raw reply

* Re: [PATCH] block-sha1: Use mozilla-sha1 copyright and license  information
From: Ulrik Sverdrup @ 2009-08-24 13:52 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: git
In-Reply-To: <alpine.LFD.2.00.0908240923360.6044@xanadu.home>

2009/8/24 Nicolas Pitre <nico@cam.org>:
>
> The Mozilla SHA1 is already removed from the tree in "next", and
> block-sha1/sha1.c header modified accordingly.
>
> As there is nothing remaining from the Mozilla SHA1 code, I don't think
> copying that Mozilla License block verbatim is appropriate.  As Linus
> has put it himself, the Mozilla SHA1 code was more inspirational than
> anything else.
>
> And even if some license claim could be made, the MPL section was
> deleted anyway (as explicitly allowed), meaning that only the GPL (by
> vertu of being included in a GPL project) would then apply.
>
> A question was recently sent to all contributors (see the mail
> archive) to determine if they
> would agree
> to a relicensing of that code to make wider license compatibility.
> George Spelvin even rewrote that code as well with the goal of
> putting his version in the public domain.  No definitive conclusion
> emerged so far though.
>
> Therefore I don't think this patch is appropriate.

Agreed. I just didn't look into next.

Ulrik

^ permalink raw reply

* Re: [PATCH] fix simple deepening of a repo
From: Nicolas Pitre @ 2009-08-24 13:55 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Daniel Barkalow, Johannes Schindelin, git
In-Reply-To: <7vocq5q0j7.fsf@alter.siamese.dyndns.org>

On Sun, 23 Aug 2009, Junio C Hamano wrote:

> Nicolas Pitre <nico@cam.org> writes:
> 
> > If all refs sent by the remote repo during a fetch are reachable 
> > locally, then no further conversation is performed with the remote. This 
> > check is skipped when the --depth argument is provided to allow the 
> > deepening of a shallow clone which corresponding remote repo has no 
> > changed.
> >
> > However, some additional filtering was added in commit c29727d5 to 
> > remove those refs which are equal on both sides.  If the remote repo has 
> > not changed, then the list of refs to give the remote process becomes 
> > empty and simply attempting to deepen a shallow repo always fails.
> >
> > Let's stop being smart in that case and simply send the whole list over
> > when that condition is met.  The remote will do the right thing anyways.
> >
> > Test cases for this issue are also provided.
> >
> > Signed-off-by: Nicolas Pitre <nico@cam.org>
> > ---
> 
> Thanks.  The fix looks correct (as usual with patches from you).
> 
> But it makes me wonder if this logic to filter refs is buying us anything.
> 
> >  	for (rm = refs; rm; rm = rm->next) {
> > +		nr_refs++;
> >  		if (rm->peer_ref &&
> >  		    !hashcmp(rm->peer_ref->old_sha1, rm->old_sha1))
> >  			continue;
> 		ALLOC_GROW(heads, nr_heads + 1, nr_alloc);
> 		heads[nr_heads++] = rm;
> 	}
> 
> What is the point of not asking for the refs that we know are the same?

I could see the advantage if the number of refs is really huge.  Wasn't 
some converted repositories producing a lot of branches and/or tags 
significantly slowing down a fetch operation?  Granted that was long ago 
when that issue got "fixed" so the details are fuzzy to me.

> In other words, what breaks (not necessarily in the correctness sense, but
> also in the performance sense) if we get rid of this filtering altogether?

If you really want to get rid of that filtering, I'd still do it in a 
separate patch.  That way if any issue appears because of that then 
bissection will point directly to that removal alone.


Nicolas

^ permalink raw reply

* rebase hint unmerged file removed
From: bill lam @ 2009-08-24 14:05 UTC (permalink / raw)
  To: git

Sometimes during rebase -i, it stopped with an unmerged file but that
file did not have any sections of conflict marked.  ls-files showed it
had :1: and :2: but no :3:  I suspected that file was git-rm in that
commit.  Will it be possible for git status or rebase to give hint
that unmerged file was actually removed?

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3

^ permalink raw reply

* Re: [PATCH-v2/RFC 3/6] xutils: fix ignore-all-space on incomplete line
From: Thell Fowler @ 2009-08-24 14:13 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Thell Fowler, git, Johannes.Schindelin
In-Reply-To: <7viqgdoikz.fsf@alter.siamese.dyndns.org>

Junio C Hamano (gitster@pobox.com) wrote on Aug 24, 2009:

> Thell Fowler <git@tbfowler.name> writes:
> 
> > It passed every test I threw at it, although it seemed to be a tad bit 
> > slower than the previous revision on my sample data so I ran the following 
> > command several times for both the previous and current version:
> >
> 
> Do you mean by "previous version" the one that was broken, or the one I
> sent as a "how about" patch?
> 

A quick test shows the version merged to pu is the one that had the 
fastest times.  I'll be away from a connection most of today, but will 
test the different versions against the tests and some sample data and 
post back.

--
Thell

^ permalink raw reply

* Re: [PATCH] fix simple deepening of a repo
From: Johan Herland @ 2009-08-24 14:20 UTC (permalink / raw)
  To: git; +Cc: Nicolas Pitre, Junio C Hamano, Daniel Barkalow,
	Johannes Schindelin
In-Reply-To: <alpine.LFD.2.00.0908240946390.6044@xanadu.home>

On Monday 24 August 2009, Nicolas Pitre wrote:
> On Sun, 23 Aug 2009, Junio C Hamano wrote:
> > Nicolas Pitre <nico@cam.org> writes:
> > > If all refs sent by the remote repo during a fetch are reachable
> > > locally, then no further conversation is performed with the
> > > remote. This check is skipped when the --depth argument is
> > > provided to allow the deepening of a shallow clone which
> > > corresponding remote repo has no changed.
> > >
> > > However, some additional filtering was added in commit c29727d5
> > > to remove those refs which are equal on both sides.  If the
> > > remote repo has not changed, then the list of refs to give the
> > > remote process becomes empty and simply attempting to deepen a
> > > shallow repo always fails.
> > >
> > > Let's stop being smart in that case and simply send the whole
> > > list over when that condition is met.  The remote will do the
> > > right thing anyways.
> > >
> > > Test cases for this issue are also provided.
> > >
> > > Signed-off-by: Nicolas Pitre <nico@cam.org>
> > > ---
> >
> > Thanks.  The fix looks correct (as usual with patches from you).
> >
> > But it makes me wonder if this logic to filter refs is buying us
> > anything.
> >
> > >  	for (rm = refs; rm; rm = rm->next) {
> > > +		nr_refs++;
> > >  		if (rm->peer_ref &&
> > >  		    !hashcmp(rm->peer_ref->old_sha1, rm->old_sha1))
> > >  			continue;
> >
> > 		ALLOC_GROW(heads, nr_heads + 1, nr_alloc);
> > 		heads[nr_heads++] = rm;
> > 	}
> >
> > What is the point of not asking for the refs that we know are the
> > same?
>
> I could see the advantage if the number of refs is really huge. 
> Wasn't some converted repositories producing a lot of branches and/or
> tags significantly slowing down a fetch operation?  Granted that was
> long ago when that issue got "fixed" so the details are fuzzy to me.

I'm converting several CVS repos to Git with ~50 000 refs, so I'm happy 
with any change that can speed things up for repos with many refs.

Right now, my biggest gripe is that a 'git push --mirror' on such a repo 
can easily take ~10 min. even though the actual pack generation and 
transfer only takes a couple of seconds. It seems like it needs ~10 
minutes to generate the list of changed/added/deleted refs...
Unfortunately I haven't had time to look properly into it, yet...


...Johan

-- 
Johan Herland, <johan@herland.net>
www.herland.net

^ permalink raw reply

* Re: [PATCH] Makefile: Add NEEDS_CRYPTO_WITH_SSL
From: Brian Gernhardt @ 2009-08-24 14:22 UTC (permalink / raw)
  To: Alex Riesen; +Cc: Git List, Junio C Hamano
In-Reply-To: <81b0412b0908240245l33b04322l923084362197406a@mail.gmail.com>


On Aug 24, 2009, at 5:45 AM, Alex Riesen wrote:

> As imap-send is the only one which uses the symbols, why not just add
> LIB_4_CRYPTO
> to its linking command? Like in the broken GMail-patch below:

I didn't do this because I didn't know if all platforms needed  
libcrypto to compile imap-send.  If it is, then this is obviously the  
simpler solution.

> diff --git a/Makefile b/Makefile
> index 02ff867..33971f3 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1503,7 +1503,7 @@ git-%$X: %.o $(GITLIBS)
>
> git-imap-send$X: imap-send.o $(GITLIBS)
> 	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o, 
> $^) \
> -		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)
> +		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)
>
> http.o http-walker.o http-push.o: http.h

^ permalink raw reply

* Re: Announcement: cvs2svn 2.3.0 released
From: Johannes Schindelin @ 2009-08-24 14:33 UTC (permalink / raw)
  To: Michael Haggerty; +Cc: Git Mailing List
In-Reply-To: <4A9074C7.4080002@alum.mit.edu>

Hi,

On Sun, 23 Aug 2009, Michael Haggerty wrote:

> I am happy to announce release 2.3.0 of cvs2svn/cvs2git/cvs2bzr.
> 
> cvs2svn is a tool for migrating a CVS repository to Subversion, git,
> Bazaar, or Mercurial. The main design goals are robustness and 100% data
> preservation. cvs2svn can convert just about any CVS repository we've
> ever seen, including gcc, Mozilla, FreeBSD, KDE, and GNOME.
> 
> Release 2.3.0 primarily improves the support for converting to git and
> Bazaar (including explicit cvs2git and cvs2bzr scripts).  This release
> also adds a few other minor features and fixes a bug when converting to
> git with non-inline blobs.

Does it support incremental operation yet?  (I.e. do not bother to 
re-import what was imported already?)

Thanks,
Dscho

^ permalink raw reply

* Re: gitosis-lite
From: Sitaram Chamarty @ 2009-08-24 14:35 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: Git Mailing List, Tommi Virtanen
In-Reply-To: <m3ab1pmk1c.fsf@localhost.localdomain>

On Mon, Aug 24, 2009 at 6:43 PM, Jakub Narebski<jnareb@gmail.com> wrote:

> Could you add information about this tool (perhaps after confirmation
> / deciding on project name[1]) to Git Wiki page
>  http://git.or.cz/gitwiki/InterfacesFrontendsAndTools
> somewhere below Gitosis?  Please do not forget to include that it is
> written in Perl; see other entries for example.

Will do; though I'll probably wait until at least one person
other than me has used it :)

> You wrote in project's README.markdown that you were inspired by
> Gitosis (which requires Python and python-setuptools) and
> Documentation/howto/update-hook-example.txt (which uses bash).
> Why not contrib/hooks/update-paranoid (which is written in Perl)?

Hmmm several reasons.  To start with, it appears to me that
update-paranoid assumes each user has his own ACL file, and
I'm going the other way -- you'll notice I have exactly one
file as a single ACL source for many *projects*, leave alone
users.

Secondly, I want to stick to the gitosis philosophy -- it
has served very well, and I'm not sure how "in use"
update-paranoid is.

Thirdly, I'm not comfortable having a hook be so complex.
The whole thing is 10 lines shorter than all my code put
together :)

And finally, it's far too complex for me, leave alone some
of my users.  I count 6 pipe opens in there, and the ACLs
are read by git cat-file or something :) I'll be honest: I
came away feeling very stupid after trying to read and
understand that program.  It was... humbling :(

> Using Perl code for configuration is simple and fast, but not very
> secure.  Why not use git config format (via "git config -l -z" like in

Not secure in what sense?  Only the "git admin" (whoever
owns the account in which gitosis-lite is running) will be
able to generate it, and only scripts that run with his
authority (by way of hooks in repos he owns) can run it.

It cannot do what he did not intend to do, and what he wants
to do he can do anyway, whether it's JSON or perl.

Except for umasking the file, I don't see anything I missed.
Could you help me understand?

> gitweb), or YAML or JSON (or Storable)?  Well, YAML might be overkill.

One of the objectives is to work *as is* on any Unix system
that managed to install git (which implies Perl).  So, no
JSON or YAML.  Storable would be fine (I think it's also
part of core perl) so if I find a compelling reason I don't
mind switching to that.

All I really have is a nested hash to be saved and restored
-- nothing more complex, no objects, no blessed refs, etc.

> BTW. if you blog about gitosis-lite (http://sitaramc.blogspot.com/)
> it could be picked up by Perl Iron Man Blogging challenge, and you
> could get wider review.

Will do; thanks.  I did not know my blog got picked up by
anything; till date it has never come up on a google search
or a blog search anywhere, and it's more of a rant-box +
annotated bookmarking service for myself :)

> [1]: gitosis-lite doesn't look like CPAN-y name.  Git::Admin perlhaps?

Too presumptuous for someone like me -- makes it sound like
the "one true way to Admin git" :)

Thank you very much for your comments!

-- 
Sitaram

^ permalink raw reply

* Re: rebase hint unmerged file removed
From: Jeff King @ 2009-08-24 14:36 UTC (permalink / raw)
  To: git
In-Reply-To: <20090824140549.GA3973@debian.b2j>

On Mon, Aug 24, 2009 at 10:05:49PM +0800, bill lam wrote:

> Sometimes during rebase -i, it stopped with an unmerged file but that
> file did not have any sections of conflict marked.  ls-files showed it
> had :1: and :2: but no :3:  I suspected that file was git-rm in that
> commit.  Will it be possible for git status or rebase to give hint
> that unmerged file was actually removed?

The version of "git status" in next (and presumably what will be in
v1.6.5) shows unmerged paths with more information. In this case,
you would see something like:

  $ echo content >foo && git add foo && git commit -m 'base foo'
  $ echo changes >>foo && git add foo && git commit -m 'change foo'
  $ git checkout -b other HEAD^
  $ git rm foo && git commit -m 'remove foo'
  $ git rebase master
  $ git status
  # Unmerged paths:
  #   (use "git reset HEAD <file>..." to unstage)
  #   (use "git add <file>..." to mark resolution)
  #
  #       deleted by them:    foo
  #

-Peff

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox