Quantcast
Channel: Version Control Guide (ex-Branching & Merging)
Viewing all 283 articles
Browse latest View live

Updated Wiki: Home

$
0
0

Project Description

The purpose of this project is to build some insightful and practical guidance around branching and merging with Visual Studio Team Foundation Server by the Visual Studio ALM Rangers . The new guidance builds upon the previous release with some updates to the core materials as well as guidance on additional scenarios that include guidance for sharing resources in Team Foundation Server via branching, Database/BI scenarios, baseless merging, and new features in Team Foundation Server such as local workspaces..  The new release focuses on Hands on Labs and includes lots of lessons learnt from the community Q&A.

Visual Studio Team Foundation Server Branching and Merging Guide

Branching and merging of software is a very large topic. It is an area where there is a lot of maturity in the software industry. This Ranger solution focuses on applied and practical examples of branching that you can use right now. The guide includes discussions around branching concepts and strategies but also focuses on practical hands-on labs.

Visual Studio ALM Rangers

This guidance is created by the Rangers who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.

image[18] image[19] image[20]

What is in the package?

The content is packaged in separate zip files to give you the choice of selective downloads:

  • Guidance contains scenario based practical guidance, frequently asked questions and quick reference posters.
  • Hands-on Lab contains the HOL that provides a walkthrough of the planning, based on the guidance
  • HOL Package includes a setup part which prepares and configures your environment for this lab

Team

  • v1
    • Bijan Javidi, Bill Heys, Bob Jacobs, Brian Minisi, Clementino de Mendonca, Daniel Manson, James Pickell, Jens Suessmeyer, Lennart Jansson, Mathias Olausson, Matt Velloso, Micheal Learned, Neno Loje, Oliver Hilgers, Sin Min Lee, Taavi Koosaar, Tony Whitter, Willy-Peter Schaub
  • v2
    • Anil Chandra Lingam, Bill Heys, Brian Minisi, Clementino de Mendonca, Daniel Manson, Jahangeer Mohammed, Jansson Lennart, Jelle Druyts, Jens Suessmeyer, Krithika Sambamoorthy, Matthew Mitrik, Michael Fourie, Micheal Learned, Neno Loje, Oliver Hilgers, Sin Min Lee, Stefan Mieth, Taavi Koosaar, Tony Whitter, Willly-Peter Schaub

How to submit new ideas?

The recommended method is to simply post ideas to the community or to contact the Rangers at http://msdn.microsoft.com/en-us/teamsystem/ee358786.aspx.

Feedback

Post comments on the Discussions page.

image232


Released: v1 - Visual Studio 2010 (Spanish) (Oct 05, 2010)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Francisco Fagas* http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/09/17/introducing-the-visual-studio-alm-rangers-francisco-fagas.aspx, Microsoft Most Valuable Professional (MVP), localized the Branching Guidance for the Spanish communities, based on http://tfsbranchingguideiii.codeplex.com/releases/view/38849.

Release Notes
The Spanish guidance is available in a xps-only (default) or complete package. The complete package contains the files in xps, pdf and Office 2007 formats.

2010-10-05 Refreshed guidance, aligned with English version.

Updated Release: v1 - Visual Studio 2010 (Spanish) (Oct 05, 2010)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Francisco Fagas* http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/09/17/introducing-the-visual-studio-alm-rangers-francisco-fagas.aspx, Microsoft Most Valuable Professional (MVP), localized the Branching Guidance for the Spanish communities, based on http://tfsbranchingguideiii.codeplex.com/releases/view/38849.

Release Notes
The Spanish guidance is available in a xps-only (default) or complete package. The complete package contains the files in xps, pdf and Office 2007 formats.

2010-10-05 Refreshed guidance, aligned with English version.

Released: v1 - Visual Studio 2010 (Japanese) (Jun 27, 2012)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Rex Tang (湯川 智彦) http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/12/08/introducing-the-visual-studio-alm-rangers-rex-tang.aspx, Takaho Yamaguchi (山口 孝穂), Hirokazu Higashino (東野 紘和), localized and reviewed the Branching Guidance for the Japanese communities, based on http://vsarbranchingguide.codeplex.com/releases/view/38849.

The Japanese guidance is available in AllGuides and Everything packages. The AllGuides package contains guidances in PDF file format, while the Everything package contains all files in PDF and Office 2007 file formats, including HOL Lab files.

2012-06-27 Published guidance, aligned with English version.

Updated Release: v1 - Visual Studio 2010 (Japanese) (Jun 27, 2012)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Rex Tang (湯川 智彦) http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/12/08/introducing-the-visual-studio-alm-rangers-rex-tang.aspx, Takaho Yamaguchi (山口 孝穂), Hirokazu Higashino (東野 紘和), localized and reviewed the Branching Guidance for the Japanese communities, based on http://vsarbranchingguide.codeplex.com/releases/view/38849.

The Japanese guidance is available in AllGuides and Everything packages. The AllGuides package contains guidances in PDF file format, while the Everything package contains all files in PDF and Office 2007 file formats, including HOL Lab files.

2012-06-27 Published guidance, aligned with English version.

Released: v1 - Visual Studio 2010 (German) (Oct 28, 2010)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Boris Wehrle* http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/22/introducing-the-visual-studio-alm-rangers-boris-wehrle.aspx, Thorsten Dralle http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/05/introducing-the-visual-studio-alm-rangers-thorsten-dralle.aspx and Sven Hubert http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/20/introducing-the-visual-studio-alm-rangers-sven-hubert.aspx Microsoft Most Valuable Professional (MVP), localized the Branching Guidance for the German communities, based on http://tfsbranchingguideiii.codeplex.com/releases/view/38849.

Release Notes
The German guidance is available in a complete package. The complete package contains the files in pdf and Office 2007 formats.

2010-08-01 Published guidance, aligned with English version.

Updated Release: v1 - Visual Studio 2010 (German) (Oct 28, 2010)

$
0
0

Important: This download has been created using ALM Ranger bits by the community, for the community. Although ALM Rangers were involved in the process, the content has not been through their quality review. Please post your candid feedback and improvement suggestions to the Community tab of this Codeplex project.

Boris Wehrle* http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/22/introducing-the-visual-studio-alm-rangers-boris-wehrle.aspx, Thorsten Dralle http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/05/introducing-the-visual-studio-alm-rangers-thorsten-dralle.aspx and Sven Hubert http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/07/20/introducing-the-visual-studio-alm-rangers-sven-hubert.aspx Microsoft Most Valuable Professional (MVP), localized the Branching Guidance for the German communities, based on http://tfsbranchingguideiii.codeplex.com/releases/view/38849.

Release Notes
The German guidance is available in a complete package. The complete package contains the files in pdf and Office 2007 formats.

2010-08-01 Published guidance, aligned with English version.

Source code checked in, #94876


Source code checked in, #94877

$
0
0
Upgrade: New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link: http://go.microsoft.com/fwlink/?LinkId=254563

Commented Issue: No Source Code [17895]

$
0
0
<p>Since this is a CodePlex project you should make the raw Word and image documents available so that we can modify them to fit the needs of our separate teams. </p>
<p>&nbsp;</p>
<p>For example, if my company is using the advanced branching plan, then I would want to remove the basic and standard plans from the documents I give them. Likewise, I would want to add my own section on version numbers that apply specifically to my project..</p>

Comments: ** Comment from web user: mfreidge **

Please consider to create document templates, that different teams can use to describe their own branching plans.

New Post: Publish the guide as HTML under documentation tab

$
0
0
It will be good to Publish the guide as HTML under documentation tab to allow read it directly without downloading

New Post: TFS Folder Structuring for DLL's

$
0
0

Thanks to Rangers' tutorials, papers, and Powerpoints, and my encouragement, my group recently started using TFS.  Following your tutorials, we are using branching (underway) and merging (in the early stages).  At the same time, our main project is up to 27 projects of source code, and has grown fragile and difficult to install.  There's really no reason to compile all that source code everytime, either.  We want to move more fully to referencing .dll's instead, but I want to get it right the first time, so I seek your wisdom.

In the Ranger's tutorials, I observed that they included folders /MAIN/Src, /MAIN/Docs, and /MAIN/Bin.  The use of /MAIN/Src is obvious, but I have questions about how you use /MAIN/Bin. Other than including it as a folder your tutorials did not use it.

1.  When you compile, do you use a post-build event to copy the .dll to /MAIN/Bin (or /DEV3/Bin if you happen to be in that branch)?

