Add git-tfs to our MSysGit #73

wants to merge 59 commits into


None yet
7 participants

This PR adds git-tfs ( to our version of MSysGit, for those poor unfortunate souls who are forced to use TFS

paulcbetts and others added some commits Jan 28, 2012

@paulcbetts @aroben paulcbetts Make our version of Portable Git use our cred helper 812ebd7
@paulcbetts @aroben paulcbetts Add gitattribute tweaks to help C# developers 571c1e3
@paulcbetts @aroben paulcbetts Add awesome Windows-based gitignore based on github/gitignore 24144be
@paulcbetts @aroben paulcbetts Make sure GitPad is the default editor b15ad71
@paulcbetts @aroben paulcbetts Make sure images are binary 6c95b4a
@paulcbetts @aroben paulcbetts Enable GHCleanSmudge dc093f4
@paulcbetts @aroben paulcbetts Disable autocrlf 132d769
@paulcbetts @aroben paulcbetts Disable GHCleanSmudge for now until we can make it faster 606b3b2
@paulcbetts @aroben paulcbetts Make sure we don't throw SSH host verfication dialogs 1d639c1
@paulcbetts @aroben paulcbetts Merge commit 'f5f7760711e3c9a3f04de3163bed0c07288e3d54' into ghfw e20ff4a
@paulcbetts @aroben paulcbetts Ensure less uses UTF8 encoding 9883da8
@paulcbetts @aroben paulcbetts Set autocrlf = true until we can enable GHCleanSmudge e96a9f5
@paulcbetts @aroben paulcbetts Add a SSH wrapper script that will never prompt for a password 09c23f7
@paulcbetts @aroben paulcbetts Mark most source file formats as text 202ec06
@paulcbetts @aroben paulcbetts SLN files must be CRLF or else VS Version Selector app dies :-/ 32482a0
@paulcbetts @aroben paulcbetts Move config file to the right place 59985d3
@paulcbetts @aroben paulcbetts Make sure that we use the GitHub key for .com, even if ssh-agent is b…
@paulcbetts @aroben paulcbetts Add configurations for different merge tools 43007d0
@paulcbetts @aroben paulcbetts Update gitignore to catch more stuff ef3e533
@paulcbetts @aroben paulcbetts Make 'git push' only push the current branch 10da2ed
@paulcbetts @aroben paulcbetts These two files *must* have *nix line endings c532bb6
@paulcbetts @aroben paulcbetts Some C# files are UTF-16, don't corrupt them 5f64c42
@aroben aroben Merge remote-tracking branch 'aroben/copy-files-error-checking' into …
@aroben aroben Don't include git-cheetah in portable releases
It's pretty unlikely that anyone would install git-cheetah out of a
portable release.
@aroben aroben Make sure zlib-config.patch always has LF line endings
LF is required for this patch to apply.
@aroben aroben Teach about NO_COMPRESS
If this environment variable is set, will just leave
the uncompressed Portable Git distribution sitting in /tmp/WinGit.
@aroben aroben Add
This script builds a Portable Git distribution and commits it to the
PortableGit branch. This is useful for updating the version of msysGit we
ship with GitHub for Windows.
@aroben aroben Merge remote-tracking branch 'upstream/devel' into devel a2523de
Paul Betts Fix typo in .sln line a4c48e9
@tclem tclem Change how we ship system gitattributes 51081c4
@aroben aroben Change the README to describe our build process c9f6aa0
@aroben aroben Make sure to include etc/gitattributes-suggested in the build 862136f
@aroben aroben Make `NO_SFX=1` work again 8423872
@aroben aroben Merge branch 'fix-nosfx' into devel f3b6309
@aroben aroben Include PortableGit.7z in the PortableGit branch
This way consumers of this branch won't have to recompress the portable
Git distribution.
@aroben aroben Include a VERSION file in PortableGit.7z
This file records the SHA1 from which the portable Git release was
@tclem tclem Some new ideas for global gitattributes ae3c26e
@tclem tclem No longer distributing this 674e46a
@tclem tclem This seems to be breaking local gitattributes afd88c3
@tclem tclem Back to * text=auto now that I understand gitattributes cant have BOM b71ffab
@tclem tclem Good to describe what this line does ed1940d
@aroben aroben Merge pull request #1 from github/include-zipped-distro
Include PortableGit.7z on the PortableGit branch
@aroben aroben Merge branch 'devel' of into devel fb8ef35
@aroben aroben Merge pull request #2 from github/update-to-upstream
Update to upstream
@aroben aroben Fix Git commands when installed in a Unicode path 53021fe
@aroben aroben Merge pull request #3 from github/git-unicode-path-compat
Fix Git commands when installed in a Unicode path
@aroben aroben Fix execution of non-.exe external git commands d021a85
@aroben aroben Merge pull request #4 from github/git-unicode-path-compat
Fix execution of non-.exe external git commands
@aroben aroben Move back to msysgit/git now that our changes have been merged addf895
@aroben aroben Don't force people to use our default gitignore file
This file still lives in /etc/gitignore.suggested, and users can copy it
from there into their own repositories if desired. But now they won't
have to wonder why some files mysteriously aren't being tracked by Git.
@aroben aroben Don't force line-ending normalization on users
Users can still get this by copying our /etc/gitattributes.suggested
file into their repository or creating their own .gitattributes file.
But now they won't have to wonder why a whole bunch of line endings are
marked as changed after cloning a repository that was created without
@aroben aroben Remove trailing spaces from etc/gitignore
These can cause the ignore rules not to function correctly.
@aroben aroben Remove a bunch of extraneous ** from patterns in etc/gitignore
These were added in ef3e533, but they
are hurting, not helping. Consider the following patterns:


The first will match all directories named "foo" (and anything inside
them) no matter where they reside in the repository.

The second will match directories named "foo" (and anything inside
them), but only if they are below the .gitignore in the directory

The third will match anything inside all directories named "foo".

Because Git only tracks files, not directories, the first and third
patterns are essentially equivalent. Since the first is simpler, we
should prefer it.

The second pattern can be useful in some cases, but as far as I can tell
it is not actually desired in any of the cases where we are currently
using it.

So, I've replaced all instances of patterns 2 and 3 above with pattern
@tclem tclem Merge remote-tracking branch 'origin/better-gitignore' into devel 70baf56
@tclem tclem Don't run msys.bat if it is being run from a submodule 71d91e6
@aroben aroben Merge tag 'Git-1.7.11-preview20120620' into devel
Git for Windows 1.7.11-preview20120620
@aroben aroben Merge commit '6c27376378af80a5ac754033e492621e314f35b0' into devel 656cc1e
@half-ogre half-ogre Merge tag 'tags/Git-1.7.11-preview20120710' into devel
Git for Windows 1.7.11-preview20120710
@paulcbetts paulcbetts Add git-tfs 0.15 733bc1c

Oops, wrong fork. Please disregard.

paulcbetts closed this Nov 12, 2012

(If MSysGit proper is interested in shipping git-tfs, I can certainly rebase this PR against msysgit)


dscho commented Nov 13, 2012

@xpaulbettsx I would love to have a pull request with just the parts that clean up msysGit.

I have to admit that I do not know whether I want to ship git-tfs, mainly because I do not know what TFS is to begin with. :-)

