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 A6FFA1000B for ; Mon, 17 Jun 2013 04:35:41 +0000 (UTC) Received: (qmail 70730 invoked by uid 500); 17 Jun 2013 04:35:38 -0000 Delivered-To: apmail-subversion-users-archive@subversion.apache.org Received: (qmail 70559 invoked by uid 500); 17 Jun 2013 04:35:27 -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 70552 invoked by uid 99); 17 Jun 2013 04:35:23 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Jun 2013 04:35:23 +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 (nike.apache.org: domain of lesmikesell@gmail.com designates 209.85.212.50 as permitted sender) Received: from [209.85.212.50] (HELO mail-vb0-f50.google.com) (209.85.212.50) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Jun 2013 04:35:17 +0000 Received: by mail-vb0-f50.google.com with SMTP id w16so1618838vbb.23 for ; Sun, 16 Jun 2013 21:34:56 -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=TTokPVbd5P09e2gsE6UUrlcCcd2egK8yFInvRRvcCWY=; b=vyRcT0T+qRhpKdiNAyfwtpwvkiYum18bPouMEkdYJyiuMpgYPSTeW6NTpe0n0srocL QiFAFgF2tw9MCcYLbG/+YvXAdj9E0JOxnIcTBBxojbtmuyPDm8qv696k76gnxpWY8UFn 78Q7Bk5uPpkDVUKWBQ74zStUmheEPfZgtAf8iDMkvPHF93/vEoINsn9le8IoeaCahs2O 9l0PyZe/zVCAoSvektDyy6aNNx7wgXIEoE2bA0Rwq7N26UMyZL7alfAdztkALv4JKWdn p6O6fTJ1mJj+SyiGRPctOLzzyPCAa/ZHCU0ijw/qf0JDTrVcDf8fnf6Gp1ur6EUPhXdC IZAA== MIME-Version: 1.0 X-Received: by 10.58.233.173 with SMTP id tx13mr3930066vec.31.1371443696320; Sun, 16 Jun 2013 21:34:56 -0700 (PDT) Received: by 10.58.15.138 with HTTP; Sun, 16 Jun 2013 21:34:56 -0700 (PDT) In-Reply-To: References: Date: Sun, 16 Jun 2013 23:34:56 -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 Sun, Jun 16, 2013 at 3:55 PM, Olivier Antoine wrote: > > >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... > > As consequence, SVN allows to create branches and tags on a part of the > software of the repository, starting at a subdirectory and the copy command > can then control/limit the scope of the branch/tag.This can be useful. The common scenario is to have multiple 'projects' under the same repository root, each with their own trunk/branches/tags tree. > Now, I only see two uses of the command svn+copy - and two only : > - Copy the software of the repository - or a part of it - to the branches > or tags repositories, > - Restoring a removed file or directory element to the HEAD revision. > > It is difficult for me to imagine a part (file or whole directory tree) > copied to another place of the same software. This would be some kind of > hardlinks (against SCM principles !). Once you have copied it, it goes its own way but retains previous history - there is nothing wrong with that. Consider a library that evolves as a component of some other project, but you subsequently realize it can be used in several programs that will be maintained separately. It might make sense to copy it up to its own top-level project where it can more sensibly have its own release schedule with its own branches and tags to easily support multiple versions concurrently being used by different things. >> 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? > > What is nice is : you don't load and you don't update, you just see exactly > what is in the repository. But - I don't like surprises... And I might have temporary local changes in my copy, or have intentionally set up a working copy with mixed revisions. So I guess you'd have to branch in the repository to match what svn does with working copies. > How do you lock your SVN tags, please ? You can use hook scripts for that. We sometimes check out source from tags and commit the resulting binaries back - not exactly 'clean' but pragmatically useful - and possible with an appropriate script that allows this exception. > Now, let me show you something in SVN that is disturbing for me (and other > tool, like RTC, do the same). > > When you commit, commit can fail, and you might have to merge before > committing. If you have concurrent work going on, it is usually best to update before and after your commit. And you'll resolve conflicts in the updates. > You merge, you did some regression tests on the merged software, and then > you finally commit. > But it just mean that the software that you store in the repository is not > strictly the software that you developped, and this software is simply lost. > This is just against the SCM principles. If you want to store all copies of concurrent work instead of just the the way you resolved your updates, you need to be working on separate branches with later resolution. That's the 'feature branch' style and there are sometimes reasons to use it, even though there is some extra overhead. But regardless of the process, you eventually have to resolve conflicting changes. -- Les Mikesell lesmikesell@gmail.com