2.  Do you have /MAIN/Bin/Debug and /MAIN/Bin/Release, or do you simply have /MAIN/Bin/*.dll which means the last version in wins?

3.  If you use /MAIN/Bin/Debug and /MAIN/Bin/Release, do other projects reference the specific dll of interest, or is referencing smart enough to reference the correct version according to that project's version?

4.  We are on VS2010, TFS 2010 and Framework 4.0.  I want to upgrade ASAP.  Do VS2012, TFS 2012 and Framework 4.5 affect the answers to the above in anyway?

Any other thoughts you may have or references that come to mind would be helpful.  Might the Rangers or anyone else  have tutorials that make active use of /MAIN/Bin, for example?

Don S.            (originally sent to a Ranger, but worth a broader discussion)

New Post: TFS Folder Structuring for DLL's

$
0
0
I'm too tired to answer all those so I'll pick one.
So why do you recompile all the source code every time? What is the context of your compiling? Are you compiling manually in a solution in Visual Studio or via an automated build on the TFS server?
Regards,
David

On Thu, Oct 4, 2012 at 12:40 PM, DonStuber <notifications@codeplex.com> wrote:

From: DonStuber

Thanks to Rangers' tutorials, papers, and Powerpoints, and my encouragement, my group recently started using TFS. Following your tutorials, we are using branching (underway) and merging (in the early stages). At the same time, our main project is up to 27 projects of source code, and has grown fragile and difficult to install. There's really no reason to compile all that source code everytime, either. We want to move more fully to referencing .dll's instead, but I want to get it right the first time, so I seek your wisdom.

In the Ranger's tutorials, I observed that they included folders /MAIN/Src, /MAIN/Docs, and /MAIN/Bin. The use of /MAIN/Src is obvious, but I have questions about how you use /MAIN/Bin. Other than including it as a folder your tutorials did not use it.

1. When you compile, do you use a post-build event to copy the .dll to /MAIN/Bin (or /DEV3/Bin if you happen to be in that branch)?

2. Do you have /MAIN/Bin/Debug and /MAIN/Bin/Release, or do you simply have /MAIN/Bin/*.dll which means the last version in wins?

3. If you use /MAIN/Bin/Debug and /MAIN/Bin/Release, do other projects reference the specific dll of interest, or is referencing smart enough to reference the correct version according to that project's version?

4. We are on VS2010, TFS 2010 and Framework 4.0. I want to upgrade ASAP. Do VS2012, TFS 2012 and Framework 4.5 affect the answers to the above in anyway?

Any other thoughts you may have or references that come to mind would be helpful. Might the Rangers or anyone else have tutorials that make active use of /MAIN/Bin, for example?

Don S. (originally sent to a Ranger, but worth a broader discussion)

Read the full discussion online.

To add a post to this discussion, reply to this email (vsarbranchingguide@discussions.codeplex.com)

To start a new discussion for this project, email vsarbranchingguide@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com




--
David Kreth Allen
612-374-1119

New Post: TFS Folder Structuring for DLL's

$
0
0

Thanks for taking the time to answer, David.  The existing structure evolved over time.  We use it but others before us created it.  As we all have moved to TFS, it has proven unwieldy.  So I seek a better structure, and hope for input to avoid pitfalls.  We are not far enough along to do automated builds, so yes, if we compile the solution we compile all the code. 

I saw folder /MAIN/Bin is Ranger tutorials, and have thought more about it.  Are you suggesting it is populated by automated builds?  I would guess it is checked into TFS, an advantage over project /bin's. 

Don Stuber
860-355-0239

 

 

New Post: TFS Folder Structuring for DLL's

$
0
0

Unlike the branch plans which are documented in a very coherent and detailed way in the latest Rangers branching guidance, I'm not aware of a similar quality of documentation written by somebody that describes how to handle the /MAIN/Bin. I'm sure that somebody has written about this sort of thing, I just do not know where to refer you . But I will certainly share my own personal experience with binaries.
Let's start with what you already know.  You know that it is annoying to have to wait for a compilation of 27 projects in order to test the latest version of your application. First, you do realize that there are a variety of compilation commands accessible from Visual Studio? If you change a line in your application which is at the very top of the call stack, you can use the build option and it will only compile the module that changed in any modules in that solution that are dependent upon it. In contrast, if you choose the rebuild option, it will build all of the projects regardless of whether any of them have changed. 

Second, you can create multiple solutions and save them with separate solution files. Each of these solutions can consist of a different arrangement of relevant projects.  We used to use this trick in several circumstances. Our entire solution consisted of over 50 projects. And occasionally we would get tired of how long it took to build. In certain circumstances, we would be focusing on just a few of the projects. We used automated testing aggressively with those projects, and so we had a solution that just contained that small number of projects. It was much faster and easier to work on. The downside to that approach was that all of the applications that depended on these lower DLLs, might have their behavior changed with all of our changes. So we could introduce regression into our dependent applications and modules and not know right away. In contrast, when we were working in the large cumbersome solution, we could make a change to the lower DLL and run all of our automated tests. If we caused regression, we could identify it and correct quickly.  But keep in mind for lower DLLs that are often widely used utilities,  it is uncommon that you are going to test every possible dependent application within the normal development cycle on your workstation. Those kinds of regression effects can be uncovered with the continuous integration server that runs automated tests for all software within your entire portfolio.  Thus, there is no one best way to do it. Each approach has its trade-offs.


You may have already known both of these tricks listed above: the incremental compilation option in Visual Studio, and the partial solution approach. But since you were complaining about building all 27 projects, I thought that I should start out by pointing out the obvious ways to minimize the pain of building 27 projects. Even if you know these two tricks, maybe some other developers who will benefit from the advice.

Now let's talk about the Bin.directory you see in some branching models. What I'm going to describe now is just one way to use it. Not the only way or necessarily the best way. In some cases, we would develop and test code in the module, and as part of a carefully controlled and tested release, we would take a copy of the binary output after testing and validation and we would place it in this special /MAIN/Bin folder. Then, any project or solution in the MAIN branch could refer to /MAIN/Bin to reference custom and third-party DLLs. Because these projects are referencing a DLL rather than another project, you would not even include the project that corresponded to the referenced DLL in your solution. There are pluses and minuses to this approach.  So now, if you take a lot of those lower modules and capture their carefully tested binaries and place them into this shared area,/MAIN/Bin, and refer to them within your application project, then you are not having to recompile those dependencies each time.  This makes your application solution much smaller and as a result, it compiles much more quickly. But now you have given up the ability to rapidly incorporate changes from those other projects into your application solution. It all depends upon the separation and responsibilities of the various modules and the way in which you are changing them in the normal course of a development cycle. If you were to jump around a lot and work one moment on code in a much lower level module, in three minutes later you are working on code way up in the application part of the stack, it would be annoying to have to rebuild the lower solution, take its binaries, place them in the shared area, and then go work on the other part of the application. In that scenario you would be better off just relying on the incremental compilation to speed things up as much as possible and have all the projects in one solution is you do today.
But if you are referring to the utility module that is relatively stable, or perhaps one that changes but that is changed by another team for different purposes, then you can probably just refer to it as a DLL. Then on a periodic basis, the suppliers of those modules can update them with enhanced functionality, and push those updated versions into the shared area, where your solution will pick it up the next time you get the latest version. But in honesty, we did not use that very often for our custom-made software. We would typically reserve the /MAIN/Bin folder for third-party DLLs or open source libraries that we compiled. Those open source libraries did not change very often. We usually would get a version and then keep it fairly stable.


If you're going to do this binary thing, then you need to be aware that there are a whole host of complicated options that I'm not going to describe much because I'm not an expert in them. But there are ways to tell your project to use a specific version of a DLL. In that way if a supplier team publishes a newer version of their DLL, and you are not interested in taking it, you can simply have your application use the older DLL. One of the ways to facilitate this is to the use of the global assembly cache. When a DLL is loaded into the global assembly cache, it can have several versions of a DLL that differ based on the bit with of their compilation (32-bit vs 64-bit) as well as the version number.  This increases the complexity of your deployment process, but it gives you some of the advantages that the.net framework provides for version selectivity.

In conclusion, there is not just one way to use the /MAIN/Bin folder in your source tree. There are many many different ways to utilize this folder, and solution architects design the one that provides the optimal convenience and safety for the anticipated development scenarios.  But I think I've given you enough illustrations that you begin to get the idea of what some common approaches to using it might be.


New Post: Lots of "Done" development branches. How to clean up the clutter?

$
0
0

I'm having difficulty finding any guidance on this topic.

We have several development branches that are "Done". They have served their purpose and will not accept new changes or be integrated anymore. Now what? I need their history, but I'd like to shove them into another folder to get them out of the way.

Do you recommend moving these branches to a "archive" folder to get them out of the way? Is there a better solution?

Thanks!

New Post: Lots of "Done" development branches. How to clean up the clutter?

$
0
0

You could move them to reduce "clutter" in your Source Code Explorer, but existing branch visualizations, branch/merge relationships, change history, etc will not change.

Regards,

Bill Heys, ALM Ranger

New Post: Lots of "Done" development branches. How to clean up the clutter?

$
0
0

Thank you for the quick reply!

I have ultimately decided to delete the branches. Here is how I got there. See what you think.

My goal:

  • Remove the "clutter" of multiple development branches in a safe manner
  • Keep version history

I found more information and did some of my own testing on our test TFS instance and found these three possibilities:

  • Cloaking the branch
    • Pros - Hides the unneeded branches and keeps history
    • Cons - Specific to a workspace. Every developer would have to do this themselves.
  • Move branch to an "archive" folder
    • Pros - Clears up the clutter for everyone
    • Cons
      • Not easily reversed (just in case)
      • Creates a complicated changeset (a line for each file and folder)
      • Comes with its own trickiness if you ever have to merge to it (best discussion here Renaming branches in TFS 2010)
  • Delete the branch
    • Pros
      • very easy
      • easily reversed
      • creates a simple changeset (one line in it)
    • Cons
      • The word "Delete" is scary
      • Any others?

What do you think?

If I find out more I'll try to post. Here are some more links discussing the topic, but not a lot of extra information there:

What's the best way to deal with dead branches in TFS?

What about "closing" a dev branch - response from Bill! ;-)

Orphaned Branches in TFS

New Post: Lots of "Done" development branches. How to clean up the clutter?

$
0
0

I forgot to mention two other benefits to deleting a branch (as Bill alluded to above):

  • Branch no longer shows up as a merge option in the "Merge Wizard" window
  • Branch does not show up in Branch Hierarchy

I found that even though the deleted branch does not show up in the Branch Hierarchy diagram, if you track a changeset that originated in a delete branch, that branch will display while tracking the changeset.

Updated Wiki: Home

$
0
0

Project Description

The purpose of this project is to build some insightful and practical guidance around branching and merging with Visual Studio Team Foundation Server by the Visual Studio ALM Rangers . The new guidance builds upon the previous release with some updates to the core materials as well as guidance on additional scenarios that include guidance for sharing resources in Team Foundation Server via branching, Database/BI scenarios, baseless merging, and new features in Team Foundation Server such as local workspaces..  The new release focuses on Hands on Labs and includes lots of lessons learnt from the community Q&A.

Visual Studio Team Foundation Server Branching and Merging Guide

Branching and merging of software is a very large topic. It is an area where there is a lot of maturity in the software industry. This Ranger solution focuses on applied and practical examples of branching that you can use right now. The guide includes discussions around branching concepts and strategies but also focuses on practical hands-on labs.

Visual Studio ALM Rangers

This guidance is created by the Rangers who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.

image[18] image[19] image[20]

What is in the package?

The content is packaged in separate zip files to give you the choice of selective downloads:

  • Guidance contains scenario based practical guidance, frequently asked questions and quick reference posters.
  • Hands-on Lab contains the HOL that provides a walkthrough of the planning, based on the guidance
  • HOL Package includes a setup part which prepares and configures your environment for this lab

Team

  • v1
    • Bijan Javidi, Bill Heys, Bob Jacobs, Brian Minisi, Clementino de Mendonca, Daniel Manson, James Pickell, Jens Suessmeyer, Lennart Jansson, Mathias Olausson, Matt Velloso, Micheal Learned, Neno Loje, Oliver Hilgers, Sin Min Lee, Taavi Koosaar, Tony Whitter, Willy-Peter Schaub
  • v2
    • Anil Chandra Lingam, Bill Heys, Brian Minisi, Clementino de Mendonca, Daniel Manson, Jahangeer Mohammed, Jansson Lennart, Jelle Druyts, Jens Suessmeyer, Krithika Sambamoorthy, Matthew Mitrik, Michael Fourie, Micheal Learned, Neno Loje, Oliver Hilgers, Sin Min Lee, Stefan Mieth, Taavi Koosaar, Tony Whitter, Willly-Peter Schaub

How to submit new ideas?

The recommended method is to simply post ideas to the community or to contact the Rangers at http://msdn.microsoft.com/en-us/teamsystem/ee358786.aspx.

Feedback

Post comments on the Discussions page.

image232

Viewing all 283 articles
Browse latest View live




Latest Images