Thus said Ron W on Mon, 16 Mar 2015 12:21:45 -0400:

> > The requirement, specifically,  is that the first  artifact that the
> > server sends  during a  clone, must  be a  checkin, or  older Fossil
> > clients will end up in this state.
>
> Could the server side be modified to insure the first artifact sent is
> the first manifest?

The server relies on the fact that the first rid in the blob database is
a checkin. I suppose it could be  more careful and decide to error if it
discovers that rid=1 is not a checkin.

fossil new currently  guarantees that rid=1 is a checkin,  but I'm still
not convinced that deconstruct/reconstruct makes this guarantee. So as a
protective measure, the server side of  the clone could check and return
an  error if  it  finds that  its  repository does  not  have rid=1  and
type=ci.

Or, a new  ordering algorithm could be devised. Right  now, the order of
artifacts  delivered  during  clone  is  determined  by  the  sequential
ordering of  items in the  blob table  (which is why  rid=1 has to  be a
checkin). The cloning  sends a clone_seqno, which is  basically the last
item out of the list of blobs that has been sent. So a client only needs
to send back the clone_seqno to  receive the next batch of artifacts. If
cloning could  guarantee that the first  artifact sent is a  checkin, or
return an error if there are no checkins, this might make it possible to
have repositories that have not the ``initial empty check-in.''

But  basically, the  onus is  currently on  whatever populates  the blob
table to ensure that the ordering  is correct because the clone protocol
just naively takes them in sequential order.

Andy
--
TAI64 timestamp: 4000000055071bac
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to