* Mozilla version control requirements and git
@ 2006-09-02 14:31 Jon Smirl
2006-09-03 1:19 ` Martin Langhoff
0 siblings, 1 reply; 9+ messages in thread
From: Jon Smirl @ 2006-09-02 14:31 UTC (permalink / raw)
To: git
The Mozilla people have a web page describing what they are looking
for in a new version control system. How does git stack up?
http://wiki.mozilla.org/Version_Control_System_Requirements
They have also recently put up a Subversion server for limited use.
http://weblogs.mozillazine.org/preed/2006/08/subversive_subversion_conversi.html
--
Jon Smirl
jonsmirl@gmail.com
--
VGER BF report: U 0.506426
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-02 14:31 Mozilla version control requirements and git Jon Smirl
@ 2006-09-03 1:19 ` Martin Langhoff
2006-09-03 3:29 ` Jon Smirl
0 siblings, 1 reply; 9+ messages in thread
From: Martin Langhoff @ 2006-09-03 1:19 UTC (permalink / raw)
To: Jon Smirl; +Cc: git
On 9/3/06, Jon Smirl <jonsmirl@gmail.com> wrote:
> The Mozilla people have a web page describing what they are looking
> for in a new version control system. How does git stack up?
Hi Jon,
you've been playing with GIT quite a bit by now, so I guess you know
the answer ;-) Is there anything in particular you are wondering
about?
The one item that sticks out for me as not there is ACLs, but access
controls can be implemented in hooks for direct pushes. Maintain an
.htaccess-like file and have a perl script to check it on pushes to
the repo.
Oh, and "partial tree pulls for localisers". Perhaps git-cvsserver can
help there? Localisers can just use TortoiseCVS and get a checkout of
the language pack subdir.
cheers,
martin
--
VGER BF report: U 0.544429
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 1:19 ` Martin Langhoff
@ 2006-09-03 3:29 ` Jon Smirl
2006-09-03 9:17 ` Jakub Narebski
2006-09-03 23:06 ` Junio C Hamano
0 siblings, 2 replies; 9+ messages in thread
From: Jon Smirl @ 2006-09-03 3:29 UTC (permalink / raw)
To: Martin Langhoff; +Cc: git
On 9/2/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> On 9/3/06, Jon Smirl <jonsmirl@gmail.com> wrote:
> > The Mozilla people have a web page describing what they are looking
> > for in a new version control system. How does git stack up?
>
> Hi Jon,
>
> you've been playing with GIT quite a bit by now, so I guess you know
> the answer ;-) Is there anything in particular you are wondering
> about?
Shallow clones are a big problem. We have Mozilla down to 450MB is
git, but that is still gigantic for anyone doing an initial check out,
especially if they don't have good broadband. It is over 10x the data
that CVS brings down. Even without doing shallow clones git still
needs to be modified to restart an interrupted pack transfer.
>
> The one item that sticks out for me as not there is ACLs, but access
> controls can be implemented in hooks for direct pushes. Maintain an
> .htaccess-like file and have a perl script to check it on pushes to
> the repo.
I don't see ACLs as that big an issue. If you convert to model where
everyone has their own repo and you just push changesets at each
other, ACLs are much less important. You need ACLs when 2,000 people
have commit privs.
>
> Oh, and "partial tree pulls for localisers". Perhaps git-cvsserver can
> help there? Localisers can just use TortoiseCVS and get a checkout of
> the language pack subdir.
Partial repo pulls and an issue to. The mozilla repo has much more
than a browser in it, it also has a large mail/news program. A partial
repo pull may not be what is needed for git, instead git needs a
partial repo checkout.
--
Jon Smirl
jonsmirl@gmail.com
--
VGER BF report: U 0.827771
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 3:29 ` Jon Smirl
@ 2006-09-03 9:17 ` Jakub Narebski
2006-09-03 13:46 ` Jon Smirl
2006-09-03 23:06 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Jakub Narebski @ 2006-09-03 9:17 UTC (permalink / raw)
To: git
Jon Smirl wrote:
>> Oh, and "partial tree pulls for localisers". Perhaps git-cvsserver can
>> help there? Localisers can just use TortoiseCVS and get a checkout of
>> the language pack subdir.
>
> Partial repo pulls and an issue to. The mozilla repo has much more
> than a browser in it, it also has a large mail/news program. A partial
> repo pull may not be what is needed for git, instead git needs a
> partial repo checkout.
Or better support for subprojects.
I think you can fake subproject support using separate repositories
for subprojects, in the directory matching the one in the whole project,
and the project repository, where we pull/push subprojects into.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
--
VGER BF report: U 0.877495
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 9:17 ` Jakub Narebski
@ 2006-09-03 13:46 ` Jon Smirl
2006-09-03 15:42 ` Jakub Narebski
2006-09-03 21:40 ` Martin Langhoff
0 siblings, 2 replies; 9+ messages in thread
From: Jon Smirl @ 2006-09-03 13:46 UTC (permalink / raw)
To: Jakub Narebski; +Cc: git
On 9/3/06, Jakub Narebski <jnareb@gmail.com> wrote:
> Jon Smirl wrote:
>
> >> Oh, and "partial tree pulls for localisers". Perhaps git-cvsserver can
> >> help there? Localisers can just use TortoiseCVS and get a checkout of
> >> the language pack subdir.
> >
> > Partial repo pulls and an issue to. The mozilla repo has much more
> > than a browser in it, it also has a large mail/news program. A partial
> > repo pull may not be what is needed for git, instead git needs a
> > partial repo checkout.
>
> Or better support for subprojects.
>
> I think you can fake subproject support using separate repositories
> for subprojects, in the directory matching the one in the whole project,
> and the project repository, where we pull/push subprojects into.
You can't really fake it. Many of the projects in Mozilla are
dependent on each other. If you break them up into separate
repositories you lose the ability to do a cross project commit. This
is common when you are changing an interface between the subprojects.
Would it make sense for git to treat a tree of projects like you
describe as a single entity? So a commit would transparently commit to
all of the subprojects. Maybe the commit entry's sha1 could be set up
so that it would be identical in all subprojects. That would let you
string them back together.
> --
> Jakub Narebski
> Warsaw, Poland
> ShadeHawk on #git
>
>
>
> --
> VGER BF report: U 0.877495
> -
> 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
jonsmirl@gmail.com
--
VGER BF report: S 0.995201
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 13:46 ` Jon Smirl
@ 2006-09-03 15:42 ` Jakub Narebski
2006-09-03 21:40 ` Martin Langhoff
1 sibling, 0 replies; 9+ messages in thread
From: Jakub Narebski @ 2006-09-03 15:42 UTC (permalink / raw)
To: Jon Smirl; +Cc: git
On 03-09-2006 15:46, Jon Smirl wrote:
> On 9/3/06, Jakub Narebski <jnareb@gmail.com> wrote:
> > Jon Smirl wrote:
> >
> > >> Oh, and "partial tree pulls for localisers". Perhaps git-cvsserver can
> > >> help there? Localisers can just use TortoiseCVS and get a checkout of
> > >> the language pack subdir.
> > >
> > > Partial repo pulls and an issue to. The mozilla repo has much more
> > > than a browser in it, it also has a large mail/news program. A partial
> > > repo pull may not be what is needed for git, instead git needs a
> > > partial repo checkout.
> >
> > Or better support for subprojects.
> >
> > I think you can fake subproject support using separate repositories
> > for subprojects, in the directory matching the one in the whole project,
> > and the project repository, where we pull/push subprojects into.
>
> You can't really fake it. Many of the projects in Mozilla are
> dependent on each other. If you break them up into separate
> repositories you lose the ability to do a cross project commit. This
> is common when you are changing an interface between the subprojects.
>
> Would it make sense for git to treat a tree of projects like you
> describe as a single entity? So a commit would transparently commit to
> all of the subprojects. Maybe the commit entry's sha1 could be set up
> so that it would be identical in all subprojects. That would let you
> string them back together.
Scratch that. You can fake subproject support using something similar
to the way Junio works with TODO branch. Namely, separate repositories
for subprojects, each as if it would start from it's own directory
(although you can manage without that, it only would be slightly harder
to set it up), and main repository working directory composed from
subproject repositories checked out to correct place. Add to this
ingnoring object database (i.e. .git repositories), and you have whole
repository... where you can do whole repository commits to.
E.g. the following directory structure
main-project/
main-project/.git
main-project/subproject/
main-project/subproject/.git
main-project/subproject/...subproject files...
where second .git is in .gitignore or info/excludes, but the subrpoject/
directory itself isn't.
If this is not enough, check out ideas in Subpro.txt in the 'todo' branch
in git repository. It adds additional 'bind' header... the implementation
(search for 'gitlink') were if I remember correctly never fully implemented
and is not in git, although parts of it like git-read-tree and
git-write-tree --prefix option made it.
http://www.kernel.org/git/?p=git/git.git;a=blob;f=Subpro.txt;hb=todo
As commit id depends on the contents, including _parents_ and _tree_,
it is I think impossible to set commit entry sha1 to be identical.
P.S. I just hope that it would pass VGER filter. I don't have much luck
with it lately...
--
Jakub Narebski
Poland
--
VGER BF report: S 0.994192
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 13:46 ` Jon Smirl
2006-09-03 15:42 ` Jakub Narebski
@ 2006-09-03 21:40 ` Martin Langhoff
2006-09-04 1:43 ` Jon Smirl
1 sibling, 1 reply; 9+ messages in thread
From: Martin Langhoff @ 2006-09-03 21:40 UTC (permalink / raw)
To: Jon Smirl; +Cc: Jakub Narebski, git
On 9/4/06, Jon Smirl <jonsmirl@gmail.com> wrote:
> You can't really fake it. Many of the projects in Mozilla are
> dependent on each other. If you break them up into separate
> repositories you lose the ability to do a cross project commit. This
> is common when you are changing an interface between the subprojects.
In many projects this is handled by having tags and generally
versioning modules and interfaces. Being independent gives the
subprojects/modules a lot more freedom to work/branch on wild
tangents, and the versioned interfaces mean that -- with the
contraints of the versioned interfaces -- you can mix and match
branches/releases of the different subprojects.
In short, I'd definitely break those up :-)
cheers,
martin
--
VGER BF report: U 0.513231
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 3:29 ` Jon Smirl
2006-09-03 9:17 ` Jakub Narebski
@ 2006-09-03 23:06 ` Junio C Hamano
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2006-09-03 23:06 UTC (permalink / raw)
To: Jon Smirl; +Cc: git
"Jon Smirl" <jonsmirl@gmail.com> writes:
> Partial repo pulls and an issue to. The mozilla repo has much more
> than a browser in it, it also has a large mail/news program. A partial
> repo pull may not be what is needed for git, instead git needs a
> partial repo checkout.
That does not contradict with the underlying data model of git,
and it would certainly be possible with a specialized Porcelain.
Since git tracks the entire tree, the tree object contained in
the commit you create _must_ describe the entire project tree,
but that does not necessarily mean that your working tree needs
to have the entire tree checked out.
The git corelevel is designed to be operable with sparsely
populated working tree, and the problem you are seeing is
primarily coming from the fact that some wrappers you are seeing
as "git UI" are specifically done to help workflows that _wants_
to have fully populated working tree (e.g. "git commit -a" and
"git checkout"). There are other wrappers that are designed to
work well in sparsely populated working tree, including "git-am"
and "git-merge". They should be usable pretty much as they are.
To support "narrow checkout" workflow, some wrappers either need
to be told about the "interesting area", or a set of different
wrappers specifically designed to support "narrow checkout"
workflow can be written. I am not sure which is more desirable.
I have a gut feeling that "git commit" can be used as is (you cd
into the area you are interested in, and say "git commit ."
instead of saying "git commit -a"), while it would be less
confusing to keep "git checkout" the whole-tree operation and
have a specialized porcelain for a narrow checkout, but this is
me saying things without thinking things through.
I imagine such a "narrow checkout" workflow Porcelain would work
like this:
- the user tells it which parts of the whole project she is
interested in.
- when checking things out, the Porcelain populates the index
in full [*1*] and then checks out only specified subtrees to
the working tree.
- when checking things in, the changes outside the specified
area are ignored (well, outside there should be no files in
working tree so ignoring them should be trivial). write-tree
writes from the whole index and creates the tree object and
then commit object just as usual. The net effect is that the
parts outside the areas of interest stay the same as the
previous HEAD commit, which is exactly what the user wanted
anyway.
You could optimize the above further by populating the index
sparsely as well (i.e. *1* above is not a requirement), but you
would need to merge in the changes made to that sparse index
into the full tree read from the HEAD commit before writing the
next tree object out anyway, so I doubt it is worth it.
--
VGER BF report: U 0.842228
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Mozilla version control requirements and git
2006-09-03 21:40 ` Martin Langhoff
@ 2006-09-04 1:43 ` Jon Smirl
0 siblings, 0 replies; 9+ messages in thread
From: Jon Smirl @ 2006-09-04 1:43 UTC (permalink / raw)
To: Martin Langhoff; +Cc: Jakub Narebski, git
On 9/3/06, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> On 9/4/06, Jon Smirl <jonsmirl@gmail.com> wrote:
> > You can't really fake it. Many of the projects in Mozilla are
> > dependent on each other. If you break them up into separate
> > repositories you lose the ability to do a cross project commit. This
> > is common when you are changing an interface between the subprojects.
>
> In many projects this is handled by having tags and generally
> versioning modules and interfaces. Being independent gives the
> subprojects/modules a lot more freedom to work/branch on wild
> tangents, and the versioned interfaces mean that -- with the
> contraints of the versioned interfaces -- you can mix and match
> branches/releases of the different subprojects.
>
> In short, I'd definitely break those up :-)
Mozilla always ships as a complete system so there is no need to deal
with old versions of the pieces. Only the external interfaces are
frozen and versioned. This is similar to the Linux kernel. The user
space API is frozen, but when an internal device driver interface
changes all of the drivers in the kernel tree get updated in lock
step. Doing it this way removes a lot of overhead in maintaining
binary compatibility.
--
Jon Smirl
jonsmirl@gmail.com
--
VGER BF report: U 0.502564
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-09-04 1:44 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-02 14:31 Mozilla version control requirements and git Jon Smirl
2006-09-03 1:19 ` Martin Langhoff
2006-09-03 3:29 ` Jon Smirl
2006-09-03 9:17 ` Jakub Narebski
2006-09-03 13:46 ` Jon Smirl
2006-09-03 15:42 ` Jakub Narebski
2006-09-03 21:40 ` Martin Langhoff
2006-09-04 1:43 ` Jon Smirl
2006-09-03 23:06 ` Junio C Hamano
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).