@dscho TFS is Microsoft's version of Perforce - this is another app in the vein of git-svn, git-p4, etc, lets you live in Git world but sync commits with TFS. A caveat of including it is that it assumes you have .NET 2.0 is installed - reasonable for GitHub for Windows but might not be for MSysGit.

As to the patches we can contribute, I'll talk with @aroben tomorrow and see if there's anything good in there. Generally I believe we've been trying to submit stuff we think is Generally Useful™


sschuberth commented Nov 13, 2012

I know people who would be interested in getting git-tfs as part of Git for Windows. But instead of adding the binaries to our repository, I'd prefer some option in the installer to install git-tfs on demand, which then downloads the latest zipped release from GitHub (e.g. using InnoTools Downloader), and unpacks that into the installation directory after regular installation finishes. If you'd come up with a pull request adding this functionality, I'd happily review and eventually merge it :-)

@sschuberth That seems overkill. All of git-tfs is like 500kb zipped. Not to mention it's a support / serviceability nightmare - "Which version of Git do you have? Now, which version of git-tfs do you have, completely unrelated?"


sschuberth commented Nov 13, 2012

It's not about binary size. The point is that we have a (somewhat unofficial) policy to not integrate binaries that we are not building from sources ourselves. Given that git-tfs is written in C# and our build environment is mingw I currently do not see how to do that with reasonable effort. Thus my suggestion to download your binaries on demand.

@sschuberth I really don't see any difference between a bindrop in the source code vs. a bindrop in the installer. Maybe a reasonable compromise is a build script that downloads git-tfs and drops it in the package before it gets 7Zip'ped up?


sschuberth commented Nov 13, 2012

That's not up to me to decide as I'm rather indifferent on the binaries vs. source issue. @dscho What is your opinion?


patthoyts commented Nov 13, 2012

If we provide git-tfs we also end up dealing with it's dependencies which leads to dealing with the .Net runtime installed. So do we also package the .net 4 client runtime too? I reckon we leave it to people that need git-tfs to to add it to their system. Its not exactly hard for them to download and unpack the zip file. If thats proving a problem for some end users - maybe providing the git-tfs project an installer configuration would be more useful so they can provide a MSI or .exe installer in addition to the .zip files.

This one gets a -1 from me. I give adding a tick-box to download and install it on demand a slightly more positive vote. +0.5 maybe. It might help make it more obvious to some users that such a thing exists if they can't already work it out by using the words git and tfs in the same search.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment