Subject: Re: simple cvs-like git wrapper

From: "Ed S. Peschko" <[email-masked]>
Date: Wed, 30 Jan 2008 14:52:54 -0800

On Tue, Jan 29, 2008 at 11:00:02PM -0500, Shawn O. Pearce wrote:
> "Ed S. Peschko" <[email-masked]> wrote:
> > In our case, our code is tied to a database and a database instance. An
> > environment equals attachment to a given oracle SID. If someone is out of sync
> > with other people's changes, then that person's environment is wrong.
> 
> Surely not every single code change impacts the database schema
> and meaning of column values?  If that were truely the case then
> I'd say you have bigger issues to tackle.

well, no, but I'd say 80-90% of the changes we have are ones that we
want to instantly share with everybody. I was thinking that ones that
we didn't would be prefixed, as in:

	git-branch exp-<change_name>

and those would need to be renamed explicitly to become 'mainline'
branches before they were merged..

You've got some good points, and my original intent was to
answer them point-by-point, but suffice to say:

	1. I was hoping to make each branch correspond to a work request,
	   that would be tracked for SOX. We also need to track the changes
	   in mercury interactive, not git, so I've got some challenges
	   there in making a wrapper to handle this.

	2. A single, linear history on the remote end wouldn't be easy for
	   reporting purposes.

    3. A single linear history on the remote end wouldn't support 
	   the rare cases where I *do* want a single change.

I guess my scheme's workability depends on how effective git is at 
doing merges from branch to branch, and how good it is at fixing
conflicts in a way that is simple for the user. In CVS, I get: 

    ...
    =====
    ...
    <<<<<

when a conflict occurs, and you need to resolve that conflict before
re-committing again. Does git do a similar thing?

Also, with git-ls-remote - is there a way to see more information 
about the remote branch rather than just its name, ie: can you say:

    git-ls-remote -l --heads origin

to get a list of changes in the order they were made? And is there a 
command that does what I want, ie:

	git pull origin --all 

Which pulls all branches from origin and merges them into the current
branch in an intelligent way, ie: by order in which the branches were 
committed, or even:

	git pull origin --re: '^(?!exp)'

which pulls in all branches matching a given regular expression (in this
case, not matching 'exp' at the beginning..

Ed