Project Directory Layouts

I’m wondering about good practices with regard to the layout of
project developement directories. I know there are generally two kinds
“Standard” and “SVN” where the SVN type normally has three top level
folders: tags, branches, and trunk.

But I wonder where in these two layouts (if anywhere) should one keep
things like a scratch pad directory (what I’m labeling ‘forge’ these
days), one’s website files for a project, and previously released
packages (I tend to keep some copies just in case). And what about
Rakefiles and the like. Should the Rakefile be distributed in a
release if it is only useful to developement?

For awhile I entertained the notion that my “trunk” should be a
one-to-one image of what I was going to distribute as an offical
release. That’s proven harder to do than I expected, and since I’ve
been using Darcs rather than Subversion, if that’s not really
feasible, I wonder if a two tier SVN-like directory layout is really
advantegous to me. But I have been using the extra tier to store these
kinds of extra files (eg website, forge) and actually I wonder why SVN
users never seem to use that tier for anything else too.

Any and all insights into this topic, I’m interested in hearing about.

Thanks,
T.

TRANS wrote:

I’m wondering about good practices with regard to the layout of
project developement directories. I know there are generally two kinds
“Standard” and “SVN” where the SVN type normally has three top level
folders: tags, branches, and trunk.

The subversion tags/brachnes/trunk stuff is for subversion only. Your
real project layout occurs under the trunk branch. Tags and branches
are used to store, well, tagged and branched versions of trunk. This is
convention only, I don’t know of anything in subversion that enforces
this.

So, in the normal course of work when you are working on the latest
version of a project, only the trunk branch is checked out into a
developers working area.

But I wonder where in these two layouts (if anywhere) should one keep
things like a scratch pad directory (what I’m labeling ‘forge’ these
days), one’s website files for a project, and previously released
packages (I tend to keep some copies just in case). And what about
Rakefiles and the like. Should the Rakefile be distributed in a
release if it is only useful to developement?

Yes, otherwise repackagers will have difficulty creating all the RPMs,
PKGs, and whatnot that you don’t want to produce yourself. Whether you
create a tarball or a gem (or something else), please include everything
you need rebuild. Normally this is just a few files. If you want
really want to release a run-only version, make sure you also release a
full version for repackagers.

For awhile I entertained the notion that my “trunk” should be a
one-to-one image of what I was going to distribute as an offical
release. That’s proven harder to do than I expected, and since I’ve
been using Darcs rather than Subversion, if that’s not really
feasible, I wonder if a two tier SVN-like directory layout is really
advantegous to me. But I have been using the extra tier to store these
kinds of extra files (eg website, forge) and actually I wonder why SVN
users never seem to use that tier for anything else too.

Because that tier only exists in the repository, never in the
developer’s workspace (unless they forget and check out that tier by
accident.

  • Jim W.

Nice. Thanks Jim. That was a big help.

T.