one byte change to file not detected ?
Talden
talden at gmail.com
Wed Feb 20 14:35:27 CST 2008
Or include a path/pattern list mechanism that indicates requiring a
deep-scan... For most users this is empty, for those with special
needs they'll note the few files that might exhibit this problem.
--
Talden
On Thu, Feb 21, 2008 at 8:42 AM, <Ezra.Smith at bentley.com> wrote:
> Well, as you've noted, there are cases where mercurial is limited by the
> way some filesystems record modification time. If it tried to compensate
> by always doing byte-by-byte comparisons of every file to make sure this
> did not occur, my multi-gigabyte repository with some thousands of files
> would take me an eternity just to run an "hg stat" or "hg commit" on. At
> the point where I have to wait two hours to find out what files I've
> modified recently, I'd start tracking my modifications with a pen and
> paper instead.
>
> As such, I would argue that this is less of a "dumb policy decision to
> make [mercurial] benchmark better at the cost of safety," and more of a
> feature to make mercurial usable on any large repository.
>
> That being said, if you really have a use case where you're likely to do
> multiple commits within the same second, the "sleep 1" wrapper approach
> is a good start. It also seems pretty reasonable to add a --force flag
> to commit when explicitly naming files to commit, so you can say "Yes, I
> know you don't think this file has changed, now check/commit it anyway."
>
> -Ezra
>
>
>
> -----Original Message-----
> From: mercurial-bounces at selenic.com
> [mailto:mercurial-bounces at selenic.com] On Behalf Of BuraphaLinux Server
> Sent: Wednesday, February 20, 2008 1:00 PM
> To: Matt Nordhoff
> Cc: mercurial at selenic.com
> Subject: Re: one byte change to file not detected ?
>
> Clearly mercurial cares more about speed than safety.
>
> Yeah, I can patch it but then I have to rehack it every time they
> release since clearly this is some dumb policy decision to make their
> stuff benchmark better at the cost of safety.
>
> If any of the developers is reading this, please consider a switch
> like --paranoid for people like me that choose to be safe and are
> willing to go slowly. No amount of sorry is every going to make up
> for data loss....
>
>
> On 2/21/08, Matt Nordhoff <mnordhoff at mattnordhoff.com> wrote:
> > BuraphaLinux Server wrote:
> > > The attached script shows that on my system, mercurial cannot detect
> a
> > > 1 byte difference in a file. Sometimes the script works, but most
> of
> > > the time it fails. I wonder if mercurial is using the file size and
> > > time to skip doing a real byte-by-byte comparison, and my clock
> > > granularity is not fine enough? I am willing to pay the penalty of
> > > the slowdown if I can force a byte-by-byte comparison of every file
> > > every time, but I don't know how to turn that on.
> > >
> > > If I add a line 'sleep 1' after the first commit, then the script
> > > correctly works and I get 2 revisions instead of the dreaded
> 'nothing
> > > changed' message.
> > >
> > > Is this a known issue? Should I make a wrapper for hg that just
> > > always does a sleep after each operation?
> > >
> > > I ran the tests with this:
> > >
> > > for x in $(seq 1 10); do ./PANIC; done
> >
> > Exactly. Hg doesn't do a byte-by-byte comparison if the size and
> > modification time haven't changed. I don't believe there's a way to
> > change that ATM. It would probably be easy to hack that bit out of the
> code.
> >
> > (I didn't read the script.)
> > --
> >
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
>
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
>
More information about the Mercurial
mailing list