Received: from spf3.us4.outblaze.com (spf3.us4.outblaze.com [205.158.62.25]) by sdf.lonestar.org (8.12.10/8.12.10) with ESMTP id iB5L0kZB024280 for ; Sun, 5 Dec 2004 21:00:46 GMT Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by spf3.us4.outblaze.com (Postfix) with ESMTP id 84972539E2 for ; Sun, 5 Dec 2004 21:00:50 +0000 (GMT) Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Cb3eb-0004sB-6M for migo@homemail.com; Sun, 05 Dec 2004 16:10:49 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Cb3e9-0004qR-Tz for gnu-arch-users@gnu.org; Sun, 05 Dec 2004 16:10:22 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Cb3e9-0004py-Br for gnu-arch-users@gnu.org; Sun, 05 Dec 2004 16:10:21 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Cb3e7-0004ps-Sb for gnu-arch-users@gnu.org; Sun, 05 Dec 2004 16:10:21 -0500 Received: from [128.255.17.47] (helo=server07.icaen.uiowa.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Cb3Tv-0001DK-8f for gnu-arch-users@gnu.org; Sun, 05 Dec 2004 15:59:47 -0500 Received: from server11.icaen.uiowa.edu (server11.icaen.uiowa.edu [128.255.17.51]) by server07.icaen.uiowa.edu (8.12.9/8.12.9) with ESMTP id iB5KxcpY008830; (envelope-from ) Sun, 5 Dec 2004 14:59:38 -0600 (CST) Received: from [192.168.1.128] (65-103-50-138.cdrr.qwest.net [65.103.50.138]) (authenticated user=jfmeinel) by server11.icaen.uiowa.edu (8.12.9/smtp-serv-1.7) with ESMTP id iB5KxYCk020337 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256); (envelope-from ) Sun, 5 Dec 2004 14:59:37 -0600 (CST) Message-ID: <41B376B4.2060605@arbash-meinel.com> Date: Sun, 05 Dec 2004 14:59:32 -0600 From: John A Meinel User-Agent: Mozilla Thunderbird 0.9 (Windows/20041103) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Tom Browder Subject: Re: [Gnu-arch-users] Arch Versus CVS Versus Subversoin References: <20041205000613.PNEI7152.lakermmtao09.cox.net@nonerjsnum1tkq> In-Reply-To: <20041205000613.PNEI7152.lakermmtao09.cox.net@nonerjsnum1tkq> X-Enigmail-Version: 0.89.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime X-Virus-Scanned: ClamAV 0.80/612/Tue Nov 30 14:26:50 2004 clamav-milter version 0.80j on clamav.icaen.uiowa.edu X-Virus-Scanned: ClamAV 0.80/614/Wed Dec 1 09:44:43 2004, clamav-milter version 0.75 on clamav.icaen.uiowa.edu X-Virus-Status: Clean X-Virus-Status: Clean Cc: gnu-arch-users@gnu.org X-BeenThere: gnu-arch-users@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: a discussion list for all things arch-ish List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============2125369916==" Sender: gnu-arch-users-bounces+migo=homemail.com@gnu.org Errors-To: gnu-arch-users-bounces+migo=homemail.com@gnu.org Status: RO Content-Length: 5812 Lines: 129 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --===============2125369916== Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigB7B5988C47000B740B825B44" This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigB7B5988C47000B740B825B44 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Tom Browder wrote: >One major thing that subversion offers that I haven't seen on the >comparisons between arch and other scm programs is the capability to version >control binary files with binary diffing. This is an important feature for >me and I would like to use subversion. > >However, and unfortunately, the subversion folks refuse to listen to my >CVS-user suggestions for the same type tags as rtag and use of an equivalent >to CVSROOT, otherwise I would jump on subversion. > >Does arch offer or plan to offer those three features (CVS rtag equivalent, >binary diff, CVSROOT equivalent)? > >Thanks. > >Tom Browder > > Arch does not support binary diff in the subversion sense. Because binary diff only makes sense if you have complete history. For each change you must have the bit-wise identical previous version. (binary diff only supports exact patching). One of the ideas of arch is because patch supports fuzzy patching, each revision actually has meaning by itself. Say you fixed a bug, and committed it as patch-23 into your archive. My archive is similar to yours, but I've made changes in the mean-time (even to the same files that you've changed). I can take your patch-23, and in the normal (non-conflicting) case, I can apply it to my tree (usually successfully) without knowing much else about your tree. This is possible because the diffs generated contain context, and this context can be used for patching purposes. In the case of a binary diff, there isn't really the same idea of context. For instance, say the binary file is a bitmap, and I add a circle to the bottom left corner. You add a circle to the bottom right corner. Now the proper "diff" would be just that change, and if you applied your patch and my patch, you should end up with a circle in the bottom left, and the bottom right. But in reality the diffs would at the very least conflict. (In the case of a bitmap, data is stored row-wise, so you changed the same rows I changed). Things get even worse if you were dealing with something like png images, where the data is compressed. Because again, the proper 'diff' would have to know about the uncompressed image and what changed, so that patch could only change the altered pixels. In general, to do appropriate binary diffs, you must know the file format, and have an intelligent diff program. The hardest part of this, is that everyone who would use your archive must also have the ability to understand the diffs, so that they can run their "patch" and get an exact copy of what you had. I think the reason people want binary diff (it's why I wanted it) was to decrease the amount of space used in the archive. At first glance, it seems silly to keep 10 copies of a 100k file, when only part of it changes. However, afterwards it means that every one of your 10 revisions is independently useful. You don't need the previous revision to understand the next one. Also, unless your binary file is really big, and the changes are very localized, you don't really save that much space, and usually space is relatively cheap. It only costs $1/GB of space. $200 (less than a weeks salary for most people) gets you enough space to store lots and lots of copies of your files. Bandwidth isn't quite as cheap (and downloading a full copy of the file 20 times is probably expensive), but cacherevs can help prevent that. Arch also supports other enhancements (local archives, revision libraries), which trade off bandwidth versus space. And finally, all changes are stored compressed in the archive, so in many cases the compression will do better than a binary diff would. Sorry this got so long, but there are specific reasons that arch doesn't support binary diffs, and it isn't just that it hasn't implemented them yet. In response to rtag, arch's idea of tags vs branches, etc are considerably different. I believe you are trying to create a tag on a file without having a local copy. 'tla tag' does exactly this, but you are more likely to want to use a configuration, or something like that. It is very easy to create a meta-project that keeps track of any sort of tags, etc that you want for some other project (these are the configurations I speak of.) Then you get version-controlled meta-information. (In CVS when you move a tag, it is moved for good.) John =:-> PS> If anyone else wants to comment, please do, but this is my feeling about how arch operates. --------------enigB7B5988C47000B740B825B44 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (Cygwin) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFBs3a4JdeBCYSNAAMRAgCqAJ9R13O1btUKGzR425VM6OICDrrxxQCePfSQ 5mPWq8yY8J158LZJn1aYuck= =dcpv -----END PGP SIGNATURE----- --------------enigB7B5988C47000B740B825B44-- --===============2125369916== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Gnu-arch-users mailing list Gnu-arch-users@gnu.org http://lists.gnu.org/mailman/listinfo/gnu-arch-users GNU arch home page: http://savannah.gnu.org/projects/gnu-arch/ --===============2125369916==--