Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,6 @@ Here is a detailed list of the relevant directories:
- static/
- assets/

- To add new GUIs:
- data/

- To work on pre-rendering pages that originate from other repositories (such as the ProGit book):
- script/

Expand Down Expand Up @@ -131,7 +128,6 @@ Believe it or not, https://git-scm.com/ has its own test suite. It uses [Playwri
> /content/404.html \
> /content/_index.html \
> /content/about/small-and-fast.html \
> /content/downloads/guis/ \
> /content/search/ \
> /data/ \
> /external/book/content/book/_index.html \
Expand Down Expand Up @@ -281,20 +277,6 @@ Then, clone it using [`scalar`](https://git-scm.com/docs/scalar) (this avoids lo

After making the changes, commit and push to a named branch in your fork, then open a pull request. If it is a big feature, you might want to [start an issue](https://github.com/git/git-scm.com/issues/new) first to make sure it's something that will be accepted.

## Adding a new GUI

The [list of GUI clients](https://git-scm.com/downloads/guis) 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 a new `.md` file with the GUI client details: data/guis
1. The fields need to be enclosed within `---` lines
2. The fields `name`, `project_url`, `price`, `license` should be very straightforward to fill.
3. The field `image_tag` corresponds to the path of the image of the tool (should start with `images/guis/`).
4. `platforms` is a list of at least 1 platform in which the tool is supported. The possibilities are: `Windows`, `Mac`, `Linux`, `Android`, and `iOS`
5. `order` can be filled with the biggest number already existing, plus 1 (this number determines the order in which the GUIs are rendered). This is the only field whose value should _not_ be enclosed in double-quote characters.
6. `trend_name` is an optional field that can be used for helping sorting the clients.

2. Add the image to `static/images/guis/<GUI_CLIENT_NAME>@2x.png` and `static/images/guis/<GUI_CLIENT_NAME>.png` making sure the aspect ratio matches a 588:332 image.

## Useful links

### Hugo (static site generator)
Expand Down
96 changes: 0 additions & 96 deletions assets/js/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@
//= require jquery.defaultvalue
//= require session.min

// Used to detect initial (useless) popstate.
// If history.state exists, assume browser isn't going to fire initial popstate.
popped = 'state' in window.history;
initialURL = location.href;

const baseURLPrefix = (() => {
const thisScriptSrc =
Array.from(document.getElementsByTagName('script'))
Expand All @@ -41,37 +36,15 @@ $(document).ready(function() {
Print.init();
});

function onPopState(fn) {
if (window.history && window.history.pushState) {
return $(window).on('popstate', function() {
var section;
initialPop = !popped && location.href === initialURL;
popped = true;
if (initialPop) {
return;
}
fn();
});
}
}

var DownloadBox = {
init: function() {
$('#gui-os-filter').addClass('visible');
var os = window.session.browser.os; // Mac, Win, Linux
if(os == "Mac") {
$("#download-link").text("Install for Mac").attr("href", `${baseURLPrefix}install/mac`);
$("#gui-os-filter").attr('data-os', 'mac');
$("#gui-os-filter").text("Only show GUIs for my OS (Mac)")
} else if (os == "Windows") {
$("#download-link").text("Install for Windows").attr("href", `${baseURLPrefix}install/windows`);
$("#gui-os-filter").attr('data-os', 'windows');
$("#gui-os-filter").text("Only show GUIs for my OS (Windows)")
} else if (os == "Linux") {
$("#download-link").text("Install for Linux").attr("href", `${baseURLPrefix}install/linux`);
$("#gui-os-filter").attr('data-os', 'linux');
$("#gui-os-filter").text("Only show GUIs for my OS (Linux)")
} else {
}
}
}
Expand Down Expand Up @@ -498,78 +471,9 @@ var Forms = {
}
var Downloads = {
init: function() {
Downloads.observeGUIOSFilter();
Downloads.observePopState();
Downloads.filterGUIS();
Downloads.postProcessDownloadPage();
},

getOSFromQueryString: function() {
const query = window.location.search.substring(1);
const needle = `os=`;
return query
.split('&')
.filter(e => e.startsWith(needle))
.map(e => decodeURIComponent(e.substring(needle.length).replace(/\+/g, '%20')))
.pop();
},

getOSFilter: function(os) {
os = os || Downloads.getOSFromQueryString();
return os === 'linux' || os === 'mac' || os === 'windows' || os === 'android' || os === 'ios' ? os : '';
},

capitalizeOS: function(os) {
const platforms = {"linux": "Linux", "mac": "Mac", "windows": "Windows", "android": "Android", "ios": "iOS"};
return platforms[os];
},

filterGUIS: function(os) {
var osFilter = Downloads.getOSFilter(os);
var capitalizedOS = Downloads.capitalizeOS(osFilter);
$('a.gui-os-filter').not("[data-os='"+osFilter+"']").removeClass('selected');
$('a.gui-os-filter').filter("[data-os='"+osFilter+"']").addClass('selected');

if (osFilter === '') {
$('ul.gui-thumbnails li').removeClass("masked");
$('#os-filter-count').hide();
}
else {
$('ul.gui-thumbnails li').filter("."+osFilter).removeClass('masked');
$('ul.gui-thumbnails li').not("."+osFilter).addClass('masked');
var osCount = $('ul.gui-thumbnails li' + '.' + osFilter).length;
$('#os-filter-count strong').html(osCount);
$('#os-filter-count .os').html(capitalizedOS);
$('#os-filter-count').show();
}
},

observeGUIOSFilter: function() {
$('a.gui-os-filter').on('click', function(e) {
e.preventDefault();
var os = $(this).attr('data-os');

if (window.history && window.history.pushState) {
var url = os === ''
? `${baseURLPrefix}downloads/guis`
: `${baseURLPrefix}downloads/guis?os=${os}`;
try {
history.pushState(null, $(this).html(), url);
} catch (e) {
if (`${e}`.indexOf('The operation is insecure') < 0) console.log(e)
}
}

Downloads.filterGUIS(os);
});
},

observePopState: function() {
onPopState(function() {
Downloads.filterGUIS();
});
},

// say how many days ago this version was released
postProcessReleaseDate: function(index, releaseDateString) {
const daysAgo = Math.floor((Date.now() - Date.parse($('#auto-download-date').html())) / 86400000);
Expand Down
14 changes: 1 addition & 13 deletions assets/sass/lists.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@
}
}

ul.video-thumbnails,
ul.gui-thumbnails {
ul.video-thumbnails {
@extend .content-list;
margin-top: 1em;

Expand All @@ -32,17 +31,6 @@ ul.gui-thumbnails {
}
}

ul.gui-thumbnails {
li {
display: inline-block;
width: 49%;
}

li.masked {
display: none;
}
}

ul.books-list {
@extend .content-list;

Expand Down
9 changes: 0 additions & 9 deletions assets/sass/typography.scss
Original file line number Diff line number Diff line change
Expand Up @@ -351,15 +351,6 @@ a.subtle-button.selected {
background-image: linear-gradient(#d7d7c1, #cbc9b4);
}

a#gui-os-filter {
display: none;
margin-top: 15px;

&.visible {
display: inline-block;
}
}

div.more {
display: none;
}
Expand Down
29 changes: 3 additions & 26 deletions content/tools/guis/_index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,35 +15,12 @@
<div id="main">
<h1>GUI Clients</h1>
<p>
Git comes with built-in GUI tools for committing (<a href="{{< relurl "docs/git-gui" >}}">git-gui</a>) and browsing (<a href="{{< relurl "docs/gitk" >}}">gitk</a>), but there are several third-party tools for users looking for platform-specific experience.
Git ships with built-in GUI tools for committing (<a href="{{< relurl "docs/git-gui" >}}">git-gui</a>) and browsing history (<a href="{{< relurl "docs/gitk" >}}">gitk</a>). Beyond those, this page used to catalog third-party GUIs, which was genuinely useful in the years when Git was young, its command line intimidated newcomers, and few alternatives were widely known.
</p>
<p>
<small>If you want to add another GUI tool to this list, just <a href="https://github.com/git/git-scm.com/tree/gh-pages?tab=readme-ov-file#adding-a-new-gui">follow the instructions</a>.</small>
That need has since evaporated. Git integration is now table stakes: virtually every major IDE and code editor ships with it, and a developer tool without it is no longer competitive. There is no shortage of options to discover, and no shortage of opinions about them.
</p>

<p>
<a href="#" class="subtle-button gui-os-filter selected" data-os="">All</a>
<a href="#" class="subtle-button gui-os-filter" data-os="windows">Windows</a>
<a href="#" class="subtle-button gui-os-filter" data-os="mac">Mac</a>
<a href="#" class="subtle-button gui-os-filter" data-os="linux">Linux</a>
<a href="#" class="subtle-button gui-os-filter" data-os="android">Android</a>
<a href="#" class="subtle-button gui-os-filter" data-os="ios">iOS</a>
<div id="os-filter-count">
<strong>0</strong>
<span class="os">Linux</span>
GUIs are shown below ↓
</div>
Maintaining a curated list under those conditions is a losing proposition. Nobody is vetting submissions in earnest, and the page had increasingly become an advertising surface for its own entries. In a landscape this saturated, presenting a handful of arbitrarily chosen tools is worse than presenting none, so the list has been retired.
</p>

<div class="two-column">
<ul class="gui-thumbnails">
{{< guis >}}
</ul>
</div>

<div class="callout">
<p>
There are other great GUI tools available as well. Have a look at the list of <a href="https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools">interfaces, frontends and tools</a> in the Git Wiki.
</p>
</div>
</div>
12 changes: 0 additions & 12 deletions data/guis/anchorpoint.yml

This file was deleted.

12 changes: 0 additions & 12 deletions data/guis/aurees.yml

This file was deleted.

11 changes: 0 additions & 11 deletions data/guis/changes.yml

This file was deleted.

11 changes: 0 additions & 11 deletions data/guis/commandgit.yml

This file was deleted.

11 changes: 0 additions & 11 deletions data/guis/cong.yml

This file was deleted.

13 changes: 0 additions & 13 deletions data/guis/fork.yml

This file was deleted.

13 changes: 0 additions & 13 deletions data/guis/fugitive.yml

This file was deleted.

11 changes: 0 additions & 11 deletions data/guis/giggle.yml

This file was deleted.

12 changes: 0 additions & 12 deletions data/guis/git-cola.yml

This file was deleted.

10 changes: 0 additions & 10 deletions data/guis/git-extensions.yml

This file was deleted.

12 changes: 0 additions & 12 deletions data/guis/gitahead.yml

This file was deleted.

Loading
Loading