Giter Club home page Giter Club logo

git-scm.com's Introduction

Git Homepage CI Help Contribute to Open Source

This is the web application for the git-scm.com 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.

Setup

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

This will populate the man pages for all Git versions. You can also populate them only for a specific Git version (faster):

$ version=v2.23.0
$ GIT_REPO=../git/.git REBUILD_DOC=$version rake local_index

Or you can populate the man pages from GitHub (much slower) like this:

$ export GITHUB_API_TOKEN=github_personal_auth_token
$ rake preindex  # all versions
$ REBUILD_DOC=$version rake preindex  # specific version

Similarly, you can also populate the localized man pages. From a local clone of https://github.com/jnavila/git-html-l10n :

$ GIT_REPO=../git-html-l10n/.git rake local_index_l10n  # all versions
$ GIT_REPO=../git-html-l10n/.git REBUILD_DOC=$version rake local_index_l10n  # specific version

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

$ export GITHUB_API_TOKEN=github_personal_auth_token
$ rake preindex_l10n  # all versions
$ REBUILD_DOC=$version rake preindex_l10n  # specific version

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 GITHUB_API_TOKEN=github_personal_auth_token
$ 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

Testing

To run the tests for this project, run:

$ rspec

To run the website for testing purposes, run:

$ ./script/server

Contributing

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: https://github.com/git/git-scm.com/blob/main/resources/guis.yml

    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>) =======

FAQ

While setting the repo if you find any error, check if it's a known issue and the corresponding solution bellow.

An error occurred while installing pg (1.2.3), and Bundler cannot continue.

If you got this error when running bundle install, then you need to install postgresql on your OS. Check this stackoverflow topic for more details.

License

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.

git-scm.com's People

Contributors

adsingh14 avatar akshatm147 avatar ben avatar blackant avatar bry4n avatar carlosmn avatar dependabot-preview[bot] avatar dependabot[bot] avatar gitster avatar hickford avatar hirse avatar honkinggoose avatar jbarnette avatar jnavila avatar koraktor avatar ltomov avatar mmozuras avatar murmele avatar neatnit avatar nickh avatar packtpartner avatar pedrorijo91 avatar peff avatar pepoirot avatar phil-blain avatar schacon avatar sergioluis avatar tarebyte avatar ttaylorr avatar ugultopu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

git-scm.com's Issues

Missing Domo-Kun

Love the new clean design but I very much miss Domo-Kun eating the trees.

Potentially wrong installation instruction for Debian users?

I'm not very sure of this, so please cross check before any action.

On Debian Sid (Unstable), the package manager says,

This is a transitional dummy package. The 'git-core' package has been renamed to 'git', which has been installed automatically. This git-core package is now obsolete, and can safely be removed from the system if no other package depends on it

So Ideally the command should be # apt-get install git

Also the prompt should be # and not $, just to say that the user needs a root shell.

fix broken links to individual videos

On the Documentation page, there is a Videos section. There are two types of links to individual videos on that page, and both of them are broken. Clicking on any title card image goes to /video/what-is-git, no matter what video is clicked. And clicking on any video title below, e.g. "What is Version Control?", goes to /doc.

Here are the relevant places in the code:

Add a license

No point having forks of software that can't be modified!

degrade gracefully when javascript is disabled

This site is going to get a much wider audience than github.com (or at least we want it to; it should be the official git site). We're going to get people viewing it with w3m, browsers with super locked-down javascript settings, etc. I noticed two issues with javascript turned off:

  1. (very minor) The download button defaults to "Download for Mac" when javascript is off. If we can't do OS detection, it might make sense to point to something more agnostic.
  2. On the "community" page, the mailto: link for the list does not appear at all if javascript is turned off. It just appears as "[...] using the email address .".

Man pages are slow

Not sure what's going on with the manual pages but they've been ridiculous slow to load so far using them as my primary help with e.g., git help log -w. I'm waiting around 2 - 3 seconds in most cases. These should never be > 50ms on the server.

I'd be happy to look into perf here, just want to make sure its not a known thing someone's working on.

asciidoc should handle inline literals

There's a pending change in upstream git to turn on asciidoc's "inline literal" feature. The source files are being tweaked accordingly; you can see the result at git/git@6cf378f. When this hits, we'll have to adjust our parser to handle the new syntax (but keep using the old syntax for older versions).

/cc @nickh

Hard to find source tarball link

Actual: Go to the new homepage, see a big "download for Mac" button.
Expected: Also see a big "download a source tarball" button. The Source link I did find brought me to GitHub.

[UI issue] Book unintuitive to navigate after new layout

The book (documentation) references chapters in many instances, but I cannot see what chapter or sub-chapter I am on, nor can I navigate to sub-chapters.

In short:

  • Chapters and sub-chapter numbers not easily visible (in the URL or on the page; javascript, for example).
  • No navigation menu for sub-chapters; Can only use 'prev' and 'next' buttons at the bottom of a page.

new wiki

the previous wiki was OK and a lot of people used it, but it's now dead due to k.org biting the bullet.

implement a new wiki interface and way to contribute super easily.

import the old wiki, too.

Download version is different than what you get

The home page says:

Latest stable release
1.7.10.1
Release Notes (2012-05-02)
DOWNLOAD

Clicking DOWNLOAD will immediately start the download for 1.7.10.0 because .1 is not yet released for Windows. That's stupid.

Don't start download right away, either link to the mSys downloads page like before (best) or if you really want to show-off your downloads page, fine, but don't start the download when the version above the download button is different than the version you are giving the user.

make it clearer that videos are videos on Documentation page

Page: http://git-scm.com/documentation

This person's description of their thought process when viewing the site included thinking that the videos were "brightly colored business cards". It took him a moment to realize that they were videos. That those rectangles were videos was not obvious to me, too, when I saw that part of the page.

