What is the best way to integrate TFS version control - xcode

Working on implementing TFS throughout our organization. It is easy to integrate with .NET projects and any platform that uses Eclipse or a derivative of Eclipse for editing.
What's the best way to use TFS version control with Xcode (now that I find out we need to write some iPhone apps)?

Xcode integration is something that we at Teamprise have been looking into a lot. One of the main problems for us is that Apple does not provide a version control API that we can hook into to add a new version control system to Xcode - for integrated version control it is either the systems that Apple provide access to or nothing at the moment.
That said, we do have a number of customers who develop in Xcode for TFS. They either use Teamprise Explorer (which is a standalone GUI client to TFS compiled as a Universal Binary) or they have macros inside Xcode that perform basic check-out and get operations in-conjunction with the TFS command line (tf). It's obviously not the ideal experience but acceptable for them. The stand-alone GUI has the advantage that you can do all the work item tracking stuff there as well and integrate this with your check-ins.
Sorry if this is a very "marketing" type answer - just trying to let you know what our current customers do with Xcode. If you want more details around the macro approach then let me know.
Hope that helps,
Martin.

Few week earlier announced Git-tf by codeplex could do the job.

One way would be to use the Team Foundation System client under Windows in VMWare, and check out (or whatever TFS calls it) your sources to a directory on your Mac that's shared with the virtual machine. It also looks like Teamprise has a Team Foundation client for Mac OS X built atop Eclipse that would be worth looking into.
That said, I'd very strongly encourage you to use a natively cross-platform source code management system like Subversion or Perforce instead of a platform-specific silo like Team Foundation System for your company's soruce code, especially since you're going to be doing multi-platform development.
While you're not likely to share code between a .NET application and an iPhone application, having full cross-platform access to things like design documents can be really important. Mac OS X 10.5 and later include Subversion, Perforce is readily available, and both Perforce and Subversion are natively supported by the Xcode IDE. Subversion in particular is also more likely to be familiar to experienced Mac and iPhone developers you might bring onto your projects as you ramp up.

Perhaps SVNBridge will do the trick, it's an open source used at CodePlex (Microsoft's Open Source Hosting). Check it out here: http://www.codeplex.com/SvnBridge
I have limited experience with it other than using it briefly to connect to CodePlex.

Follow this links, its raeally helpful:
https://www.visualstudio.com/get-started/cross-platform/share-your-xcode-projects-vs
After that Check-in your existing xCode project code into TFS
On your Mac, download and extract www.microsoft.com/en-us/download/details.aspx?id=30474. I placed it in /users/{myuseraccount}/git-tf
Open Terminal and run the following commands
export JAVA_HOME=/Library/Java/Home
export PATH=$PATH:$JAVA_HOME/bin:/git_t
export PATH="/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/":$PATH
export PATH="/Users/{myuseraccount}//Git-Tf/":$PATH
change the working directory to your xCode project folder:
e.g.: cd “/users/{myuseraccount}/documents/xCode Projects/testproject1/”
In terminal fire commond:
- git remote add origin url//companyName.visualstudio.com/DefaultCollection/_git/xyz
and than
git push -u origin --all
It'll directly push your project into Visual studio TFS server..!!!!

The biggest problem with this is that Xcode only runs on OS X and TFS client tools only run on Windows. If you're host operating system in OS X and you have a Windows virtual environment running locally (like Parallels or VMFusion) then you could use Team Explorer or the command-line tools to work with the repository.
But this is a lot of work just to use a really dated version control system. If you don't have to use TFS I would probably use SVN or something else with native OS X support.

Related

how to use tfs source control on an Apple Mac

Hi I made the mistake of experimenting with an Apple Mac just before the lockdown and now im stuck with it. Now I am trying to work on a tfs project in os as both bootcamp and parallels drivers drain the battery too fast.
As TFS is not supported in visual studio for Mac I have been trying to get it to work in visual studio code. I have installed the extension, but can't get tee clc working (I think its no longer supported)
It appears that tee clc is not compatible with the latest version of oracle.
I have tried installing oracle 10 and folowing this fix here but I get an error java.lang.module.FindException: Module java.xml.bind not found
can anybody point me in the right direction. I feel like im missing something as this should not be so hard.
Is TEE clc the right tool to be using. If not how should this be done now?
Thanks
We do not have TFS source control, assume you are talking TFVC source control. You are right, it is not support with Visual Studio Mac right now. But if you are using Git, it's available in Visual Studio Mac.
More details please take a look at our official doc here-- Does Visual Studio for Mac support Team Foundation Version Control?
Unsupported workarounds for TFVC
While Visual Studio for Mac doesn't officially support TFVC, the rest
of this guide provides some workarounds to work with TFVC on macOS. If
you're using TFVC for version control today, here are some solutions
you can use to access your source code hosted in TFVC:
Option 1. Use Visual Studio Code and the Azure Repos extension, for a graphical UI
Option 2. Connect to your repo using the Team Explorer Everywhere Command Line Client (TEE-CLC)
So, Tee clc is the right tool to be using.
tee-clc (can be installed with HomeBrew), which depends on Java 6, 7,
or 8 (see How to install Java 8 on Mac -- as of this writing, Java 9
will not work.)
Make sure you have installed java 8 on your Mac machine. You could also take a look at replies in this question: Connect VS code with TFS on mac It provide step by step guide of installation and configuration.
You could use https://github.com/microsoft/team-explorer-everywhere CLI tool for TFS support on Mac, or using older JetBrains IDE with TFS plugin,
for example I am using Rider 2019.3.4 with TFS plugin(already obsolete).
Screenshot of JetBrains TFS:

Better Version Control than TFS

