From 4a8bdca5491a437d390bc4733de97807259a093d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 21 Sep 2004 22:42:03 +0000 Subject: doc update bump to 0.6 fix --forget history bug git-svn-id: file:///home/lennart/svn/public/syrep/trunk@68 07ea20a6-d2c5-0310-9e02-9ef735347d72 --- configure.ac | 2 +- doc/README.html.in | 42 ++++++++++++++++++++++++++++++++++++++---- src/dbutil.c | 5 +++++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 9923cc4..8f11994 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. AC_PREREQ(2.59) -AC_INIT([syrep],[0.5],[mzflerc (at) 0pointer (dot) de]) +AC_INIT([syrep],[0.6],[mzflerc (at) 0pointer (dot) de]) AC_CONFIG_SRCDIR([src/syrep.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([foreign -Wall]) diff --git a/doc/README.html.in b/doc/README.html.in index e37dd97..28c71dc 100644 --- a/doc/README.html.in +++ b/doc/README.html.in @@ -42,6 +42,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

News

+
Wed Sep 22 2004:

Version 0.6 released; Changes +include: fix an ugly bug which made snapshots where --forget was used unusable

+
Mon Jul 19 2004:

Version 0.5 released; Changes include: optionally show sizes of file on --diff, implement @@ -85,17 +89,47 @@ hard links. In fact even copies of files are treated as the same. Currently, syrep doesn't synchronize file attributes like access modes or modification times.

-

Syrep was written to facilitate the synchronization of two +

syrep was written to facilitate the synchronization of two large digital music repositories without direct network connection. Patch files of several gigabytes are common in this situation.

-

Syrep is able to cope with 64 bit file sizes. (LFS)

+

syrep is able to cope with 64 bit file sizes. (LFS)

-

Syrep is optimized for speed. It may make use of a message digest +

syrep is optimized for speed. It may make use of a message digest cache to accelerate the calculation of digests of a whole directory hierarchy.

+

How does syrep compare with rsync, cvs, Subversion, arch/tla, BitKeeper, xdelta2, diff/patch?

+ +

syrep is kind of a bidirectional rsync, but +stores and makes use of a file hierarchy history. Synchronization with +syrep is based on patch files, and doesn't require a direct +connection between the synchronizing peers.

+ +

syrep has many things in common with version control +systems like CVS or SVN: it stores a history and has operations +similar to update and commit. However: the history doesn't contain +file contents and is not line based, it stores the MD5 digest and some +meta data only. There is no central server, instead all peers have the +same role. There is no distinction between repositories and +checkouts. In fact checkout and repository are identical.

+ +

syrep has even more things in common with arch/tla and +BitKeeper. All three are patch based and are "peer-to-peer". However, +there are certain differences: syrep doesn't differentiate +between repositories and checkouts. syrep doesn't keep a file +contents history of any kind.

+ +

syrep resembles diff/patch or +xdelta2 in some way. While the latter work on file +contents, syrep works on file hierarchies.

+ +

In contrast two most of the software mentioned above, +syrep is capable of synchronizing repositories of several +100GB of size, with only a very small overhead. (i.e. 4 MB of control +data for half a year history for 100 GB of user data)

+

Status

Version @PACKAGE_VERSION@ is more or less stable and fulfills its purpose.

@@ -242,7 +276,7 @@ L. Peter Deutsch. Thanks to him for this.


-
Lennart Poettering <@PACKAGE_BUGREPORT@>, July 2004
+
Lennart Poettering <@PACKAGE_BUGREPORT@>, September 2004
$Id$
diff --git a/src/dbutil.c b/src/dbutil.c index 09c092d..b13f244 100644 --- a/src/dbutil.c +++ b/src/dbutil.c @@ -189,6 +189,11 @@ uint32_t get_version_timestamp(struct syrep_db_context *c, uint32_t v) { key.size = sizeof(version); if ((ret = c->db_version_timestamp->get(c->db_version_timestamp, NULL, &key, &data, 0))) { + + /* If the specific history entry was lost: return the epoch */ + if (ret == DB_NOTFOUND) + return 0; + c->db_version_timestamp->err(c->db_version_timestamp, ret, "version_timestamp::get"); return (uint32_t) -1; } -- cgit