git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [Fwd: Re: What's in git.git]
       [not found] <20061119171135.GA13054@spearce.org>
@ 2006-11-19 17:40 ` Jon Smirl
  2006-11-19 17:49   ` Petr Baudis
  0 siblings, 1 reply; 4+ messages in thread
From: Jon Smirl @ 2006-11-19 17:40 UTC (permalink / raw)
  To: Shawn Pearce, Git Mailing List

On 11/19/06, Shawn Pearce <spearce@spearce.org> wrote:
> Have you been watching the shallow clone threads?

Some friends of mine are doing a start up that is sort of like a Sonos
system but with some major differences. I've been helping them out so
I've been doing chip design and PCB layouts lately. The system also
needs some really complicated real-time, wireless mesh routing
software, I wish the OLPC 802.11s code was ready.

Brendan told me that he would not consider Mozilla moving to git until
a native Windows version is released so I just dropped the whole
thing. It is too much effort and they don't even really want it. They
are probably going to switch to SVN.  I told him that SVN would end up
being a disaster and he got mad at me. That's when I stopped working
on cvs2svn/git.

The shallow clone work is being done in the wrong order to get the
Mozilla people interested.
#1) There needs to be a tool that can accurately import the
repository. cvs2svn does not do this. The good programmers working on
git could probably whip this out in a week or two if they wanted to.
cvs2svn is very close but they refuse to solve the symbol dependency
problem.
#2) git needs native Windows support, this probably includes MSVC
integration. There are a lot of non-technical people working on
Mozilla like accessibility, doc, artwork, translations, they are all
on Windows. Brendan explicitly ruled out cygwIn.
#3) Once #1 and #2 are achieved then they will care about shallow clone.

The only way I can see Mozilla moving to git is if the git community
ports the repository for them and then demonstrates that all of the
needed tools and available and working.

> ---------- Forwarded message ----------
> From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> To: Junio C Hamano <junkio@cox.net>
> Date: Sun, 19 Nov 2006 16:17:17 +0100 (CET)
> Subject: Re: What's in git.git
> Hi,
>
> On Sat, 18 Nov 2006, Junio C Hamano wrote:
>
> > Junio C Hamano <junkio@cox.net> writes:
> >
> > >  - 'pu' has the shallow clone WIP and a half-finished rewrite of
> > >    git branch in C, both by Johannes.  Both needs a bit more
> > >    polishing and confidence building before going into 'next',
> > >    and given the recent discussion of enhancing branch
> > >    management for pulls/pushes, it might be easier to drop the
> > >    latter for now.
> >
> > OOPS; sorry but the latter half is entirely untrue.  What's
> > there is half-done git-shortlog.  Scratch everything about
> > branch management please.
>
> IMHO -shortlog needs support to read .mailmap, and maybe nods to throw out
> the built-in mailmap which is totally specific to the Linux kernel
> development.
>
> As for shallow clone support: I am a bit underwhelmed by the enthusiasm
> to test this thing by the people I thought would be most interested. It
> really could be the case that it is not needed at all.
>
> Just for the record, though: AFAICT the shallow stuff is lacking support
> for at least pushing from/into shallow repos and it should avoid making a
> commit shallow unnecessarily. And quite likely there are a few thinkos in
> it, so it would not hurt having more test cases (notably of things I did
> not think of), and some bad-ass testing with huge amounts of commits and
> files which were added/modified identically in different commits.
>
> Ciao,
> Dscho
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>


-- 
Jon Smirl

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Fwd: Re: What's in git.git]
  2006-11-19 17:40 ` [Fwd: Re: What's in git.git] Jon Smirl
@ 2006-11-19 17:49   ` Petr Baudis
  2006-11-19 19:06     ` Robin Rosenberg
  2006-11-19 19:11     ` Jon Smirl
  0 siblings, 2 replies; 4+ messages in thread
From: Petr Baudis @ 2006-11-19 17:49 UTC (permalink / raw)
  To: Jon Smirl; +Cc: Shawn Pearce, Git Mailing List

On Sun, Nov 19, 2006 at 06:40:06PM CET, Jon Smirl wrote:
> Brendan told me that he would not consider Mozilla moving to git until
> a native Windows version is released so I just dropped the whole
> thing. It is too much effort and they don't even really want it. They
> are probably going to switch to SVN.  I told him that SVN would end up
> being a disaster and he got mad at me. That's when I stopped working
> on cvs2svn/git.

I see. :-(

Could you please publish cvs2git in whatever state you have it so that
someone else possibly interested could pick it up and finish the missing
bits? It would be shame if the already done work would end up wasted.

> #2) git needs native Windows support, this probably includes MSVC
> integration. There are a lot of non-technical people working on
> Mozilla like accessibility, doc, artwork, translations, they are all
> on Windows. Brendan explicitly ruled out cygwIn.

This is sort of catch-22, we have probably no developers interested
enough in porting Git to native Windows and it's not clear we are going
to get any until Git runs on native Windows.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
The meaning of Stonehenge in Traflamadorian, when viewed from above, is:
"Replacement part being rushed with all possible speed."

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Fwd: Re: What's in git.git]
  2006-11-19 17:49   ` Petr Baudis
@ 2006-11-19 19:06     ` Robin Rosenberg
  2006-11-19 19:11     ` Jon Smirl
  1 sibling, 0 replies; 4+ messages in thread
From: Robin Rosenberg @ 2006-11-19 19:06 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Jon Smirl, Shawn Pearce, Git Mailing List

söndag 19 november 2006 18:49 skrev Petr Baudis:
> On Sun, Nov 19, 2006 at 06:40:06PM CET, Jon Smirl wrote:
> > Brendan told me that he would not consider Mozilla moving to git until
> > a native Windows version is released so I just dropped the whole
> > thing. It is too much effort and they don't even really want it. They
> > are probably going to switch to SVN.  I told him that SVN would end up
> > being a disaster and he got mad at me. That's when I stopped working
> > on cvs2svn/git.
>
> I see. :-(
>
> Could you please publish cvs2git in whatever state you have it so that
> someone else possibly interested could pick it up and finish the missing
> bits? It would be shame if the already done work would end up wasted.
>
> > #2) git needs native Windows support, this probably includes MSVC
> > integration. There are a lot of non-technical people working on
> > Mozilla like accessibility, doc, artwork, translations, they are all
> > on Windows. Brendan explicitly ruled out cygwIn.
>
> This is sort of catch-22, we have probably no developers interested
> enough in porting Git to native Windows and it's not clear we are going
> to get any until Git runs on native Windows.

Having a usable set of git in C-format (or C++) is what it takes to get things 
rolling. Make the shores of Git-land shallow with nice beaches, so it easy to 
enter and you'll get people there, just out of curiosity. They'll start 
improving things after a while.

Even if it is possible to run bash, python, perl and who-knows-what in native 
windows it makes installing and packaging complicated. It is quite simple to 
install git under cygwin for people versed in cygwin or Linux, but not for 
those that have no interest in those two.

As for plugins to visual studio and othe strange things, they will come if a 
practically usable core set is in place, that can be built and redestributed 
without a ton of dependencies. People have used visual studio with CVS and 
other tools without plugins for a long time just fine so Git will do fine 
withour it for a while too. Eventually we'll have TortoiseGit. They key is a 
usable subset of Git that only requires a C compiler (or C++). Other 
solutions are ofcourse possible (like a C# re-implementation), but making 
things native C-code is the most straightforward path that doesn't split the 
code base.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Fwd: Re: What's in git.git]
  2006-11-19 17:49   ` Petr Baudis
  2006-11-19 19:06     ` Robin Rosenberg
@ 2006-11-19 19:11     ` Jon Smirl
  1 sibling, 0 replies; 4+ messages in thread
From: Jon Smirl @ 2006-11-19 19:11 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Shawn Pearce, Git Mailing List

On 11/19/06, Petr Baudis <pasky@suse.cz> wrote:
> On Sun, Nov 19, 2006 at 06:40:06PM CET, Jon Smirl wrote:
> > Brendan told me that he would not consider Mozilla moving to git until
> > a native Windows version is released so I just dropped the whole
> > thing. It is too much effort and they don't even really want it. They
> > are probably going to switch to SVN.  I told him that SVN would end up
> > being a disaster and he got mad at me. That's when I stopped working
> > on cvs2svn/git.
>
> I see. :-(
>
> Could you please publish cvs2git in whatever state you have it so that
> someone else possibly interested could pick it up and finish the missing
> bits? It would be shame if the already done work would end up wasted.

Working on cvs2git is the wrong direction. cvs2svn has been
specifically tuned for importing into SVN and they aren't interested
in making the architectural changes that git needs.

There is a core problem in the way cvs2svn handles CVS symbols.

> I posted a three commit example of the problem.
>
> FileA has rev 1.1 and rev 1.2
> FileB has rev 1.1
> A symbol is created between A 1.1/1.2 and after B 1.1
>
> cvs2svn generated two change sets
> 1) FileA 1.1
> 2) FileB 1.1, FileA 1.2
>
> With these two change sets it is impossible to base the symbol simply,
> there is no solution without copying. cvs2svn generates the symbol
> based on #1 and copies FileB 1.1 from #2.
>
> The alternative is to output three change sets which is also a valid
> representation of the same data.
> 1) FileA 1.1
> 2) FileB 1.1
> 3) FileA 1.2
>
> Now there is a solution for the symbol, base is on change set #2. No
> copies needed.
>
> By introducing symbol dependencies (which cvs2svn does not do) you can
> force the second change set sequence to be generated.

