I noticed last night that Jared Parsons had cheerfully tweeted about the Visual Studio ASCII art logo that shows up when you clone a repository from TFS and Visual Studio Online:
Usually I hate extra graphics but the ASCII art generated from a VSO git repo on "clone" is oddly cute— Jared Parsons (@jaredpar) September 9, 2014
In case you haven't seen this, it looks something like:
Several years ago, when we started planning our Git support in Visual Studio and Team Foundation Server, I spiked a Git server implementation that used TFVC object storage on the backend.1 This was a fun way for us to learn the details of the Git smart protocol that's used when you fetch or push to a server and one of the things you quickly notice about the smart protocol is that it multiplexes a few channels through a single TCP connection. There's the general data channel, which is where the objects you fetch get sent, but there's also a channel for normal priority messages (akin to stdout) and another for error messages (akin to stderr) so that the server can provide some feedback to the user.
ou may have noticed this at work - the git server will often send you little messages to tell you that it hasn't forgotten about you while it's busy preparing your request:
remote: Counting objects: 52789, done. remote: Compressing objects: 100% (15421/15421), done. ...etc...
As we were getting towards the end of this spike, management wanted to see what we'd been doing and how realistically we could cram Git into TFS. As I'm nervously preparing for this meeting, I suddenly want to throw a little bit of levity in to the meeting. So I quickly whipped up an ASCII art version of the Visual Studio logo and wired up our handler to send it out over the normal priority message channel. Now when we went to clone the demo repository from the server, you'd see the VS logo in the command prompt.
Thankfully, this got a pretty good laugh, and it convinced everybody that maybe we really could put Git into TFS in a very natural way.
I moved on to some other work and didn't think much more about this until my very talented coworker Philip Kelley was showing the actual, ready-to-ship implementation of our Git server in TFS. Once again, when you cloned a repository from the server you were greeted with the Visual Studio logo. As we got closer and closer to shipping, we kept waiting to hear from whatever department enforces our no easter egg policy.2 Or our marketing department, telling us that they didn't like our ASCII art bastardization of their logo.
And, of course, we did hear from them. They asked us to remove it… but only because we were using the old, rounded infinity logo from 2012 and prior, instead of the very angular new-style logo for VS 2013. So Martin Woodward hand-crafted an updated ASCII art logo (made up of the letters 'T', 'F' and 'S' no less!), checked that in, and it remains to this day.
In case you're curious, the original ASCII art logo was:
$$$$$$$$$$$ ????? $$$$$$$$ZZZ$$$ ~?++==++?I 7$$$$$$$$$$Z???Z$ ~?+==~~~=+I$Z 777$$$$$$$ +OOOOO$ ??+= $77777$$$I $ZZZZZ 7I? II777777? 77$$$$ ~77 +IIIII777 777777 II~ =IIIIIIIIIZZ III777 77IIIIIIIIII 77II? IIIIII 7IIIII $777777777 (TM) Microsoft (R) Visual Studio (R) Team Foundation Server
This silly little bit of ASCII gives me a smile every time I see it; we hope it gives you one, too.
Today we use an implementation where Git object storage goes to the database instead of through TFVC, a much saner approach. ↩
Seriously, I signed something that said that putting an easter egg into my software was grounds for immediate dismissal. We rationalized this by saying that it shows up for everybody all the time, so it's clearly not an easter egg. ↩