Re: Remote branches and better documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 10, 2007 at 07:27:34PM -0700, Junio C Hamano wrote:
> Distros are not something under my control, so I cannot help you
> much there.

	I'm not asking you to ;-)  This is about real world usage, not
how to make Junio's life difficult.

> > 	Then there's the user that doesn't administer the system.  They
> > don't even know the version changed.  It Just Breaks, and they don't
> > know why.
> 
> That's a valid concern, but I am not sure how you would want to
> address that issue.  Design constraints are:
> 
>  - you cannot change the old software that is not updated on the
>    user's box;

	No, but software can be written to know how to determine it is
too old and fail.  eg, a protocol often has a version in the header so
that older software says "I don't know it".

>  - you cannot afford to write something to the repository to
>    mark the latest version that mucked with the repository every
>    time any operation happens;

	Of course not, nor would I advocate such.  When it comes to "new
version changed something that an old version won't understand", that's
the only time you'd have to write out a flag.  People making this change
to the software had better be aware that they have added this
incompatibility, and as such can be aware to mark it.

> We _could_ check presence of $HOME/.knows-git-version-X.Y.Z file
> every time we run (that's just a single stat(2) call that cannot
> be too expensive) and if there isn't one, ask the user if he has
> read the release notes and understood the backward compatibility
> issues if there is any, and refuse to run until getting a
> satisfactory answer.
> 
> But I personally do not think that would be an improvement.

	Nor do I.  I'm *still* not asking that we find a way to annoy
the user into reading the release notes up front!  I'm asking that when
something behaves unexpectedly, and the user goes to find out why, the
answer is where they look.  If "git foo" does something different, and
appears to have broken, the user isn't going to assume "it changed",
they're going to assume they did something wrong.  They're going to look
at git-foo(1).  And somehow, even as a tiny, one-line "X changed x.y ->
x.y+1, see the release note", git-foo(1) should mention that they didn't
do something wrong.

>     As of git v1.5.0 there are some optional features that changes
>     the repository to allow data to be stored and transferred more
>     efficiently.  These features are not enabled by default, as they
>     will make the repository unusable with older versions of git.

	We didn't select any of these.  This sort of behavior is a good
thing.  There is no "silent change" or surprise, because you have to
opt-in.  This clearly wasn't the problem.

> I think there was _one_ honest slippage though.  Fetching from
> 1.5.0 peer by 1.5.0 client could (after doing content
> negotiation between both ends as a protection measure) create a
> packfile that cannot be read by older 1.4 clients.  Obviously
> you cannot expect that kind of "protection" to work across set
> of machines with mixed versions sharing a repository over NFS,
> and that probably is a mistake we can learn from.

	I suspect this is what corrupted our repository, as it would
create packs the older 1.4 version wouldn't see (and perhaps complain
about).  Here's where the 1.5 client says to itself "I know I'm about to
create a packfile that older versions can't handle, I'd better mark
something to tell older versions to give up."  Isn't this what
core.repositoryFormatVersion is for?

Joel

-- 

None of our men are "experts."  We have most unfortunately found
it necessary to get rid of a man as soon as he thinks himself an
expert -- because no one ever considers himself expert if he really
knows his job.  A man who knows a job sees so much more to be done
than he has done, that he is always pressing forward and never
gives up an instant of thought to how good and how efficient he is.
Thinking always ahead, thinking always of trying to do more, brings
a state of mind in which nothing is impossible. The moment one gets
into the "expert" state of mind a great number of things become
impossible.
	- From Henry Ford Sr., "My Life and Work"

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@xxxxxxxxxx
Phone: (650) 506-8127
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux