I'm currently working on project with multiple developers, and would like to hear some experiences from other teams on how you maintain version control within the team.
I have seen a couple posts here on the forum mentioning the use of a git and a presentation by Gregory on the topic, but would like to learn more about how your workflows are set up for this.
Thanks ahead of time!
Distributed application design and version control)
-
- Posts: 1796
- Joined: December 5th, 2011, 11:27 pm
- Location: Washington, DC
Re: Distributed application design and version control)
We (the Census Bureau) have worked with a couple statistical offices on projects, and we've used git in those cases. It has worked well, whether hosting publicly (e.,g., on GitHub) or privately (e.g., on GitLab). If people work at different times, then you'll have almost no problems using git because you won't have to deal with complicated merges. However, we found that people unaccustomed to using revision control software would often sit on changes and not commit changes in a timely manner, which then led to merge trickiness.
CSPro files are only partially designed in a friendly manner for revision control systems. For example, if you make a change in the dictionary, inserting an item somewhere, then you will get many changes, as the start position of many items will be change. If you have to resolve conflicts between two dictionary changes, that can be difficult. The same applies to form files.
Other files can be modified and merged very easily, such as the question text, message, and logic files.
I would encourage you to use git but to have a rule that only one person can modify the dictionary or the forms at one time, and make sure people commit frequently.
CSPro files are only partially designed in a friendly manner for revision control systems. For example, if you make a change in the dictionary, inserting an item somewhere, then you will get many changes, as the start position of many items will be change. If you have to resolve conflicts between two dictionary changes, that can be difficult. The same applies to form files.
Other files can be modified and merged very easily, such as the question text, message, and logic files.
I would encourage you to use git but to have a rule that only one person can modify the dictionary or the forms at one time, and make sure people commit frequently.
Re: Distributed application design and version control)
In addition to what Greg said, when working on the dictionary and form files on teams we found that merges were minimal if we assigned certain records and certain forms to different people. The issue with the start positions changing only causes merge conflicts if two people both modify the same record so if one person is assigned all work on the housing and another is assigned the migration record then you avoid most merge problems.
Re: Distributed application design and version control)
Thanks Greg and Josh! We will definitely try to experiment with the models you suggest.
We are fortunately a small team, so I hope that a centralized workflow would be not be too difficult for us to manage (at least in theory
).
We will take things slow and start introducing the easiest items to merge first while documenting the merge issues along the way. Hope we can share some successes!
We are fortunately a small team, so I hope that a centralized workflow would be not be too difficult for us to manage (at least in theory
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
We will take things slow and start introducing the easiest items to merge first while documenting the merge issues along the way. Hope we can share some successes!