diff options
author | Lennart Poettering <lennart@poettering.net> | 2004-09-21 22:42:03 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2004-09-21 22:42:03 +0000 |
commit | 4a8bdca5491a437d390bc4733de97807259a093d (patch) | |
tree | 2c53c93e69a772993a8ae0d043a065af9b1a13ce | |
parent | 20cbc75bbbc6ccb21713dc6531b1731ce679804a (diff) |
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
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/README.html.in | 42 | ||||
-rw-r--r-- | 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.</p> <h2><a name="news">News</a></h2> +<div class="news-date">Wed Sep 22 2004: </div> <p class="news-text"><a +href="@PACKAGE_URL@syrep-0.6.tar.gz">Version 0.6</a> released; Changes +include: fix an ugly bug which made snapshots where <tt>--forget</tt> was used unusable</p> + <div class="news-date">Mon Jul 19 2004: </div> <p class="news-text"><a href="@PACKAGE_URL@syrep-0.5.tar.gz">Version 0.5</a> released; Changes include: optionally show sizes of file on <tt>--diff</tt>, implement @@ -85,17 +89,47 @@ hard links. In fact even copies of files are treated as the same. Currently, <tt>syrep</tt> doesn't synchronize file attributes like access modes or modification times.</p> -<p><tt>Syrep</tt> was written to facilitate the synchronization of two +<p><tt>syrep</tt> 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.</p> -<p><tt>Syrep</tt> is able to cope with 64 bit file sizes. (LFS)</p> +<p><tt>syrep</tt> is able to cope with 64 bit file sizes. (LFS)</p> -<p><tt>Syrep</tt> is optimized for speed. It may make use of a message digest +<p><tt>syrep</tt> is optimized for speed. It may make use of a message digest cache to accelerate the calculation of digests of a whole directory hierarchy.</p> +<h3>How does syrep compare with <tt>rsync</tt>, <tt>cvs</tt>, Subversion, <tt>arch</tt>/<tt>tla</tt>, BitKeeper, <tt>xdelta2</tt>, <tt>diff</tt>/<tt>patch</tt>?</h3> + +<p><tt>syrep</tt> is kind of a bidirectional <tt>rsync</tt>, but +stores and makes use of a file hierarchy history. Synchronization with +<tt>syrep</tt> is based on patch files, and doesn't require a direct +connection between the synchronizing peers.</p> + +<p><tt>syrep</tt> has many things in common with version control +systems like <tt>CVS</tt> or <tt>SVN</tt>: it stores a history and has operations +similar to <tt>update</tt> and <tt>commit</tt>. 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.</p> + +<p><tt>syrep</tt> has even more things in common with <tt>arch</tt>/<tt>tla</tt> and +BitKeeper. All three are patch based and are "peer-to-peer". However, +there are certain differences: <tt>syrep</tt> doesn't differentiate +between repositories and checkouts. <tt>syrep</tt> doesn't keep a file +contents history of any kind.</p> + +<p><tt>syrep</tt> resembles <tt>diff</tt>/<tt>patch</tt> or +<tt>xdelta2</tt> in some way. While the latter work on file +contents, <tt>syrep</tt> works on file hierarchies.</p> + +<p>In contrast two most of the software mentioned above, +<tt>syrep</tt> 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)</p> + <h2><a name="status">Status</a></h2> <p>Version @PACKAGE_VERSION@ is more or less stable and fulfills its purpose.</p> @@ -242,7 +276,7 @@ L. Peter Deutsch. Thanks to him for this.</p> <hr/> -<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, July 2004</address> +<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, September 2004</address> <div class="grey"><i>$Id$</i></div> 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; } |