What is the path limit on VSTS? I know the old versions of TFS had a 256 character limit but not sure about VSTS and can't find the info here. Here's a link <-- it mentions the tfs 256 limit but doesnt talk about VSTS path limit, only account names, work items etc..
thank you!
The version control path length restrictions are both for VSTS and TFS.
In the article Naming restrictions and conventions (except the part Team Foundation Build (on-premises TFS only)), all the restrictions are available for TFS and VSTS.
As it list the products and versions which are suitable for :
There are two Version Control System integrated in VSTS and TFS: Git and TFVC (Team Foundation Version Control).
And for the part Team Foundation version control, it shows the restrictions for TFVC VCS (both available for TFS and VSTS).
So if you are using TFVC to manage your source code, you can find the restrictions listed in the article.
If you are using Git to version control your source code, the restriction as below:
File and folder name length restriction: 255 characters.
File and folder name can not contain any of the following characters " / : < > \ * ? |
Tag name length restriction: 380 characters
File and folder name can not contain any of the following characters ~ ^ [ * \ : ?
Windows imposes the 256 character limit, so if you are running against windows-based agents, you will definitely still run into that. Linux agents will have a larger path size, though the file name is limited to 255.
Related
We currently use TFS 2010 for controlling some of our .NET projects.
I'd like to know whether it's possible to provide some kind of versioning within TFS for a specific folder on a network share for example.
The idea being is to control release packages (zips) for every release we do. As this bit is done by some other person (not technical and he doesn't use Visual Studio or any tech tool), it'd be great to streamline the process of versioning the zip files for every release.
Technically speaking:
We've setup this folder \servername\releasezips and every time I drop a file named release.zip, it would automatically commit (push) this file to the TFS server (no comments needed) and furthermore, once the file contents change (meaning that someone dropped another version of the file in there), the system would again push the file to TFS, but with a following version.
Is this possible somehow? I've seen somewhere that I could programatically have some extra control over TFS, using REST API.
Thanks in advance!
Thanks for your tips, Daniel and PatrickLu-MSFT.
As I said, I did want something straighforward, some kind of control similar to what box.com provides, where you associate a local folder on your machine with the cloud. So, once you drop files in the local folder, the small box client synchronizes it along with the cloud. If access the box.com, I can see the different versions of that specific file.
So what I did was, I've created a small .NET app to monitor the folder and any new files dropped in there would get checked in to our TFS server, by using the tf command line (of course ignoring work items or comments).
So, progamatically within the .NET app, it builds up the tf required commands for processing and versioning the recently dropped files and therefore, executes them.
By the way, I could have used the Team Foundation API in order to do the same job, but it would demand way more effort.
Cheers
According to your description, you want to commit/check in files during the build/release pipeline.
It's not a recommend way to check-in generated build files and modify source code during a build pipeline. If you really want to do this, you could edit the build workspace files and use tf commands in custom activity and call the powershell eq:
cd $env:BUILD_SOURCESDIRECTORY
$TFFile = Get-Item "C:\Program Files (x86)\Microsoft Visual Studio 1x.0\Common7\IDE\TF.exe"
$tfOutput = [string]( & $TFFile.FullName checkin /noprompt /override:"***NO_CI*** New version is $newVersion." /comment:"***NO_CI*** New version is $newVersion." 2>&1)
Another way is installing TFS Power Tool and use the Windows PowerShell Cmdlets to check in the files. Refer to this link for more details: PowerShell and TFS: The Basics and Beyond
For version the dropped files, you could take a look this similar question: TFS Build Copy to Versioned Folder
Basically, you have to customize build definition with custom activity and based on build.buildnumber variable to generate/create .zip file.
I am trying to evaluate VS Code instead of VS professional version for my work.
Can I use VS code with TFS for daily operations like?
Create work space?
Get latest source code?
Code checkin?
Shelve set?
Code review request ?
etc?
As jessehouwing mentioned most of that are supporeted except for the Code Review bits.
You need to install Visual Studio Team Services Extension for Visual Studio Code
The following are the current features supported by the extension:
Execute all basic version control actions such as add, delete, rename, move, etc.
View local changes and history for your files
Include and Exclude changes (and move files between the two states)
Merge conflicts from updates
Check-in and update local files
Associate work items to check-ins
Provides an integrated TFVC Output window
Support for a TFS proxy
Supports workspaces created with Visual Studio (via tf.exe) or the JetBrains IDEs and Eclipse (via the Team Explorer Everywhere Command
Line Client)
To start using the TFVC features, review the documentation and
check out the TFVC Source Code Control for Visual Studio Code
video which shows you how to configure and use the TFVC features.
The extension supports TFVC across Windows, macOS and Linux (with
separate configuration instructions for macOS and Linux; see
video).
If you’ve never used the extension before, we also have a
walkthrough to get you started.
Source here : Official Release of TFVC Support for Visual Studio Code
I have migrated some projects from TFS to Visual Studio Team Services (formerly Visual Studio Online) following these steps. After that I realized that I have an extra partition (with the same size and free space as the Windows partition) with a lot of folders and files created during de migration. Most of folders and files are empty. Only some of them have source files (migrated files).
Folder name examples: i10_7, i10_null, i11_7, i11_null, i20_14, i20_null, i21_14, i21_null,...
File name examples: 1457433532708.txt, 1457433533840.txt, 1457433534475.txt, 1457433534476.txt,...
So is it safe to delete the files? How can I remove this partition?
Yes, the OpsHub Visual Studio Migration Utility creates the Virtual Drive(s) to map to the folder containing TFS Workspace. This is done to overcome the 256 character in file path limit of the operating system.
Whilst the migration is running, DO NOT delete these folders/drive. Once, the migration is complete, the drive is automatically un-mapped. (You can then delete the contents if you wish to do so)
We're using Team Foundation Service instead of a local TFS.
Our solution was created on Visual Studio 2012.
My problem is now that we want all assemblies to have the same version number (this part is already solved by using a CommonAssemblyInfo.cs that is linked into all projects).
The issue I'm facing right now is that we need the tfs changeset number at the last digit of the assembly version (e.g. 1.0.0.4711 where 4711 is the changeset number).
I've found several examples, but none of them worked for me.
And yes, I especially searched here on stackoverflow a lot.
I also have to admit that I've never looked into the MSBuild scripts...
Can anyone please give me a hint on how to accomplish this?
Is it for example possible to use the MSBuild Extension Pack on Team Foundation Service (not local TFS) and if, how to do that?
As always, time is my worst enemy...
Note that from 2010 Tfs employs Windows workflow for building the package the workflow calls msbuild for compiling the projects only - while its possible to pass changeset this way to msbuild its rather more hops.
Following deals with your problem, however the linked solution is more complex that needed:
Can assembly version been automatically updated with each TFS 2010 Build?
This is one of best series of tutorials on the custom build activities, the author is on stack as well i believe, one specificly about versioning
http://www.ewaldhofman.nl/post/2010/05/13/Customize-Team-Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx
In short you need a custom activity to run before compilation on source files, find all CommonAssemblyInfo.cs files, feed this list to your custom activity, it modifies the values inside with passed value of full version number or only the changeset and optionaly check in the change (probably not since your changeset will be out of sync then).
You can also take a look at https://tfsbuildextensions.codeplex.com/ set of activities there is TfsVersion activity among them, at the very least it will provide examples.
Functionality need for this should be available through Team Explorer and source control - The Custom activity assemblies and build templates usually are located in folder in your team project root - the location of this folder is defined for build controller you can change this through team explorer build section.
Changeset is available from value BuildDetail.SourceGetVersion, not sure if this was fixed/changed in 2012 however there were 2 issues about this value in 2010
Its doesnt respect GetVersion override in default build template - you will manualy need to update if override is used
When running latest build (no override) it will get the last changeset number from tfs - depending on your branches this may not be the same as 'last' changeset for the branch of build. You will either have to live with this, provide overrides for each build or implement activity that checks branch history for last changeset value and overrides it again.
It should be noted that GetVersion should be able to accept any sourcespec version - changeset, date, label etc. I havent played around with this enough to provide more details to you.
Colin Dembovsky wrote a great overview of doing version embedding using the new pre-build script setting in TFS 2013 build definitions.
The Changeset number is easily accessible within the pre-build process in the environment variable TF_BUILD_SOURCEGETVERSION. I was able to use this to embed the Changeset value in our binaries using a script based on Dembovsky's work above. (I used Perl, not powershell, so you probably don't want to see it ;-)
This approach doesn't require any changes to the build workflow which makes it a big win for me.
I've used Wintellect's solution - MSBuild-only, no TFS magic needed. I also added to the auto-generated CSharp file:
[assembly:AssemblyInformationalVersion("$(BuildNumber)")]
So I get the TFS build number.
we have 2 branches of code in tfs 2010 such as enhancement and support
Most of the developers work on enhancement as well as support.
Now, We want to create two different work spaces and map it to one local folder as we have all our virtual directories mapped to that local folder and dll registered from that location.
However, TFS does not allow this!! So what is the alternative? Also
mapping to two different local folders will occupy more spaces on each individual developer's machine.
This is not supported. As Stuart mentioned in his question - TFS is not able to decide where to do check-in, if you try to check-in your changes on one file mapped from two branches.