[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: post-commit hook questions

From: Noel Yap <yap_noel_at_yahoo.com>
Date: 2002-10-15 04:14:39 CEST

--- Branko Čibej <brane@xbc.nu> wrote:
> Why don't you try? I don't know if you get a
> deadlock or not (I guess
> not); but it should take you about 10 minutes to
> write a simple script
> that'll answer your question.

Judging from other answers, the post-commit occurs
outside of the transaction.

> >I think differentiating between branches and tags
> is
> >aside from enforcing a repository layout since, in
> >essence, branches and tags can be thought of as
> >different types of repository elements.
> >
> The're not. Yes, I know ClearCase has different
> namespaces for them; but
> to Subversion, they're just directories.

Actually, ClearCase has them in the same namespace.
The difference is that they are different types
whereas in Subversion, they're both directories.

> I think you have to rethink your layout a bit. How
> about this:
>
> /project
> /main
> /HEAD
> /_BR_
> /dev
> /HEAD
> /_BR_
> /_LB_
> /_VN_
> /_LB_
> /LATEST
> /_VN_
> /0
> /1
>
>
> That keeps branches and labels nicely separate, you
> get a hierarchical
> namespace of branhes, and you can tell the
> difference between a branch
> and a label simply by looking at the path. So, what
> ClearCase would call
>
> foo.c@@/main/dev/LATEST
>
> would in this schema become
>
> /project/main/_BR_/dev/_LB_/LATEST/foo.c
>
> and
>
> foo.c@@/main/1
>
> would map to
>
> /project/main/_VN_/1

I prefer the ClearCase layout better. I have an idea
(ie wrap the svn client to create "branch" and "label"
commands) that I think can make this work.

> Note that the ClearCase version numbers are in a
> different namespace
> than labels and branches, and that for your purpose
> they behave like
> labels, not like branches. Also, you don't need
> top-level namespaces,
> because the main branch is required anyway, and
> labels are always
> applied within branches.

I've given some thought to eliminating the main branch
and decided to keep it since it does signify a branch
rather than a project name.

> I'm not sure how you intend to apply the same label
> to different
> branches of the same object, the way ClearCase does.

Just like the following:
/project
  /main
    /HEAD
    /0
    /1
    /LABEL
    /branch0
      /HEAD
      /0
      /1
      /LABEL
    /branch1
      /HEAD
      /0
      /1
      /LABEL

Note that, in Subversion, there's really only one
object.

> If I were you, I'd
> impose some restrictions on the CC-to-SVN mapping in
> this respect; if
> you do that, then you only need a single global
> namespace for labels.

Hmmm. Global namespace for labels. I'll keep this in
mind.

> Huh, why do you want to do that in a post-commit
> hook? Instead, you
> should use a start-commit hook, then you can examine
> and modify the
> transaction _before_ it's committed, and all your
> problems go away. Of
> course, to modify the transaction, you'd have to use
> either the SWIG
> bindings, or write a C program that links with the
> libsvn_fs library.

I didn't know I could do that. I'll look into doing
this. It would also partially solve the atomicity I
need in figuring out the next branch revision number
and creating the corresponding label.

Thanks,
Noel

__________________________________________________
Do you Yahoo!?
Faith Hill - Exclusive Performances, Videos & More
http://faith.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 15 04:15:20 2002

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.