Skip to content

Commit

Permalink
Support Vagrant: quick & easy Linux virtual machine setup
Browse files Browse the repository at this point in the history
When developing Git for Windows, we always have to ensure that we do not
break any non-Windows platforms, e.g. by introducing Windows-specific code
into the platform-independent source code.

At other times, it is necessary to test whether a bug is Windows-specific
or not, in order to send the bug report to the correct place. Having
access to a Linux-based Git comes in really handy in such a situation.

Vagrant offers a painless way to install and use a defined Linux
development environment on Windows (and other Operating Systems). We offer
a Vagrantfile to that end for two reasons:

1) To allow Windows users to gain the full power of Linux' Git

2) To offer users an easy path to verify that the issue they are about
   to report is really a Windows-specific issue; otherwise they would
   need to report it to git@vger.kernel.org instead.

Using it is easy: Download and install https://www.virtualbox.org/, then
download and install https://www.vagrantup.com/, then direct your
command-line window to the Git source directory containing the Vagrantfile
and run the commands:

	vagrant up
	vagrant ssh

See https://github.com/git-for-windows/git/wiki/Vagrant for details.

As part of switching Git for Windows' development environment from msysGit
to the MSys2-based Git SDK, this Vagrantfile was copy-edited from msysGit:

	https://github.com/msysgit/msysgit/blob/0be8f2208/Vagrantfile

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho authored and jamill committed Sep 10, 2018
1 parent 2d3dded commit 788bf71
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -269,3 +269,6 @@ Release/
/UpgradeLog*.htm
/git.VC.VC.opendb
/git.VC.db
/.vagrant/
/vagrant2[0-9][0-9][0-9]*-*-*
/d2[0-9][0-9][0-9]*-*-*
57 changes: 57 additions & 0 deletions Vagrantfile
@@ -0,0 +1,57 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# This Vagrantfile defines the requirements of a Linux development environment
# to develop/run Git. This environment can be set up conveniently by installing
# Vagrant and VirtualBox and calling "vagrant up" in the /usr/src/git directory.
#
# See https://github.com/git-for-windows/git/wiki/Vagrant for details.

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

$provision = <<PROVISION
apt-get update
apt-get install -y make gcc libexpat-dev libcurl4-openssl-dev gettext tk8.6 libsvn-perl
# clean .profile in case we're re-provisioning
n="$(grep -n 'cd /vagrant' < /home/vagrant/.profile 2> /dev/null |
sed 's/:.*//')"
test -z "$n" || {
head -n $(($n-1)) < /home/vagrant/.profile > /tmp/.profile
mv /tmp/.profile /home/vagrant/.profile
}
# add a nice greeting
cat >> /home/vagrant/.profile << \EOF
cd /vagrant/
export PATH=/home/vagrant/bin:$PATH
cat << \TOOEOF
Welcome to the Vagrant setup for Git!
--------------------------------------
To build & install Git, just execute
make -j NO_PERL_MAKEMAKER=t install
For more information, see https://github.com/git-for-windows/git/wiki/Vagrant
TOOEOF
EOF
cat << EOF
Now that everything is set up, connect to the Vagrant machine with the command:
vagrant ssh
EOF
PROVISION

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.box_url = "https://atlas.hashicorp.com/ubuntu/boxes/trusty64"

config.vm.provision :shell, :inline => $provision
end

0 comments on commit 788bf71

Please sign in to comment.