[{"data":1,"prerenderedAt":434},["ShallowReactive",2],{"tag-teamfoundationserver":3},{"tag":4,"articles":24},{"id":5,"title":6,"body":7,"description":14,"extension":15,"img":16,"meta":17,"name":18,"navigation":19,"path":20,"seo":21,"stem":22,"__hash__":23},"tags\u002Ftags\u002Fteamfoundationserver.md","Teamfoundationserver",{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"Team Foundation Server (often abbreviated to TFS) is a Microsoft product that provides tools and technologies designed to help teams collaborate and orchestrate their efforts to finish projects or create a product. It enables DevOps capabilities covering the entire application lifecycle","md","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"teamfoundationserver",true,"\u002Ftags\u002Fteamfoundationserver",{"description":14},"tags\u002Fteamfoundationserver","CEZSgtqpsn_JuGubePK9lUUC42p0YpLGI5j3KuMwrSY",[25,176,240,300],{"id":26,"title":27,"author":28,"body":29,"createdAt":165,"description":166,"extension":15,"img":28,"meta":167,"navigation":19,"path":168,"seo":169,"stem":170,"tags":171,"updatedAt":165,"__hash__":175},"articles\u002Farticles\u002Fsource-control-options-git-and-team-foundation-server-tfs.md","Source Control Options GIT and Team Foundation Server (TFS)",null,{"type":8,"value":30,"toc":160},[31,36,53,57,80,83,90,100,115,119,126,129,139,149,152],[32,33,35],"h3",{"id":34},"git-is-a-distributed-version-control-system","Git is a Distributed Version Control System",[37,38,39,47],"ul",{},[40,41,42,46],"li",{},[43,44,45],"strong",{},"Each developer"," has the entire repository, including the entire change history on his\u002Fher local machine",[40,48,49,52],{},[43,50,51],{},"The developer"," can see changeset history offline or commit (check-in) changes offline to his local repository",[54,55,56],"p",{},"Since the entire repository is local, we do everything locally. This includes, but not limited to:",[37,58,59,62,65,68,71,74,77],{},[40,60,61],{},"Committing changes (Check-in)",[40,63,64],{},"Viewing commit history",[40,66,67],{},"Creating a new branch",[40,69,70],{},"Merging branches",[40,72,73],{},"Moving to a different branch",[40,75,76],{},"Deleting branches",[40,78,79],{},"Reverting older commits",[54,81,82],{},"Yes we do have to Check-in or 'Push' our changes to the remote repository.",[54,84,85,86,89],{},"'Check-in' within Git is divided into ",[43,87,88],{},"2 parts",":",[54,91,92,95,96,99],{},[43,93,94],{},"Commit"," and **Push\n",[43,97,98],{},"Developers can now commit locally","whatever they want – Ugly code, comments, and work in progress. The other developers won’t get those changes as the commit is performed entirely local on their respective PC. When the code is ready for the team, they can Push the code changes to the remote repository.  This workflow gives the developer addition management of changes and when\u002Fhow things are pushed into the central repository for team consumption.",[54,101,102,103,106,107,110,111,114],{},"The ",[43,104,105],{},"Staging","concept …. this is like ",[43,108,109],{},"Included","\u002F",[43,112,113],{},"Excluded","changes in TFS. Only staged files will be committed. Again, why? (well say locally modified configuration files can stay out of source control)",[32,116,118],{"id":117},"branches-and-merges","Branches and Merges",[54,120,121,122,125],{},"In TFS\u002FTFSVC, ",[43,123,124],{},"Branch","will create a new directory with a copy of all files and directories of the parent Branch. For a developer to work on that new branch, they will have to copy that directory to his hard disk, essentially having another folder with the source code.",[54,127,128],{},"With Git, each branch is not a copy of the files from the parent branch. Instead, it’s simply a pointer to the Commit in the parent Branch from where we created our new branch.  With Git when working on a different branch, we tell Git “Move to another branch” (Checkout command) and Git will change our working area to match the desired branch. Again, there is a performance benefit as this entire action is performed locally.  Git already contains all the branches on the local machine.",[54,130,131,134,135,138],{},[43,132,133],{},"Merging"," is a lightweight operation. We can merge any branch to any branch. We can merge the entire difference or a specific Commit. Git will find the “Base” Commit where the branches split and allow us to resolve conflicts (This is the same as in TFS)",[136,137],"br",{},"\nA good practice with Git is to create a new branch to work on a big feature. Eventually, merging that branch to the master branch and discarding the new branch entirely.",[54,140,141],{},[142,143,148],"a",{"href":144,"target":145,"rel":146},"https:\u002F\u002Fgit-scm.com\u002Fbook\u002Fen\u002Fv2\u002FGit-Branching-Branches-in-a-Nutshell","_blank",[147],"noopener","Reference\u002FTutorial on GIT branching",[54,150,151],{},"TFS\u002FTFVC is Centralized Version Control System",[37,153,154,157],{},[40,155,156],{},"the developer has a copy of the repository file system on his machine",[40,158,159],{},"offline actions like commits (check-ins)  and seeing history are impossible since the local repository can’t save “changes”",{"title":11,"searchDepth":12,"depth":12,"links":161},[162,164],{"id":34,"depth":163,"text":35},3,{"id":117,"depth":163,"text":118},"2020-01-21","Git has been gaining momentum lately and continues to be the path forward for all organizations (including Microsoft) as the source control of record.  What are the differences, benefits...read more...",{},"\u002Farticles\u002Fsource-control-options-git-and-team-foundation-server-tfs",{"title":27,"description":166},"articles\u002Fsource-control-options-git-and-team-foundation-server-tfs",[172,18,173,174],"sourcecontrol","visualstudio","git","z27ZBLeINXv4DaOx5aV-Ihtuz5pCxHT3joVG2EXl5Z0",{"id":177,"title":178,"author":28,"body":179,"createdAt":232,"description":233,"extension":15,"img":212,"meta":234,"navigation":19,"path":235,"seo":236,"stem":237,"tags":238,"updatedAt":232,"__hash__":239},"articles\u002Farticles\u002Fteam-foundation-2018-tfs-net-core-command.md","Team Foundation 2018 TFS .NET Core Command",{"type":8,"value":180,"toc":230},[181,184,187,190,202,216],[54,182,183],{},"Using command dotnet push I was wanting to only publish nuget packages that included *.nupkg but also exclude *.symbols.nupkg pattern.",[54,185,186],{},"I figured okay, I would use option to negate a particular path. Using the help guidance",[54,188,189],{},"The pattern to match or path to nupkg files to be uploaded. Multiple patterns can be separated by a semicolon, and you can make a pattern negative by prefixing it with '-:'.",[54,191,192,193,199,201],{},"Example: ",[43,194,110,195],{},[196,197,198],"em",{},".nupkg;-:",[196,200,110],{},".Tests.nupkg",[54,203,204],{},[142,205,207],{"href":206},"\u002Farticles\u002Fimages\u002Fimage_636764987271419965.png",[208,209],"img",{"style":210,"title":211,"src":212,"alt":211,"width":213,"height":214,"border":215},"border: 0px currentcolor; display: inline; background-image: none;","image","\u002Farticles\u002Fimages\u002Fimage_thumb_636764987272194490.png",240,118,0,[54,217,218,219,221,222,229],{},"The issue is that this is incorrect.  If you wish to pattern negative prefix with ! (with semi-colon for make delimited) such as",[136,220],{},"\n$(Build.ArtifactStagingDirectory)\u002F",[196,223,224,225,228],{},".nupkg",[43,226,227],{},";!","$(Build.ArtifactStagingDirectory)\u002F",".symbols.nupkg",{"title":11,"searchDepth":12,"depth":12,"links":231},[],"2018-10-30T12:18:47.314Z","The dotnet pack command builds the project and creates NuGet packages. Careful with configuration and specifically negative file pattern matching documentation(incorrect).",{},"\u002Farticles\u002Fteam-foundation-2018-tfs-net-core-command",{"title":178,"description":233},"articles\u002Fteam-foundation-2018-tfs-net-core-command",[18],"_MZCZimFHc2iJo_tCF1mvmKFsazly7CiZo31fvpUqzE",{"id":241,"title":242,"author":243,"body":244,"createdAt":293,"description":28,"extension":15,"img":290,"meta":294,"navigation":19,"path":295,"seo":296,"stem":297,"tags":298,"updatedAt":293,"__hash__":299},"articles\u002Farticles\u002Ftfs-build-2015-not-transforming-web-config.md","TFS Build 2015 Not Transforming Web.Config","[object Object]",{"type":8,"value":245,"toc":291},[246,249,252],[54,247,248],{},"The following is the solution that addressed this problem. While setting up a project for TFS build, I came across issues with the build system not transforming my web.config to different configurations. i.e. I want my web.config to be transformed with web.config.release upon build\u002Fpublish. I found the following solution that worked for me.",[54,250,251],{},"Within Visual Studio, unload the web project (in this case I am working with a web application), scroll to the bottom and add the following task. On the build server you can ensure that the path is valid and it is referencing the most appropriate version. The UsingTask imports the TransformXml method from Microsoft.Web.Publishing.Tasks.dll",[253,254,257,268,269,281,282],"using-task",{"taskname":255,"assemblyfile":256},"TransformXml","$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v14.0\\Web\\Microsoft.Web.Publishing.Tasks.dll",[258,259,262],"target",{"name":260,"condition":261},"ApplyTransform","Exists('Web.$(Configuration).config')",[263,264],"transform-xml",{"source":265,"transform":266,"destination":267},"web.config","Web.$(Configuration).config","Web.config"," \nThen within the BeforeBuild Target add ",[258,270,272,273],{"name":271},"BeforeBuild"," \n",[274,275,277,278],"exec",{"command":276},"attrib -r Web.config"," ",[279,280],"calltarget",{"targets":260},"   Exec removes the read-only attribute from the web.config file and the CallTarget will ApplyTransform target \n",[142,283,286],{"style":284,"href":285},"display: none;width:65%","\u002Farticles\u002Fimages\u002Fopen-live-writer-7e779723aa75_11131-tfs2_2.png",[208,287],{"title":288,"style":289,"border":215,"alt":288,"src":290},"tfs2","border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px","\u002Farticles\u002Fimages\u002Fopen-live-writer-7e779723aa75_11131-tfs2_thumb.png",{"title":11,"searchDepth":12,"depth":12,"links":292},[],"2017-05-29T20:59:16.1568524Z",{},"\u002Farticles\u002Ftfs-build-2015-not-transforming-web-config",{"title":242,"description":28},"articles\u002Ftfs-build-2015-not-transforming-web-config",[18],"lOC0JMfw8ZGxSAnqXj8dgfW8SGFqPE_xBIFss2cj8pg",{"id":301,"title":302,"author":28,"body":303,"createdAt":425,"description":426,"extension":15,"img":427,"meta":428,"navigation":19,"path":429,"seo":430,"stem":431,"tags":432,"updatedAt":425,"__hash__":433},"articles\u002Farticles\u002Fkeep-nuget-packages-out-of-tfs-source-control.md","Keep Nuget Packages Out of TFS (Source Control)",{"type":8,"value":304,"toc":423},[305,317,320,323,326,329,374,377,380,383,386,389,399,402,411,419],[54,306,307],{},[142,308,311],{"style":309,"href":310},"display: none;","\u002Farticles\u002Fimages\u002Fopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-tfs3_2.png",[208,312],{"style":313,"title":314,"src":315,"alt":314,"width":213,"height":316,"border":215},"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;","tfs3","\u002Farticles\u002Fimagesopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-tfs3_thumb.png",135,[54,318,319],{},"Historically, we had kept our Nuget packages in Team Foundation Server (version control). Due to the recent consistency and stability of Nuget I am starting to move towards excluding Nuget packages from TFS Source control. They just are not required anymore and Visual Studio can very quickly restore from the internet packages locally on your workstation\u002Fbuild server very quickly now.",[54,321,322],{},"So, how do we setup both Visual Studio and TFS to stop putting packages in TFS? Donovan Brown published a post describing the steps.",[54,324,325],{},"a) At the solution level (at same location where your sln file is located) create a folder named .nuget (do this from within Source Control Explorer)",[54,327,328],{},"b) Create a file named nuget.config and put this within the .nuget folder. This file should have the following content.",[330,331,335],"pre",{"className":332,"code":333,"language":334,"meta":11,"style":11},"language-xml shiki shiki-themes github-light github-dark","\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n\u003Cconfiguration> \n    \u003Csolution> \n        \u003Cadd key=\"disableSolutionControlIntegration\" value=\"true\">\u003C\u002Fadd>\n    \u003C\u002Fsolution>\n\u003C\u002Fconfiguration>\n","xml",[336,337,338,346,351,356,362,368],"code",{"__ignoreMap":11},[339,340,343],"span",{"class":341,"line":342},"line",1,[339,344,345],{},"\u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n",[339,347,348],{"class":341,"line":12},[339,349,350],{},"\u003Cconfiguration> \n",[339,352,353],{"class":341,"line":163},[339,354,355],{},"    \u003Csolution> \n",[339,357,359],{"class":341,"line":358},4,[339,360,361],{},"        \u003Cadd key=\"disableSolutionControlIntegration\" value=\"true\">\u003C\u002Fadd>\n",[339,363,365],{"class":341,"line":364},5,[339,366,367],{},"    \u003C\u002Fsolution>\n",[339,369,371],{"class":341,"line":370},6,[339,372,373],{},"\u003C\u002Fconfiguration>\n",[54,375,376],{},"c) Create a file .tfignore and put at the solution level also. Within this text file put a single word packages",[54,378,379],{},"So at this point, you have a directory .nuget with the nuget.config file within it, and also a text file .tfignore at the solution level. Remove any packages that have been put in source control previously and check in.",[54,381,382],{},"At this point, close Visual Studio and restart.",[54,384,385],{},"Build the solution locally and all should be good, do a check in and if everything is good the packages folder is not checked in. Tada Essentially, we are putting things in place to tell Visual Studio not to check in packages AND we are telling TFS not to check in the packages folder.\nBoth the config file and the .tfignore files are needed.",[54,387,388],{},"My solution folder looks like",[54,390,391],{},[142,392,394],{"href":393},"\u002Farticles\u002Fimages\u002Fopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-image_2.png",[208,395],{"style":313,"title":211,"src":396,"alt":211,"width":397,"height":398,"border":215},"\u002Farticles\u002Fimages\u002Fopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-image_thumb.png",436,104,[54,400,401],{},"Reference:",[54,403,404,407],{},[142,405],{"title":406,"href":406},"http:\u002F\u002Fdonovanbrown.com\u002Fpost\u002FHow-to-keep-packages-folder-out-of-TFVC",[142,408,406],{"href":406,"rel":409},[410],"nofollow",[54,412,413,416],{},[142,414],{"title":415,"href":415},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=BfKcTX8NxAQ",[142,417,415],{"href":415,"rel":418},[410],[420,421,422],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":11,"searchDepth":12,"depth":12,"links":424},[],"2017-02-24T07:48:53.130Z","Historically, we had kept our Nuget packages in Team Foundation Server (version control).  Due to the recent consistency and stability of Nuget I am starting to move towards excluding Nuget packages from TFS Source control.  They just are not required anymore and Visual Studio can very quickly restore from the internet packages locally on your workstation\u002Fbuild server very quickly now.","\u002Farticles\u002Fimages\u002Fopen-live-writer-keep-nuget-packages-out-of-tfs-source-co_8714-tfs3_thumb.png",{},"\u002Farticles\u002Fkeep-nuget-packages-out-of-tfs-source-control",{"title":302,"description":426},"articles\u002Fkeep-nuget-packages-out-of-tfs-source-control",[18],"7RYOC6n0dlrpGmS5Zj2PwVk1brKlHnvXsy7VkN0m97w",1781574760482]