문제

at the moment we use Subversion for source control, but all of the merging work for our releases is done manually. We release several times a year, so create a branch for each release. All work from earlier branches must make it into later ones. Work on later branches must not make it into earlier ones (this is in our contracts). I believe this is known as the Promotional Model.

I think the following diagram best illustrates our desired workflow, with branches being created whenever work starts on a new release, and changes flowing from earlier branches to later ones.

|
1
|
|\
| \ 
| 2 
3 | 
|\| 
4 |
| |\
5 | \
| 6 |
| | 7
|\|\|
| |\|
8 9 |\
| | | \
|\| | 10
x |\| |
  | |\|
  | | | 

a b c d
  • Would this model work smoothly using Subversion despite the lack of a meaningful trunk?
  • Would automated merge tracking work for the updates from earlier branches to later ones?
  • Would it be ok to close/delete/ignore a branch (in this example release branch 'a') without reintegrating?
  • Would it be ok to create feature branches off of each release branch, and would merge tracking work for these? (They would follow the recommended create/merge/reintegrate model.)

Edit - add more info.

The reason that the traditional Unstable Trunk model might not be suitable is illustrated by the following diagram. Features for each release are not necessarily completed in order of release (some customers can be slow to confirm requirements). We want to propagate changes from earlier branches to later ones as soon as possible.

    a
    |
    1
    |
   b|\ a
    | \ 
    |  2
    3  |
    |  |
    4  |
  b/|c |
  / 5  |
 |  |  6
 7  |  |
 b  c  a

In this case, we want feature 2 (completed in branch a) in branch b, but as this is a child-to-parent merge, and therefore not supported by Subversion, it will have to be done manually. Similarly, feature 6 would have to be manually merged twice. I anticipate this to be a relatively slow and error-prone process compared to automatically tracked merges.

도움이 되었습니까?

해결책

LINQ 쿼리를 사용할 수 있습니다.

    var subWeb = (from w in web.Webs where w.Title == YourTitle select w).SingleOrDefault();
    if (subWeb != null)
    {
      // if found true
      return true;
    }
.

더보기 : http://www.daniellewis.me.uk/2013/10/02 사용/ ya-sub-site-2013-net-she -sub-site- exists-using-he-sub-site-ex-sif-a-a-sub-site- exists-model-csom/#sthash.z7ebixoz.dpuf

다른 팁

You say:

All work from earlier branches must make it into later ones. Work on later branches must not make it into earlier ones (this is in our contracts)

Here, if we replace branches with releases (I doubt your clients know or care about "branches"), we get:

All work from earlier releases must make it into later ones. Work on later releases must not make it into earlier ones (this is in our contracts)

I don't see anything in that requirement to suggest the very complex branching scheme you are proposing - you can do this with the classic "unstable trunk" style of development. Either you have more requirements you haven't told us about, or you are over-engineering.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top