Return-Path: X-Original-To: apmail-subversion-users-archive@minotaur.apache.org Delivered-To: apmail-subversion-users-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E16451020A for ; Thu, 13 Jun 2013 21:24:05 +0000 (UTC) Received: (qmail 26736 invoked by uid 500); 13 Jun 2013 21:24:05 -0000 Delivered-To: apmail-subversion-users-archive@subversion.apache.org Received: (qmail 26710 invoked by uid 500); 13 Jun 2013 21:24:05 -0000 Mailing-List: contact users-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list users@subversion.apache.org Received: (qmail 26703 invoked by uid 99); 13 Jun 2013 21:24:05 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Jun 2013 21:24:05 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of lesmikesell@gmail.com designates 209.85.128.170 as permitted sender) Received: from [209.85.128.170] (HELO mail-ve0-f170.google.com) (209.85.128.170) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Jun 2013 21:24:00 +0000 Received: by mail-ve0-f170.google.com with SMTP id 14so8336321vea.29 for ; Thu, 13 Jun 2013 14:23:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ZAdoT5+JnsXlKz4zOU2MxvQ9RwSErU0DcwXGt0e45LU=; b=A13X4asJRJyyy2lJ1vHmOetpneX/qU67awBRo4UsS0XyyPq+ExOD3ajJh8vyzoBiba a7L6pVm41mbWUzfATNht176n5VeIDJ8SGHBG5kaJG0aNmONJNNEdH3toYyuV06K1jx/W NeMa5Ie7lu0cjnTp4HribKUtWs1FdFoKM6k0gFk5gcyprFKd6irUsoRbcWyVLXRIFbb8 wtCB9pMEO29UJw9VwrQzw16SBKgO7I0CqhqG8/vtuQ5uLvrlQWxV+fFU5gtHCYf4Ivuh poiq+iVt+WPWL416MSykJFFnZEXx0nYPe54krnUVYIGtkzrL3EYsvteWZuKpHHk6frGm D6Ew== MIME-Version: 1.0 X-Received: by 10.220.112.210 with SMTP id x18mr1206372vcp.0.1371158619222; Thu, 13 Jun 2013 14:23:39 -0700 (PDT) Received: by 10.58.15.138 with HTTP; Thu, 13 Jun 2013 14:23:39 -0700 (PDT) In-Reply-To: References: Date: Thu, 13 Jun 2013 16:23:39 -0500 Message-ID: Subject: Re: History in subversion From: Les Mikesell To: Olivier Antoine Cc: Subversion Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org On Thu, Jun 13, 2013 at 2:57 PM, Olivier Antoine wrote: > > A good SCM principe is : > - to create tag on branch > - to create branch from tag > I think most people settle on one of two basic 'styles'. The 'dirty-trunk' style makes the most sense to me where most development happens on the trunk with development branches only happening for disruptive or experimental changes. As the trunk approaches a new release point, you make branches for testing and final development and tags for any revisions you want to be able to recreate. Before merge-tracking worked well this minimized the amount of merging since everything progresses in the same direction. It also encourages developers to take advantage of each others changes and sort out conflicts early - and it lets you maintain multiple releases concurrently on their own branches. The other approach keeps the trunk stable and always usable by using 'feature branches' for all new work, merging back to trunk after completion and testing as a form of release management. Of course you can mix/match styles as appropriate for your workflow. > The two most complex commands for SVN seems to be svn+copy and svn+merge, > Thanks for your explaination on svn+copy, it helps, because I was surprised > to see how svn+copy duplicates history. That's pretty much the point of it... > Like I said above, I wish to continue : > - to create tags on branch (and to keep the link of the tag with the branch) > - and to create a branch from a tag (and to keep the information that the > branch starts from this tag). Just remember that svn tracks the 'copied from' history so it can do sensible things when merging, updating, diffing, etc., objects with common ancestry. It doesn't track the 'copy to'. > These are raisonnable SCM principles, don't you think ? Taking the history in a copy is what makes svn work and it makes any copied directory functionally usable as a branch or tag. But after that it depends on how you actually use it... > Revision numbers can be renumbered one day in the repository, so they cannot > be used in the SCM process, am I wrong ? No, revisions can never be renumbered in an existing repository. It is possible to dump the repository and load the history into a different one and change the revision numbers in the process, but that is a drastic administrative decision that will invalidate all checked-out workspaces. But, this eventual possibility is one of the reasons that you want your own human-friendly branch/tag names for the revisions you will always want to be able to find. > > I think that dynamic view is still a nice concept. Dynamic views is > something that users like much, and they desespair when they have to migrate > to snapshot views. > You create your view, you have an (almost) real-time connection to the > repository, your view is available immediatly on all the machines. > The working copy needs to be loaded, recreated and reloaded on each machine. I don't know what I'm missing here. How is it better than explicit commit/update/switch operations? What happens if you are disconnected while making a change? What if you want your working copy to contain conflicts for a while before you can decide how best to resolve them? > But I never saw another tool with these principles : real-time access to > repository, build based on version (not on time), winkin, configuration > audit, SCM process level (stream, baseline, component), multisite. How well does it deal with many concurrent changes with after-the-fact conflict resolution? -- Les Mikesell lesmikesell@gmail.com