SVN allows a label to be made by picking a commit from six months ago
with 80% of the right files in it. They then link to revisions from
later commits to build up the file set needed for the label. Doing it
this way turns every symbol into a little branch. It is fixing the
symptoms rather than fixing the problem of figuring out the correct
construction of the change sets. The SVN people seem to be perfectly
happy with these little branches and they aren't going to change
cvs2svn.

cvs2svn is a nice piece of code and a good thing to look at for
reference. It includes some excellent test cases. The author is a
Python expert and uses every last feature of the language which makes
to code hard to understand at times. He also loves to refactor things
and does so continuously. This is a major problem for any long lived
patches. If you do choose to work on cvs2svn, just fork it until you
are done developing, don't try to track the refactorings.

There are several other choices. Monotone is getting a pretty good
importer and the author is aware of the problem described above and is
writing his code to avoid it. Monotone is in C++ and make heavy use of
the Boost C++ template library. Because of this I can't tell what
their code does, it doesn't look like C++ anymore.

git is in C and has high code quality standards. I would just start
from scratch and write the importer over while referencing the
existing code. If anyone is interested in doing this I will be happy
to explain what I know about doing the import accurately and quickly.
With the right algorithms it is possible to import Mozilla CVS with
2GB memory in under an hour on a desktop machine.

Shawn has written git-fastimport. fastimport takes an input stream of
a simple language and then creates the git repository. The CVS
importer just needs to generate these commands.

With the current knowledge of issues around doing CVS import this
problem is not as hard as it used to be. Dozens of attempts have been
made at this problem, Shawn and I have looked at all of these and know
where the algorithmic mistakes are. The only big outstanding problem I
know of with import is the issue described above which no one has
coded a solution for yet.

Once a solution has been found for this problem the next problem is
detecting when a branch gets merged back into the trunk. After that I
think the problem is fully solved.

-- 
Jon Smirl

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-11-19 19:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20061119171135.GA13054@spearce.org>
2006-11-19 17:40 ` [Fwd: Re: What's in git.git] Jon Smirl
2006-11-19 17:49   ` Petr Baudis
2006-11-19 19:06     ` Robin Rosenberg
2006-11-19 19:11     ` Jon Smirl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).