From owner-freebsd-current@FreeBSD.ORG Fri May 25 10:03:37 2007 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B9C3B16A400 for ; Fri, 25 May 2007 10:03:37 +0000 (UTC) (envelope-from b.candler@pobox.com) Received: from gretel.pobox.com (gretel.pobox.com [208.58.1.197]) by mx1.freebsd.org (Postfix) with ESMTP id 8905E13C45E for ; Fri, 25 May 2007 10:03:37 +0000 (UTC) (envelope-from b.candler@pobox.com) Received: from sceptre.pobox.com (sceptre.pobox.com [207.106.133.20]) by gretel.pobox.com (Postfix) with ESMTP id A464A6258F7C for ; Fri, 25 May 2007 05:47:54 -0400 (EDT) Received: from sceptre (localhost.localdomain [127.0.0.1]) by sceptre.pobox.com (Postfix) with ESMTP id 24FDE2EF for ; Fri, 25 May 2007 05:47:53 -0400 (EDT) Received: from localhost (80-45-95-114.static.dsl.as9105.com [80.45.95.114]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by sceptre.sasl.smtp.pobox.com (Postfix) with ESMTP id DEB0C50EAE for ; Fri, 25 May 2007 05:47:52 -0400 (EDT) Received: from lists by localhost with local (Exim 4.60) (envelope-from ) id 1HrWOO-0006rZ-4K for freebsd-current@freebsd.org; Fri, 25 May 2007 10:47:28 +0100 Resent-From: lists@uk.tiscali.com Resent-Date: Fri, 25 May 2007 10:47:27 +0100 Resent-Message-ID: <20070525094727.GA26257@uk.tiscali.com> Resent-To: freebsd-current@freebsd.org Date: Fri, 25 May 2007 08:49:26 +0100 From: Brian Candler To: freebsd-current@freebsd.org Message-ID: <20070525074925.GA19294@uk.tiscali.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Resent-Date: Fri, 25 May 2007 10:47:28 +0100 Subject: Using Subversion for binary distribution? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 May 2007 10:03:37 -0000 Here's a wacky idea - I don't know if anyone's considered it before. Suppose you checked a full *binary* FreeBSD distribution into Subversion (that is, untar all the distribution bundles and then svn import) Now, on a target machine, you do "svn checkout .... /mnt" where /mnt has mounted a blank disk. Then install the boot loader, and then boot from that disk. What you get is the following: * Binary updates. If you check in binary updates to the repository, then "svn update" on all the clients will perform the update. * "svn status" shows you what files you have changed or added on the machine (without generating any network traffic). Note: this can be done in any subdirectory, e.g. /etc, not just at the root. * Piping "svn status" into a backup script would backup only the minimum set of files and directories needed to recreate the machine. * "svn diff" would show what config changes you had made on a system, and "svn revert" would wind them back to how they were at the original installation (again, without generating any network traffic) * Upgrading to a new release would just be a case of "svn switch ...; svn update" * Upgrading would correctly delete files which were present in the old release, not present in the new release, and not modified by you. Yay! Clean systems even after multiple upgrade cycles!! * Provides a replacement for "mergemaster": "svn update" will automatically merge in non-conflicting changes to all your config files, and highlight where there are conflicts for you to fix manually. For the more advanced user, you could create a separate branch in your central repository for each endpoint machine, allowing you to drive config changes from the repository. (The downside is that when you upgrade to a new release you'll need to merge these branch changes into the new branch) Is there any value in pursuing this idea? Cheers, Brian.