Recommend a good SVN layout for my project

I read the SVN red-bean book and explore how people compose their SVN repositories, we are thinking of using SVN for our product, so I would like suggestions on building repositories.

The product is a desktop application consisting of a number of .exe, graphics, etc. The current source layout looks something like this:

Program 1
Program 2
Program 3
Common Code
Graphics

It is important to note that sometimes in program 1, source files can also be used, which are also in program 2. The common code and graphics are used by all programs.

The main question: if all our users are currently using the 2009 version of the product, and we will need to support it, release service packs, etc., and also start developing version 2010 at the same time, if the connecting lines contain changes for release 2009 or 2010 release?

trunk (where 2010 development happens)
  Program 1
  Program 2
  Program 3
  Common Code
  Graphics  
branches
  v2009
    Program 1
    Program 2
    Program 3
    Common Code
    Graphics 
tags
  2009 (read only)
  2009 SP1 (read only)
  2009 SP2 (read only)

Will the recommended circuit be higher? Or should the magistrate contain the development of 2009 and the development of 2010 in some kind of testing branch?

The above layout means that the developer wants to work on Program 1, they still need to check the entire project, including Program 2, Program 3.

EDIT, more questions

Thanks for the answer. Another question:

4 6 , 2009 , , 2010 . , 2009 2010 ? 2009 2010 ?

+3
8

(2010) (2009). , , ( 2010) (2011) .

. , 2011 2010 . , . " " .

, , , , (), , , , , , , , .

, , , . , - . , , .

+2

. , . , .

+2

, , Subversion, "development". ( , ). , , .

+2

. ( , ) . , release (v2009, ). , , , .

, - . .

, , , . , . , , , . , . , , .

, , . , , . .

+1

Trunk , , . , , , , , trunk/tags/branches. , , , .

0

2010 , . 2010 2009 , .

, svn: externals Common Code Graphics, , , .

0

. .

.

, , , svn: externals folowwing:

CommonCode:
  trunk
  branches
  tags

MyProduct
  trunk
    Dependencies -> CommonCode/trunk[rev. x]
  ...

"" .

0

For what you should do with GIT, create a branch for each major release. Thus, if any error appears in the main release, you can switch back to the branch, and then cherries pic various commits in your GIT repository to your release branch.

0
source

Source: https://habr.com/ru/post/1715136/


All Articles