• Blog
  • Info Support
  • Career
  • Training
  • International Group
  • Info Support
  • Blog
  • Career
  • Training
  • International Group
  • Search
logo InfoSupport
  • Latest blogs
  • Popular blogs
  • Experts
      • All
      • Bloggers
      • Speakers
  • Meet us
  • About us
    • nl
    • en
    • .NET
    • 3D printing
    • Advanced Analytics
    • Agile
    • Akka
    • Alexa
    • Algorithms
    • Api's
    • Architectuur
    • Artificial Intelligence
    • ATDD
    • Augmented Reality
    • AWS
    • Azure
    • Big Data
    • Blockchain
    • Business Intelligence
    • Chatbots
    • Cloud
    • Code Combat
    • Cognitive Services
    • Communicatie
    • Containers
    • Continuous Delivery
    • CQRS
    • Cyber Security
    • Dapr
    • Data
    • Data & Analystics
    • Data Science
    • Data Warehousing
    • Databricks
    • DataOps
    • Developers life
    • DevOps
    • Digital Days
    • Digital Twin
    • Docker
    • eHealth
    • Enterprise Architecture
    • Event Sourcing
    • Hacking
    • Infrastructure & Hosting
    • Innovatie
    • Integration
    • Internet of Things
    • Java
    • Machine Learning
    • Microservices
    • Microsoft
    • Microsoft Bot Framework
    • Microsoft Data Platform
    • Mobile Development
    • Mutation Testing
    • Open source
    • Pepper
    • Power BI
    • Privacy & Ethiek
    • Python
    • Quality Assistance & Test
    • Quality Assurance & Test
    • Requirements Management
    • Scala
    • Scratch
    • Security
    • SharePoint
    • Software Architecture
    • Software development
    • Software Factory
    • SQL Server
    • SSL
    • Start-up
    • Startup thinking
    • Stryker
    • Test Quality
    • Testing
    • TLS
    • TypeScript
    • Various
    • Web Development
    • Web-scale IT
    • Xamarin
    • All
    • Bloggers
    • Speakers
