0

I'm setting up the SVN repository for my hobby game project.

I have the main version of the game and a beta version. The game is already online with a few players. The beta version is isolated from the main game and is used to test new features and changes which might break the main game.

For the beta version I would like to use a branch. Majority of the codebase is just the same with a few variations so using a branch seems the most sensible option. The branch would be pretty much permanent. Certain approved features would eventually be moved to the main version.

For the main version I'm using the trunk.

This is how my repository layout would look like:

/
    trunk/
         source
    branches/
        Dev-July-2020/
            source
        BETA/
            source
    tags/
        1.0.0/
            source
        1.0.1/
            source
        1.0.2/
            source
        ...etc

Is it OK to have a permanent branch like that? According to the SVN handbook branches normally have a finite lifespan. Here my 'Dev-July-2020' branch is a temporary one like that and is used for normal development work for the main version (small changes and bugfixes). These will be eventually be merged back to the trunk and the branch would be deleted. The source in the trunk is pretty much stable and the tags are snapshots of the trunk.

Does my repository layout look decent or are there things that I should definitely change/reconsider?

1 Answer 1

0

The use of trunk, branches/<branch> and tags/<tag> in SVN is just convention. In the repository they are in the end all folders with a copy of the source code and history as it existed at a certain point in time. There is nothing in SVN to stop you from making further commits to a tag.

In a similar vein, giving branches a limited lifespan is also a convention and there is nothing wrong with breaking that convention if you think you have a good reason.

That said, the name BETA suggests to me that it contains a state of the game prior to version 1.0.0. That also suggests it becomes effectively a tag after version 1.0.0 is released.

For testing experimental features at later stages, I would go for a feature-branch model where each feature is developed and tested on its own branch, after which you make a decision to either include the feature in the game (merge the branch) or to abandon it (delete the branch without merging).

2
  • Thanks for the answer. To elaborate more on my post: For the beta version I use a different server that is available to the players. The features that get added to the beta branch also get added to this beta server, similar to how stuff that gets added to the trunk and tagged makes it to the main version. "That said, the name BETA suggests to me that it contains a state of the game prior to version 1.0.0." What should I change about my repository layout in this case?
    – mrmc
    Commented Jul 10, 2020 at 11:05
  • @mrmc, just renaming BETA to something else (maybe "experimental"?) would take away the connotations that people have with the term "beta", but that is up to you. Do don't have to change anything. Commented Jul 10, 2020 at 11:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.