Yesterday I tried Fossil for the first time.
Using 1.29:

# fossil clone https://www.fossil-scm.org/ fossil-src.fossil
Round-trips: 2   Artifacts sent: 0  received: 3073
Clone finished with 3113 bytes sent, 1850717 bytes received
Rebuilding repository meta-data...
  100.0% complete...
project-id:
admin-user: root (password is "ea8bc6")

# fossil clone https://www.fossil-scm.org/ fossil-src-1.fossil
Round-trips: 2   Artifacts sent: 0  received: 2895
Clone finished with 2990 bytes sent, 1760605 bytes received
Rebuilding repository meta-data...
  100.0% complete...
project-id:
admin-user: root (password is "1ee887")

# fossil clone https://www.fossil-scm.org/ fossil-src-2.fossil
Round-trips: 2   Artifacts sent: 0  received: 7790
Clone finished with 4355 bytes sent, 4848989 bytes received
Rebuilding repository meta-data...
  100.0% complete...
project-id:
admin-user: root (password is "0173ad")

# echo 'select count(*) from blob;' | sqlite3 fossil-src.fossil
3076
# echo 'select count(*) from blob;' | sqlite3 fossil-src-1.fossil
2893
# echo 'select count(*) from blob;' | sqlite3 fossil-src-2.fossil
7843

The three tries were all done within a few minutes of each other. Each time, 
Fossil reported that the clone finished, but produced different results.

Today I tried again, and got a more plausible amount of data:

# fossil clone https://www.fossil-scm.org/ fossil-src-3.fossil
Round-trips: 7   Artifacts sent: 0  received: 28536
Clone finished with 1678 bytes sent, 23157937 bytes received
Rebuilding repository meta-data...
  100.0% complete...
project-id: CE59BB9F186226D80E49D1FA2DB29F935CCA0333
admin-user: root (password is "a86ba5")

# echo 'select count(*) from blob;' | sqlite3 fossil-src-3.fossil
28435

This time, I learned that a blank project-id apparently means the clone didn't 
actually finish, which means all three downloads yesterday failed.

Yesterday, the network probably dropped some packets. But it's misleading, at 
least for a new user, for Fossil to report that the clone finished when it 
actually didn't. It would be useful for the server to send a top-level hash of 
all the data, before sending the data, so the client can verify it after the 
download, and not report that the clone finished if the hash doesn't verify.

Since Fossil already treehashes everything, and the file format spec says 
repository synchronization uses a ‟cluster” with a top-level hash of all the 
data, I don't see why the cluster wouldn't be sent first, and the full tree 
verified after the download.

BTW it would be useful to send the total size in advance too, so the client can 
show a progress report.
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to