version control Questions

Dear Experts,

Need your expter advice in setting up a new repository structure for our product development.

We have a software product, with 15-compnents and each of the 15-components have at least 15-modules.

Earlier our admin guy had configured the Stash server for us.

The current setup is like this:
Our IT engineer had created 15-Projects in stash/bitbucket server for 15-Components
For each of the 15-modules in a given component, a individual repository was created

Thus we have around 225 + 25(for additional module), totally 250 repositories to manage.

Individual developers creates their feature branches on their respective repositories and merge them to their production branch in their respective repo, after release.

Feature branches gets created only on a particular module in a particular repository which is getting affected for that feature.

If a developer is working on a feature, which is affecting 10-modules, this developer creates a branch in each of the repository which is affectting this module. Thus he creates 10-branches for a given feature in 10-different repositories.

In this way, we have many small teams working on many individual repositories corresponding to their module. Packages are made from each of the individual repository and delivered to our infra team, who deploys the product on our hosted servers.

Since source is spread all over the place, there is no baselines/tags created for this product. Also managing these many repositories by a single CM admin is too much to handle.

As a CM admin, I’m thinking of suggesting this structure for this product.
Create a single Project (Project A) in Stash 
Create a single repository (Repo A ) in this project 
Create a folder for each Component, i.e 15-Folders, under the repository root 
(i.e Project A - /RepoA/Component1/Module1 Module2 ……Module15
/RepoA/Component2/Module1 Module2 ……Module15
/RepoA/Component3/Module1 Module2 ……Module15
:
:
/RepoA/Folder15/Module1 Module2 ……Module15)

In this way we’ll have single repository to handle and CM admin will create branches and developers will just make changes and commit their code.

Appreciate your response on these lines:

1. Is my suggestion to host a single repository for all the components correct? 
is this achievable, what is your opinion on this repository structure?

2. We are developing a multi-tier, web application using PHP, Python, and Java Script. This application gets deployed on multiple servers. By using this single repository structure, do you see any issue or obstacle at a later stage on the line of development? What precautions should we take, if any?

3. Since the application is multi-tier, developers actually develop the application in the development environment (where multiple servers are setup to create a production sort of environment) using the shared work area in the environment, at times there are chances of one developer overwriting the others' changes.

What is your opinion on this kind of development?

4. Using this repository structure, how do we resolve the conflicts? Whenever a developer tries to push/pull the changes, he/she might face multiple conflicts not only from their changes. Should we call all developers to assemble at one desk and resolve the conflicts or is there any other better way?

5. We have many set of features getting developed on different branches. At times, many components are not modified in the some branches, still we just package them and release. What is your advice on this?

As CM admin, I see lots of advantages in managing branches and merges in a single repository structure. What do you suggest for our kind of development.

I have read many articles on web about the advantages/disadvantages of having single/multiple repositories. My Dev team is not conveienced with my approach.  Thus I need answers to all my(actually their's) question in one place.

Would appreciate your detailed response for each of the above issues that we are facing.  Your assistance in this regard will be very much appreciated.

Eagerly awaiting your response.

 

Thanking you,

Deepak.

In practice I have two new features that are under change control and that I want to be able to track them as separate changes from the first change and until the features are deployed to production.
 
How do I handle the fact that they both need to make the same changes to one part of the code? If I let one of them carry the change but then decides later on to back out of that “Feature” then I  will break the other feature that where depending on the same change. 
 
I am curious to know of any good advice or best practices to use i CM when dealing with those type of scenarios. 
 
We use MS TFS as version control and status accounting tool, but I am really interested in learning about best practice in general.
 
Thanks Johan.

By Paul Perry - December 18, 20151 Answer

Hello Everyone,

I'd like to understand how companies using SVN, TFS, Git, GitHub perform backing out production deployments from two perspectives, your re-deployment method but more importantly, how are you indicating in your respective repo that if code was rolled back, what are you doing internally with your SCM tool to force a message to developers that code was backed out.

Thanks

Paul Perry

By sadie - October 27, 20152 Answers

Hi guys,

I need some expert guidance on svn's branch management.

Currently, in my company where I recently joined is to create a new branch for every bugfix. Developers create branch, fix the code, test it and port the changes into the main branch. We've several main branches per customer which never merges, only certain fixes are ported in the other customer branches if required and I do not think it is a good way of branching. The fix branches are going to increase over time and will become unmanagiable and untrackable. Do you guys have any better ideas on how to plan/manage these branches?

Thanks.

Is anyone aware of a publication where guidlines are provided for helping determine the number of administrators needed for supporting a specific SCM Tool given a number of developers?

Project to be performed in 2 equally complex phases, each phase to deliver to production about 4 months apart.  The project has been identified as 8.0.  Our baseline naming convention says change the first number for a major enhancement/upgrade.  If the first baseline is named to coincide with the project (8.0), then what name/identifier do I give to the baseline when phase 2 is ready?

Our goal is to acquire information about which merges are trivial, manual, or automatic. Currently, we have clearmrgman, and while it has a save feature, we'd like to do this without involving a GUI or human interaction. 

 

Is there any way to acquire this information about merges from the command line? The solution does not necessarily have to use ClearCase. 

 

Thanks in advance.

Hello

 

We have Subversion 1.8 (installed at linux centos).

We do backup using Backup tools that do backup from all filesystem. If we have problems, we can restore from backup just directories relatred to a defined repository that had problems.

 

It is a bad solution? If yes, why?

 

Should we use svn dump or we could keep doing backup using our method?

best regards

Hi
Wondering if anyone has come accross this issue? (It's not a show stopper but has got me scratching my head)

I am trying to "migrate" some Items from an existing Dimensions Product into a new Product.
NB I am in essence cloning "part" the old Product.
I do actually want to create new CI/items rather than variants of the existing CI/Items.
The new CI/Items will all be V1 with no history etc in the new Product.

So pretty simple steps:
1) Get copies of the Items I want
2) Load them into new Product
3) Prove they are identical *see below
4) Get on with my life.......

*Below
As I did a direct get from old and load to new I "know" they are identical I am just "documenting" the proof for the end user.

I have set up a few scripts to:
a) Run diff/compares between the fetch from New Dimensions (O/S directory structure) vs fetch from Old Dimensions (O/S directory structure) and saved report (They are identical :-) )
b) Run detailed directory listings showing dates, sizes etc and produced a compariosn report. (They are identical :-) )
and finally:
c) Produced seperate output from Dimensions listing all (relevant) Dimensions metadata and produced a comparison report......... THEY ARE DIFFERENT!!!

For some files (a very small subset) the Dimensions metadata for "CHECKSUM" and "FILES SIZE" don't match!!
(Revised Date (UTC) DOES match).....

I have loaded the offending files a few times and they always produce the same values for this metadata (& the file size value ALWAYS matches the O/S file size).

So basically the "old" values for this metadata is "wrong"!!!

I have no way of reproducing this (as all experiments now produce "correct" values)....

The only thing I can think is that this is in some way connected to the various character translations between UNIX and Windows (as all the files "could" have been via UNIX at some point).

As mentioned it's not a show stopper (as I KNOW the files are OK) but if anyone has any ideas/experience I'd like to know!!

Thanks 

Hi. I have been looking around for new references to the software CA Harvest SCM and until now have not been able to identify this solution in recent independant studies (for example, Gartner Magic Quadrant, Forrester Wave, or others).  Does anyone know why  Harvest is not included in the recent versions of these reports?

 

 

Regards,

Pages

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.