The website. Note that this repository is only for the website; issues with git itself should go to
Clone or download
Latest commit 7c6b435 Sep 20, 2018
Failed to load latest commit information.
.github Update Nov 18, 2017
app drop "Try Git" from tutorials page Sep 19, 2018
bin Unignore bin directory Mar 11, 2018
config precompile modernize.js only Mar 11, 2018
db Update db/schema.rb to match the real schema Feb 24, 2018
doc Remove sass compilation stuff for now Jan 16, 2018
lib book2: drop pointless assignment Jul 12, 2018
log rails gen Mar 6, 2012
public drop "Try Git" promo from front page Sep 19, 2018
resources Updated GitBlade gui client: added Windows version and updated the pr… Aug 10, 2018
script Add script/server and other needed changes Mar 11, 2018
spec Check version exstence on download rake task May 14, 2018
test drop blog content Feb 8, 2018
vendor/assets Move vendor assets to vendor/assets directory Mar 11, 2018
.env.example drop UPDATE_TOKEN code Feb 8, 2018
.gemset Update about template Jan 22, 2014
.gitignore Unignore bin directory Mar 11, 2018
.rspec re run rspec `rails generate rspec:install` and update config Feb 28, 2018
.ruby-version bump ruby version to 2.4.2 Oct 31, 2017
.stylelintrc.json Add stylelint and config Jan 16, 2018
.travis.yml Add multiple jobs and retry count Mar 11, 2018 architecture: add a "what is still manual" section Mar 23, 2018
Gemfile update sprockets gem Jun 20, 2018
Gemfile.lock update sprockets gem Jun 20, 2018
Gruntfile.js Remove sass compilation stuff for now Jan 16, 2018
MIT-LICENSE.txt license: update years and authors Mar 6, 2018
Procfile Replace Unicorn with Puma Mar 11, 2018 Add script/server and other needed changes Mar 11, 2018 Add script/server and other needed changes Mar 11, 2018
Rakefile fix some css issues May 2, 2012
app.json Add Heroku generated app.json Mar 7, 2018 rails gen Mar 6, 2012
package-lock.json drop unnecessary bits from package-lock.json Jan 18, 2018
package.json drop unnecessary bits from package-lock.json Jan 18, 2018

Git Homepage Build Status Help Contribute to Open Source

This is the web application for the site. It is meant to be the first place a person new to Git will land and download or learn about the Git SCM system.

This app is written in Ruby on Rails and deployed on Heroku.


You'll need a Ruby environment to run Rails. First do:

$ rvm use .
$ bundle install

Then you need to create the database structure:

$ rake db:migrate

Alternatively you can run the script at script/bootstrap which will set up Ruby dependencies and the local SQLite database.

Now you'll want to populate the man pages. You can do so from a local Git source clone like this:

$ GIT_REPO=../git/.git rake local_index

Or you can do it from GitHub (much slower) like this:

$ export API_USER=github_username
$ export API_PASS=github_password
$ rake preindex

Now you need to get the latest downloads for the downloads pages:

$ rake downloads

Now you'll probably want some book data. You'll have to have access to the Pro Git project on GitHub through the API.

$ export API_USER=github_username
$ export API_PASS=github_password
$ rake remote_genbook2

If you have 2FA enabled, you'll need to create a Personal Access Token.

That will generate the book content from the Asciidoc files fetched from the online repository and post it to the Rails server database. You can select a specific language by indicating it in the GENLANG environment variable:

$ GENLANG=zh rake remote_genbook2

Alternatively, you can get the book content from a repository on your computer by specifying the path in the GENPATH environment variable to the local_genbook2 target:

$ GENLANG=fr GENPATH=../progit2-fr rake local_genbook2

Now you can run the Rails site to take a look.

$ ./script/server

The site should be running on http://localhost:5000


To run the tests for this project, run:

$ rspec

To run the website for testing purposes, run:

$ ./script/server


If you wish to contribute to this website, please fork it on GitHub, push your change to a named branch, then send a pull request. If it is a big feature, you might want to start an issue first to make sure it's something that will be accepted. If it involves code, please also write tests for it.

Adding new GUI

The list of GUI clients has been constructed by the community for a long time. If you want to add another tool you'll need to follow a few steps:

  1. Add the GUI client details at the YAML file:

    1. The fields name, url, price, license should be very straightforward to fill.
    2. The field image_tag corresponds to the filename of the image of the tool (without path, just the filename).
    3. platforms is a list of at least 1 platform in which the tool is supported. The possibilities are: Windows, Mac, Linux, Android, and iOS
    4. order can be filled with the biggest number already existing, plus 1 (Adding to the bottom - this will be covered in the following steps)
    5. trend_name is an optional field that can be used for helping sorting the clients (also covered in the next steps)
  2. Add the image to public/images/guis/<GUI_CLIENT_NAME>@2x.png and public/images/guis/<GUI_CLIENT_NAME>.png making sure the aspect ratio matches a 588:332 image.

  3. Sort the tools

    1. From the root of the repository, run: $ ./script/sort-gui
    2. A list of google trends url's will be displayed at the bottom if everything went well.
    3. Open each and check if the clients are sorted.
    4. If the clients are not sorted, just fix the order (by changing the order field), bubbling the more 'known' clients all the way up.
    5. Repeat until the order stabilizes.
    6. It is possible that your new GUI client doesn't have good results in Google Trends. You can try similar terms (for instance, adding the git keyword sometime helps). If you find any similar term that returns better results, add the trend_name field to the GUI client. Have a look at the Tower and Cycligent Git Tool tools example.
    7. The script makes some basic verifications. If there was some problem, it should be easily visible in the output
    8. If you have more than 1 tool with the same name, a warning will appear: ======= WARNING: THERE ARE DUPLICATED GUIS =======
    9. If you are using the same order value for more than 1 tool, a warning will appear: ======= WARNING: THERE ARE DUPLICATED ORDERS (value: <VALUE>) =======


The source code for the site is licensed under the MIT license, which you can find in the MIT-LICENSE.txt file.

All graphical assets are licensed under the Creative Commons Attribution 3.0 Unported License.