I suggest overlaying a play icon ▶ over the video title card somewhere. This is reminiscent of the embedded video players for many video sites, and should remind the user of a video more clearly.

Things to consider about the play icon layout:

  • put the ▶ in the center or the corner of the card?
  • should the ▶ be plain, in a circle, or in a box?
  • should the title card be dimmed or not?

search bar functionality

search bar should search through:

  • command names
  • man-pages (most recent first)
  • pro-git book
  • stack overflow questions (?)
  • release notes (?)

it should look similar to this:

search

clean up favicon by removing semi-transparent pixels

The favicon (/public/favicon.ico, or see on live site) looked a bit messy when I first saw it. In the middle of the vertical branch are some semi-transparent orange pixels. I'm talking about the pixels at the X:

          ^
        /   \
      /\      \
    /    \      \
  /       \        \
<         | \       >
  \       X  o    /
    \     |     /
      \   o   /
        \   /
          V

Those pixels are meant to indicate that the line is narrower than the bubble at the end, as you can see by looking at a bigger version of Git's logo (logo in site header, larger plain logo). However, when I first went to the new Git website, I didn't look at the new logo for a while. Before I saw it, I saw the favicon, after switching tabs. I thought that the favicon looked a bit messy in the middle, at the X. It looks more like the image is blurry than that that section of the line is narrow.

Now that I have seen the bigger version of the icon, I find it harder to see those pixels as blur and see them mostly as a narrower line instead. But I think a significant number of other new visitors will interpret it as ugly blur, seeing the favicon before the header logo.

My suggested fix: make that part of the line just as wide as the other parts. The diagonal line is already at the same width in the line and at the end, and it looks fine. I think the concept of the branch will still be conveyed well enough even if the commit node at the end isn't wider than the line.

This change was first suggested by someone else, on Hacker News. They probably had the same problem that I did.

mailing list browser

gmane is just goddamn awful.

have a sane email list interface for the git ML that is searchable through git-scm, filterable, permalinkable and possibly postable (perhaps authing through google or github)

auto-download os specific version

we need to detect the user environment and offer in a single click the correct software to download, then possibly redirect to instructions on how to install it and get started. also possibly link to GUIs?

No license

Even if this site isn't really open sourced, it'd be nice to make the licensing explicit.

blog

we should have a blog - detailing new releases and what's in them, as well as pointing out interesting things in the git community

bisect asciidoc rendering issue

near "# tweak the working tree" a bunch of formatting is off.

also link:git-bisect-lk2009.html[Fighting regressions with git bisect] is not rendered.

incorporate whygitisbetterthanx content

all the wgibtx content should be in git-scm, except remove the comparisons to the other dvcs systems and concentrate on the advantages of git over clearcase, perforce, svn

auto man-page generator

need some way to find, pull and build man-page docs from source.

i would prefer to just do it from source too, in case junio decides not to publish the html branch anymore. back fill it with all old releases too.

rake preindex failing on heroku

v1.7.7.7
v1.7.7.7: 2012-04-26 16:41:52 +0000, 82588584, 913a5cb6
Found 163 entries
Connected to NewRelic Service at collector-1.newrelic.com:80
rake aborted!
can't convert nil into String
/app/lib/asciidoc.rb:278:in `+'
/app/lib/asciidoc.rb:278:in `block in htmlify'
/app/lib/asciidoc.rb:278:in `gsub!'
/app/lib/asciidoc.rb:278:in `htmlify'
/app/lib/asciidoc.rb:249:in `block in content'
/app/lib/asciidoc.rb:249:in `map'
/app/lib/asciidoc.rb:249:in `content'
/app/templates/section_paragraph.html.erb:4:in `block in singletonclass'
/app/templates/section_paragraph.html.erb:65533:in `instance_eval'
/app/templates/section_paragraph.html.erb:65533:in `singletonclass'
/app/templates/section_paragraph.html.erb:65531:in `__tilt_4866620'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:140:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:140:in `cached_evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:127:in `evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render'
/app/lib/asciidoc.rb:95:in `render'
/app/lib/asciidoc.rb:198:in `render'
/app/lib/asciidoc.rb:424:in `block in content'
/app/lib/asciidoc.rb:424:in `map'
/app/lib/asciidoc.rb:424:in `content'
/app/templates/section.html.erb:12:in `block in singletonclass'
/app/templates/section.html.erb:65533:in `instance_eval'
/app/templates/section.html.erb:65533:in `singletonclass'
/app/templates/section.html.erb:65531:in `__tilt_4866620'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:140:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:140:in `cached_evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:127:in `evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render'
/app/lib/asciidoc.rb:95:in `render'
/app/lib/asciidoc.rb:410:in `render'
/app/lib/asciidoc.rb:424:in `block in content'
/app/lib/asciidoc.rb:424:in `map'
/app/lib/asciidoc.rb:424:in `content'
/app/templates/document.html.erb:16:in `evaluate_source'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:209:in `instance_eval'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:209:in `evaluate_source'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:144:in `cached_evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:127:in `evaluate'
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/template.rb:76:in `render'
/app/lib/asciidoc.rb:95:in `render'
/app/lib/asciidoc.rb:649:in `render'
/app/lib/tasks/index.rake:107:in `block (3 levels) in <top (required)>'
/app/lib/tasks/index.rake:80:in `each'
/app/lib/tasks/index.rake:80:in `block (2 levels) in <top (required)>'
/app/lib/tasks/index.rake:23:in `each'
/app/lib/tasks/index.rake:23:in `block in <top (required)>'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/app/vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `load'
/app/vendor/bundle/ruby/1.9.1/bin/rake:19:in `<main>'
Tasks: TOP => preindex

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.