Repository Layout

Hello, Reid.

Fortunately, with SVN, making such a change isn't hard and its tracked
in the commits. Anyone object or have other ideas in this realm?

I'm also confused. At one hand, proposed layout (with BTT in the top)
seems to be "unnatural", when we will create new tags/branches.

In theory, each module can have its own version, thus if the want to
"tag" it, we have either copy the whole repository to new tag, wasting
space and checkout times, or "tag" just a subset of the repository,
which seems to be pretty bad, because different tags can contain
different "subsets". The same for branches, but not too "bad", since
branches are more or less temporary. Keeping BTT in the modules will
surely make such problems thrown away.

At the other hand, keeping BTT inside modules can lead to headache, when
some branch, for example, has dependencies on other modules (for
example, some experimental version of CFE can be stick to some version
of LLVM and so on)...

Hello, Reid.

> Fortunately, with SVN, making such a change isn't hard and its tracked
> in the commits. Anyone object or have other ideas in this realm?
I'm also confused. At one hand, proposed layout (with BTT in the top)
seems to be "unnatural", when we will create new tags/branches.

In theory, each module can have its own version, thus if the want to
"tag" it, we have either copy the whole repository to new tag, wasting
space and checkout times, or "tag" just a subset of the repository,
which seems to be pretty bad, because different tags can contain
different "subsets". The same for branches, but not too "bad", since
branches are more or less temporary. Keeping BTT in the modules will
surely make such problems thrown away.

Well, I think its actually less confusing and more amenable to doing
both module-specific tags as well as full-project tags. For example, we
could have:

/tags/llvm/release-21

to mark the 2.1 release of llvm. There really isn't any diference in
creating this tag as opposed to /llvm/tag/release_21. Same mechanisms
apply; the only difference is the initial path. We could also have:

/tags/llvm-project-release-10

which could be a tag for the entire project (all modules), something
we've never done before. Note that in svn, copies are cheap.

At the other hand, keeping BTT inside modules can lead to headache, when
some branch, for example, has dependencies on other modules (for
example, some experimental version of CFE can be stick to some version
of LLVM and so on)...

Right, my second example above addresses that.

Reid.