Home » The how and why behind TF203015: <file> has an incompatible change, while unshelving a shelve set
  • The how and why behind TF203015: <file> has an incompatible change, while unshelving a shelve set

    • By Marcel de Vries
    • .NET 13 years ago
    • .NET 0 comments
    • .NET .NET
    The how and why behind TF203015: <file> has an incompatible change, while unshelving a shelve set

    *Moved to: http://fluentbytes.com/the-how-and-why-behind-tf203015-file-has-an-incompatible-change-while-unshelving-a-shelve-set/

    Today one of our developers wanted to unshelve a shelve set he created earlier that morning and got the error message TF203015.

    I must say I also was quite confused about what an “incompatible change” would be and why it could not unshelve the files for me. What can be incompatible? Is the file corrupted, other encoding,…?!? At first I thought this might have been caused by the fact that this developer was running Visual studio 2008 + TFS 2010 compatibility GDR against our upgraded 2010 TFS server. Since many internal changes where made in the 2010 release I feared something had gone wrong with the shelve set on the server.

    So I I tried to unshelve the shelve set he created. And that just went fine. So why did he get the message and I didn’t ?

    So what do you do, you search the internet for this error, but at this point there is not that much to find about this issue. So I luckily could ask the question at the always helpful TFS champs. And they immediately asked me if my developer already had a pending change on the sources he wanted to unshelve in his workspace. And yes that was exactly the case. So why would a pending change in the same workspace create an incompatible change you might ask yourself? Normally you would just resolve this with a merge conflict dialog you might think.

    That is correct. It appears that merging of conflicting changes that come from shelve sets is still a thing to build by the TFS team and is still on the product backlog. So when you have conflicting changes in the shelve set, you just can’t unshelve anymore. And this has been around since 2005, so nothing new in this release.

    So to give you an idea about the scenario, this is how to reproduce the issue:

    • Edit a file a.cs
    • Create a shelve set and name it “test” that contains the change
    • Now create a new workspace (you can omit this step and progress in the same workspace, but it seemed less obvious to me this also is an issue with another workspace)
    • Edit the file a.cs again and change something that normally would be easy to merge (add a line of comment to another function or something similar)
    • At this point try to unshelve shelve set “test”
    • You will now get the following error: TF203015: The item $/<teamproject>/main/solution/project/a.cs has an incompatible pending change

    So whenever you run into this issue, take a look at the output window of Visual studio and switch it to the “Source Control – Team Foundation Server”. there you will find the details about the file that has an incompatible change. And incompatible, just means it has a merge conflict with the current workspace and VSTS has no support yet for you to show you the merge resolution screen for this issue. so what to do when you run into this issue and you want to keep the changes in your local workspace?

    Well just create an empty workspace and unshelve there, no conflicting changes, so it will unshelve fine there. then merge by hand using your favorite merge tool.

    [Edit 13/06/2010]

    As an alternative you can also use the power tools that includes the command tfpt unshelve.(http://msdn.microsoft.com/en-us/vstudio/bb980963.aspx) Then you can get the conflict resolution screen to apear and you are able to merge the file as you would have expected.

    this looks as follows:

    (assuming a working folder = d:temptestTipCalculatorTipCalculator)

    Open a visual Studio command prompt

    Enter the following command: tfpt unshelve

    For my server this shows the following dialog:

    image

    Now I select the shelveset test 1 again and get the following dialog:

    image

    So now I can select my file and then get the conflict resolution dialog:

    image

    this now gives me the option to do the merge and voila, it unsheleved 🙂

    So when you run into this issue again, you know the power tools are your friend.

    Hope this helps,

    Cheers,

    Marcel

    Follow my new blog on http://fluentbytes.com

    Share this

Marcel de Vries

View profile

Related IT training

Go to training website

Related Consultancy solutions

Go to infosupport.com

Related blogs

  • What's new in C# 12, a developer perspective

    What's new in C# 12, a developer perspective Tom van den Berg - 3 weeks ago

  • Continuous validation - Ensuring Availability and Resil…

    Continuous validation - Ensuring Availability and Resil… Tom van den Berg - 1 month ago

  • Continuous validation - Ensuring Availability and Resil…

    Continuous validation - Ensuring Availability and Resil… Tom van den Berg - 1 month ago

Data Discovery Channel

  • Data+AI Summit 2023

  • Blijf je Azure cloud omgeving de baas met CloudXcellence

  • MLOps

Nieuwsbrief

* verplichte velden

Contact

  • Head office NL
  • Kruisboog 42
  • 3905 TG Veenendaal
  • T +31 318 552020
  • Call
  • Mail
  • Directions
  • Head office BE
  • Generaal De Wittelaan 17
  • bus 30 2800 Mechelen
  • T +32 15 286370
  • Call
  • Mail
  • Directions

Follow us

  • Twitter
  • Facebook
  • Linkedin
  • Youtube

Newsletter

Sign in

Extra

  • Media Library
  • Disclaimer
  • Algemene voorwaarden
  • ISHBS Webmail
  • Extranet
Beheer cookie toestemming
Deze website maakt gebruik van Functionele en Analytische cookies voor website optimalisatie en statistieken.
Functioneel Always active
De technische opslag of toegang is strikt noodzakelijk voor het legitieme doel het gebruik mogelijk te maken van een specifieke dienst waarom de abonnee of gebruiker uitdrukkelijk heeft gevraagd, of met als enig doel de uitvoering van de transmissie van een communicatie over een elektronisch communicatienetwerk.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistieken
De technische opslag of toegang die uitsluitend voor statistische doeleinden wordt gebruikt. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door uw Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
De technische opslag of toegang is nodig om gebruikersprofielen op te stellen voor het verzenden van reclame, of om de gebruiker op een website of over verschillende websites te volgen voor soortgelijke marketingdoeleinden.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
Voorkeuren
{title} {title} {title}