I am working on TFS for Version Controlling since one year. It was good with Visual Studio but some days ago my PC Crashed and the Code on my local Machine Which were not Checked in Destroy... Then I have worked again which took much time and my project got late. Now I decide to move from TFS to another better Version controlling then TFS which handle code locally as well as on the server.
please advise me if anyone use good version control tool for Visual Studio. Thanks in advance
Just like Edward commented TFS is not a version control system. Which is a product that provides source code management (either with Team Foundation Version Control or Git), reporting, requirements management, project management, automated builds, lab management, testing and release management capabilities. It covers the entire application lifecycle, and enables DevOps capabilities.
TFS supports two types of version control: Git and Team Foundation Version Control (TFVC). One centralized and one distributed. As for which version control system should you use, you could take a look at this thread: Choosing the right version control for your project
For your case, you should be checking in frequently or setup some sort of backup system to avoid mistakes like this. Or set an alarm clock, memos to remind you to commit code to version control. If the files are gone from your file system, they're gone.

Run VS-project on OSX

I want to join as a team member doing web design work in an ASP.NET/C# project.
The project is setup in Windows environment using TFS for source control.
However, I work on OSX and would love to be able to work in the project without having to setup a developing environment using Parallels or so.
Visual Studio Code seemed promising and I installed a TFS plug-in, but I have no idea how to connect to the project and run it on a http://localhost.
Is there a good way to do this?
(I am more of a designer than a tech person so please bear with me and my stupid questions :))
Thanks!
Visual Studio Code is certainly one way to view code in C#, but you can't really run it unless you're in .NET Core. I think you may be able to debug with Mono, so that might be worth a look first to see if your application is supported through that route. I've heard that Visual Studio will be available cross-platform sometime in the future (which will be amazing), but for now, the IDE is only available for Windows.
You can try using MonoDevelop which looks like a C# IDE for Mac (http://www.monodevelop.com/) and there's also Xamarin Studio (https://www.xamarin.com/studio). See this StackOverflow thread.
As for TFS, if you're using Git, you can easily connect to TFS using the server as a remote for your local repo (or clone the TFS instance onto your local machine), or you can use the command-line for Team Explorer Everywhere.

Storing Windows SDKs in source control?

The question is at the end - let me start by posing the context:
One of the problem we are facing at work when using Visual Studio is to make sure that everybody on the team is using the same version of the SDKs.
A typical problem would be to have somebody use a different Direct X SDK version resulting in a different behavior of the code, or somebody upgrading to a more recent Platform/Windows SDK in order to use some new API and having the code fail on other's programmers machines if they still use the previous version.
A way we used to solve the issue for other middleware has been to put the whole set of libraries, include files, tool chains, etc... in our source control system, and have our projects to use these so nobody has to install anything.
We also managed to do that with earlier version of the Direct X SDK, but we always ran into issues with the Windows/Platform SDK due to the close links between the SDK and the toolchain.
Since we now have to support both VS2010 and VS2012, and have to support from Windows XP to Windows 8 targets, we have to support v100, v110 and v110_xp toolsets.
This means that we need all the associated compilers and the corresponding SDKs, both on our developer machines and build systems: This is getting ridiculously costly to maintain, specially considering that random windows updates and .net framework releases routinely tend to break msbuild.
So the question is:
Is it possible to have Visual Studio to use non installed toolsets and SDK and instead having it use whatever is available in some folder out of the normal VS installation locations?
Bonus question: If it is doable, is it possible to do that without having to change any locally installed configuration file on the machine - ie: Have all that in the solution/project or property sheets - so if we change the structure on the source control system we don't have to update every single machine?
Thanks :)
This sounds too complicated, given how complex some of these tool installations are. I would solve this problem by investing in some PowerShell scripts that look at the installed tools and tool paths and "police" the installations. It would be relatively easy to check for installed versions of everything, including patches and updates. You can run those nightly, or as part of a build. Also, you can compare aspects of different installations, such as the tool versions installed on a developer box with your build server.
This would give you 90% of the value for 10% of the pain.
The problems you describe are not solved with your approach. What you actually need is a build server and a definition of done including using binaries built with the build server. You also need a test suite as part of the build definition with some invariants related to the build environment used.

Are there any SCM solutions designed for use on the local machine only?

I'm going to be building some ASP.Net MVC 2 software using Visual Studio 2010 and, as the only developer, I'd like to have some basic SCM in place to I can manage changes locally. I know most SCM solutions are designed to run on servers and accessed by multiple developers. What's an easy, simple SCM solution for a solo developer that wants to manage everything on a single Windows 7 machine?
Thanks so much in advance for your help!
A distributed VCS like git or mercurial would work just fine for a local repository, and you could always use your local repo as a master for future shared access.
File based SVN
git
I see three possibilities:
use a VCS that allows file-based access (SVN does)
install a server (e.g. for SVN)
use a distributed VCS (like Hq, git etc.)
They are listed with increasing recommendation level, so I recommend last one most. (Although I should warn against using git, which isn't really considered the easiest to use of the family.)
In my experience, TFS, hands down, has the best integration with Visual Studio. All other source control providers offer lackluster support for .NET projects at best (this specifically comes into play with renaming, moving, and deleting files under source control).
That said, for a single developer, my recommendation would be to use AnkhSVN with free SVN hosting on projectlocker.
On the other hand, if you have a BizSpark or MSDN account, and have some time, you may want to set up TFS 2010, perhaps on a VM.
Perforce provide a 2-user non-expiring "evaluation" license. I believe this can be installed and used on a single PC.
If you already have the .NET stack installed on your machine and SQL Server (including Express Edition), you can have a single user version of SourceGear Vault for free. Works well on my fairly old XP Pro machine.

Resources