remove old tmux config
This commit is contained in:
parent
f4170c5de2
commit
c5faf050aa
437 changed files with 0 additions and 22703 deletions
|
@ -1,140 +0,0 @@
|
||||||
<p align="center"><a href="https://www.nordtheme.com/ports/tmux" target="_blank"><img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/repository-hero.svg?sanitize=true"/></a></p>
|
|
||||||
|
|
||||||
<p align="center"><a href="https://github.com/nordtheme/tmux/releases/latest"><img src="https://img.shields.io/github/release/nordtheme/tmux.svg?style=flat-square&label=Release&logo=github&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"/></a> <a href="https://www.nordtheme.com/docs/ports/tmux"><img src="https://img.shields.io/github/release/nordtheme/tmux.svg?style=flat-square&label=Docs&colorA=4c566a&colorB=88c0d0&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI%2BCiAgICA8cGF0aCBmaWxsPSIjZDhkZWU5IiBkPSJNMTMuNzQ2IDIuODEzYS42Ny42NyAwIDAgMC0uNTU5LS4xMzNMOCAzLjg0OGwtNS4xODgtMS4xOGEuNjY5LjY2OSAwIDAgMC0uNTcuMTMzLjY3Ny42NzcgMCAwIDAtLjI0Mi41MzF2OC4xMzNjLS4wMDguMzIuMjEuNTk4LjUyLjY2OGw1LjMzMiAxLjE5OWguMjk2bDUuMzMyLTEuMmEuNjY4LjY2OCAwIDAgMCAuNTItLjY2N1YzLjMzMmEuNjU5LjY1OSAwIDAgMC0uMjU0LS41MnpNMy4zMzIgNC4xNjhsNCAuODk4djYuNzY2bC00LS44OTh6bTkuMzM2IDYuNzY2bC00IC44OThWNS4wNjZsNC0uODk4em0wIDAiLz4KPC9zdmc%2BCg%3D%3D"/></a></p>
|
|
||||||
|
|
||||||
<p align="center">Changelog for <a href="https://www.nordtheme.com/ports/tmux">Nord tmux</a> — An arctic, north-bluish clean and elegant <a href="https://tmux.github.io" target="_blank">tmux</a> color theme.</p>
|
|
||||||
|
|
||||||
<!--lint disable no-duplicate-headings-->
|
|
||||||
|
|
||||||
# 0.3.0
|
|
||||||
|
|
||||||
![Release Date: 2019-06-03](https://img.shields.io/badge/Release_Date-2019--06--03-88C0D0.svg?style=flat-square) [![Project Board](https://img.shields.io/badge/Project_Board-0.03.0-88C0D0.svg?style=flat-square)](https://github.com/orgs/nordtheme/projects/1/views/10) [![Milestone](https://img.shields.io/badge/Milestone-0.03.0-88C0D0.svg?style=flat-square)](https://github.com/nordtheme/tmux/milestone/4)
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
**Nord Docs Transition** — #36 ⇄ #37 (⊶ 6101cf85)
|
|
||||||
↠ Transferred all documentations, assets and from „Nord tmux“ to [Nord Docs][nord]
|
|
||||||
Please see the [corresponding issue in the Nord Docs repository][nord-docs#153] to get an overview of what has changed for Nord tmux and what has been done to migrate to Nord Docs.
|
|
||||||
|
|
||||||
###### Landing Page
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/ports/tmux" target="_blank"><img src="https://user-images.githubusercontent.com/7836623/58762743-23bed700-8553-11e9-8094-dc82e8eea6bd.png" alt="Preview: Nord tmux Port Project Landing Page"/></a></p>
|
|
||||||
|
|
||||||
###### Landing Page Docs
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux" target="_blank"><img src="https://user-images.githubusercontent.com/7836623/58762745-29b4b800-8553-11e9-9b2c-076577593a9c.png" alt="Preview: Nord tmux Docs Landing Page"/></a></p>
|
|
||||||
|
|
||||||
###### Installation & Activation Docs
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux/installation" target="_blank"><img src="https://user-images.githubusercontent.com/7836623/58762754-3f29e200-8553-11e9-88ae-336f7a1ed999.png" alt="Preview: Nord tmux Installation & Activation Docs Page"/></a></p>
|
|
||||||
|
|
||||||
###### Configuration Docs
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux/configuration" target="_blank"><img src="https://user-images.githubusercontent.com/7836623/58762760-451fc300-8553-11e9-861c-1a0925d20d66.png" alt="Preview: Nord tmux Configuration Docs Page"/></a></p>
|
|
||||||
|
|
||||||
###### Plugin Support Docs
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux/customization" target="_blank"><img src="https://user-images.githubusercontent.com/7836623/58762761-4ea92b00-8553-11e9-929a-14dfd6690b36.png" alt="Preview: Nord tmux Plugin Support Docs Page"/></a></p>
|
|
||||||
|
|
||||||
**Patched Font Characters** — #5 ⇄ #11 (⊶ 0809657f) by [@petrhosek][gh-user-petrhosek]
|
|
||||||
↠ Added a new theme configuration to [disable patched fonts for the default status content][nord-docs-config-font-no-patched] by setting the `@nord_tmux_no_patched_font` variable to `1`.
|
|
||||||
It can be used facing rendering problems with incompatible terminals or fonts.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
set -g @nord_tmux_no_patched_font "1"
|
|
||||||
```
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux/configuration#patched-font-characters" target="_blank"><img src="https://raw.githubusercontent.com/nordtheme/web/main/src/assets/images/ports/tmux/config-no-patched-font.png"/></a></p>
|
|
||||||
|
|
||||||
**Optional Status Bar Content** — #7, #10 ⇄ #8, #12 (⊶ 27754979) by [@tsroten][gh-user-tsroten] and [@rgcr][gh-user-rgcr]
|
|
||||||
↠ Added a new theme configuration to [disable the default predefined status bar content][nord-docs-config-default-content], allowing to customize the status content, e.g. adding other plugins or adjust the layout, by setting the `@nord_tmux_show_status_content` variable to `0`:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
set -g @nord_tmux_show_status_content "0"
|
|
||||||
```
|
|
||||||
|
|
||||||
<p align="center"><a href="https://www.nordtheme.com/docs/ports/tmux/configuration#default-status-bar-content" target="_blank"><img src="https://raw.githubusercontent.com/nordtheme/web/main/src/assets/images/ports/tmux/config-no-status-bar-content.png"/></a></p>
|
|
||||||
|
|
||||||
## Improvements
|
|
||||||
|
|
||||||
**Respect User's Status Bar Positioning** — #13 ⇄ #14 (⊶ ee5542c5) by [@drzel][gh-user-drzel]
|
|
||||||
↠ Removed the `status-position` property in order to respect the user's preferred status bar positioning configuration instead of overriding it.
|
|
||||||
|
|
||||||
**More Spacing** — #16 (⊶ 2da9466c) by [@dylnmc][gh-user-dylnmc]
|
|
||||||
↠ Added a space character to the first and last status bar element in order to improve the visual appearance to make it look not so squeezed together.
|
|
||||||
|
|
||||||
<p align="center"><p>Before</p>
|
|
||||||
|
|
||||||
<p align="center"><img src="https://user-images.githubusercontent.com/7635158/32998484-6a5ccc88-cd69-11e7-87bd-7b947c977fd1.png"/></p>
|
|
||||||
|
|
||||||
<p align="center"><p>After</p>
|
|
||||||
|
|
||||||
<p align="center"><img src="https://user-images.githubusercontent.com/7635158/32998486-6e7240a0-cd69-11e7-8ef1-b3b2d69fea2c.png"/></p>
|
|
||||||
|
|
||||||
## Bug Fixes
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
|
|
||||||
**Typo In `source-file` Command** — #32 (⊶ 72b0b3fb) by [@rememberYou][gh-user-rememberyou]
|
|
||||||
↠ Fixed a typo in the README for the `source-file` command.
|
|
||||||
|
|
||||||
## Tasks
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
|
|
||||||
**More Spacing** — #16 (⊶ 2da9466c) by [@dylnmc][gh-user-dylnmc]
|
|
||||||
↠ Added a space character to the first and last status bar element in order to improve the visual appearance to make it look not so squeezed together.
|
|
||||||
|
|
||||||
**MIT License** — #19 ⇄ #20 (⊶ 4d39639a)
|
|
||||||
↠ Adapted to the MIT license migration of the Nord project. Detailed information can be found in the main task ticket [nordtheme/nord#55][].
|
|
||||||
|
|
||||||
# 0.2.0
|
|
||||||
|
|
||||||
_2017-04-22_
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
### Plugin Support
|
|
||||||
|
|
||||||
❯ Implemented support for the [tmux-prefix-highlight](https://github.com/tmux-plugins/tmux-prefix-highlight) _prefix_- and `copy-mode` status indicator. (@kepbod, #3, 166c8956)
|
|
||||||
|
|
||||||
<p align="center"><img src="https://raw.githubusercontent.com/nordtheme/tmux/develop/src/assets/scrot-plugin-support-tmux-prefix-highlight.png"/><br><img src="https://raw.githubusercontent.com/nordtheme/tmux/develop/src/assets/scrot-plugin-support-tmux-prefix-highlight-copy-mode.png"/></p>
|
|
||||||
|
|
||||||
# 0.1.1
|
|
||||||
|
|
||||||
_2017-04-21_
|
|
||||||
|
|
||||||
## Bug Fixes
|
|
||||||
|
|
||||||
❯ Fixed the plugin to be not loadable due to the missing `#!/usr/bin/env bash` hashbang and `+x` permission flag for the plugin loader [`nord.tmux`](https://github.com/nordtheme/tmux/blob/develop/nord.tmux) which caused `tpm` to exit with code `126`. (@svengreb, #4, c049da5e)
|
|
||||||
|
|
||||||
# 0.1.0
|
|
||||||
|
|
||||||
_2017-04-20_
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
Detailed information about features and install instructions can be found in the [README](https://github.com/nordtheme/tmux/blob/develop/readme.md#installation).
|
|
||||||
|
|
||||||
❯ Implemented the main color theme file [`nord.conf`](https://github.com/nordtheme/tmux/blob/develop/src/nord.conf). (@svengreb, #1, e759aedc)
|
|
||||||
|
|
||||||
<p align="center"><img src="https://raw.githubusercontent.com/nordtheme/tmux/develop/src/assets/scrot-top.png"/></p>
|
|
||||||
|
|
||||||
❯ Implemented the [`tpm`](https://github.com/tmux-plugins/tpm) plugin loader [`nord.tmux`](https://github.com/nordtheme/tmux/blob/develop/nord.tmux). (@svengreb, #2, e58b52e9)
|
|
||||||
|
|
||||||
# 0.0.0
|
|
||||||
|
|
||||||
_2016-04-20_
|
|
||||||
❯ **Project Initialization**
|
|
||||||
|
|
||||||
[nordtheme/nord#55]: https://github.com/nordtheme/nord/issues/55
|
|
||||||
[gh-user-drzel]: https://github.com/drzel
|
|
||||||
[gh-user-dylnmc]: https://github.com/dylnmc
|
|
||||||
[gh-user-petrhosek]: https://github.com/petrhosek
|
|
||||||
[gh-user-rememberyou]: https://github.com/rememberYou
|
|
||||||
[gh-user-rgcr]: https://github.com/rgcr
|
|
||||||
[gh-user-tsroten]: https://github.com/tsroten
|
|
||||||
[nord-docs-config-default-content]: https://www.nordtheme.com/docs/ports/tmux/configuration#default-status-bar-content
|
|
||||||
[nord-docs-config-font-no-patched]: https://www.nordtheme.com/docs/ports/tmux/configuration#patched-font-characters
|
|
||||||
[nord-docs#153]: https://github.com/nordtheme/web/pull/153
|
|
||||||
[nord]: https://www.nordtheme.com
|
|
|
@ -1,27 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Configurations for EditorConfig.
|
|
||||||
# See https://editorconfig.org/#file-format-details for more details.
|
|
||||||
|
|
||||||
# +--------------------+
|
|
||||||
# + Base Configuration +
|
|
||||||
# +--------------------+
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
|
||||||
insert_final_newline = true
|
|
||||||
max_line_length = 160
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
# +-----------+
|
|
||||||
# + Languages +
|
|
||||||
# +-----------+
|
|
||||||
# +--- Markdown ---+
|
|
||||||
[*.{md}]
|
|
||||||
max_line_length = off
|
|
||||||
trim_trailing_whitespace = false
|
|
|
@ -1,14 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Path match pattern to ignore (i.e. not lint) certain files and folders.
|
|
||||||
# References:
|
|
||||||
# 1. https://eslint.org/docs/latest/use/configure/ignore
|
|
||||||
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# Explicitly include specific "dotfiles".
|
|
||||||
# ESLint automatically applies ignore pattern for "dotfiles" by default to prevent accidentally lint over paths like
|
|
||||||
# `.git` or any other critical paths.
|
|
||||||
!**/.eslintrc.js
|
|
||||||
!.remarkrc.mjs
|
|
|
@ -1,32 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
* This source code is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license found in the license file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configurations for ESLint.
|
|
||||||
* @see https://eslint.org/docs/latest/use/configure
|
|
||||||
* @see https://eslint.org/docs/latest/use/configure/#using-configuration-files
|
|
||||||
* @see https://eslint.org/docs/latest/use/configure/#specifying-environments
|
|
||||||
* @see https://eslint.org/docs/latest/rules
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
extends: [
|
|
||||||
"@svengreb/eslint-config-base",
|
|
||||||
/*
|
|
||||||
* Enable support for projects using Prettier.
|
|
||||||
* Note that this must always be placed after the `@svengreb/eslint-config-base` preset to take precedence, otherwise it won't prevent errors
|
|
||||||
* due to useless and possibly conflicting rules!
|
|
||||||
*/
|
|
||||||
"@svengreb/eslint-config-base/prettier",
|
|
||||||
],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: ["*.js"],
|
|
||||||
rules: {
|
|
||||||
"capitalized-comments": "off",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
ref: refs/heads/develop
|
|
|
@ -1,13 +0,0 @@
|
||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = false
|
|
||||||
logallrefupdates = true
|
|
||||||
[submodule]
|
|
||||||
active = .
|
|
||||||
[remote "origin"]
|
|
||||||
url = https://git::@github.com/arcticicestudio/nord-tmux
|
|
||||||
fetch = +refs/heads/develop:refs/remotes/origin/develop
|
|
||||||
[branch "develop"]
|
|
||||||
remote = origin
|
|
||||||
merge = refs/heads/develop
|
|
|
@ -1 +0,0 @@
|
||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to check the commit log message taken by
|
|
||||||
# applypatch from an e-mail message.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an
|
|
||||||
# appropriate message if it wants to stop the commit. The hook is
|
|
||||||
# allowed to edit the commit message file.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "applypatch-msg".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
|
||||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
|
||||||
:
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to check the commit log message.
|
|
||||||
# Called by "git commit" with one argument, the name of the file
|
|
||||||
# that has the commit message. The hook should exit with non-zero
|
|
||||||
# status after issuing an appropriate message if it wants to stop the
|
|
||||||
# commit. The hook is allowed to edit the commit message file.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "commit-msg".
|
|
||||||
|
|
||||||
# Uncomment the below to add a Signed-off-by line to the message.
|
|
||||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
|
||||||
# hook is more suited to it.
|
|
||||||
#
|
|
||||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
||||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
|
||||||
|
|
||||||
# This example catches duplicate Signed-off-by lines.
|
|
||||||
|
|
||||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
|
||||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
|
||||||
echo >&2 Duplicate Signed-off-by lines.
|
|
||||||
exit 1
|
|
||||||
}
|
|
|
@ -1,174 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use IPC::Open2;
|
|
||||||
|
|
||||||
# An example hook script to integrate Watchman
|
|
||||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
|
||||||
# new and modified files.
|
|
||||||
#
|
|
||||||
# The hook is passed a version (currently 2) and last update token
|
|
||||||
# formatted as a string and outputs to stdout a new update token and
|
|
||||||
# all files that have been modified since the update token. Paths must
|
|
||||||
# be relative to the root of the working tree and separated by a single NUL.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "query-watchman" and set
|
|
||||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
|
||||||
#
|
|
||||||
my ($version, $last_update_token) = @ARGV;
|
|
||||||
|
|
||||||
# Uncomment for debugging
|
|
||||||
# print STDERR "$0 $version $last_update_token\n";
|
|
||||||
|
|
||||||
# Check the hook interface version
|
|
||||||
if ($version ne 2) {
|
|
||||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
|
||||||
"Falling back to scanning...\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
my $git_work_tree = get_working_dir();
|
|
||||||
|
|
||||||
my $retry = 1;
|
|
||||||
|
|
||||||
my $json_pkg;
|
|
||||||
eval {
|
|
||||||
require JSON::XS;
|
|
||||||
$json_pkg = "JSON::XS";
|
|
||||||
1;
|
|
||||||
} or do {
|
|
||||||
require JSON::PP;
|
|
||||||
$json_pkg = "JSON::PP";
|
|
||||||
};
|
|
||||||
|
|
||||||
launch_watchman();
|
|
||||||
|
|
||||||
sub launch_watchman {
|
|
||||||
my $o = watchman_query();
|
|
||||||
if (is_work_tree_watched($o)) {
|
|
||||||
output_result($o->{clock}, @{$o->{files}});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output_result {
|
|
||||||
my ($clockid, @files) = @_;
|
|
||||||
|
|
||||||
# Uncomment for debugging watchman output
|
|
||||||
# open (my $fh, ">", ".git/watchman-output.out");
|
|
||||||
# binmode $fh, ":utf8";
|
|
||||||
# print $fh "$clockid\n@files\n";
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
binmode STDOUT, ":utf8";
|
|
||||||
print $clockid;
|
|
||||||
print "\0";
|
|
||||||
local $, = "\0";
|
|
||||||
print @files;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub watchman_clock {
|
|
||||||
my $response = qx/watchman clock "$git_work_tree"/;
|
|
||||||
die "Failed to get clock id on '$git_work_tree'.\n" .
|
|
||||||
"Falling back to scanning...\n" if $? != 0;
|
|
||||||
|
|
||||||
return $json_pkg->new->utf8->decode($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub watchman_query {
|
|
||||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
|
||||||
or die "open2() failed: $!\n" .
|
|
||||||
"Falling back to scanning...\n";
|
|
||||||
|
|
||||||
# In the query expression below we're asking for names of files that
|
|
||||||
# changed since $last_update_token but not from the .git folder.
|
|
||||||
#
|
|
||||||
# To accomplish this, we're using the "since" generator to use the
|
|
||||||
# recency index to select candidate nodes and "fields" to limit the
|
|
||||||
# output to file names only. Then we're using the "expression" term to
|
|
||||||
# further constrain the results.
|
|
||||||
my $last_update_line = "";
|
|
||||||
if (substr($last_update_token, 0, 1) eq "c") {
|
|
||||||
$last_update_token = "\"$last_update_token\"";
|
|
||||||
$last_update_line = qq[\n"since": $last_update_token,];
|
|
||||||
}
|
|
||||||
my $query = <<" END";
|
|
||||||
["query", "$git_work_tree", {$last_update_line
|
|
||||||
"fields": ["name"],
|
|
||||||
"expression": ["not", ["dirname", ".git"]]
|
|
||||||
}]
|
|
||||||
END
|
|
||||||
|
|
||||||
# Uncomment for debugging the watchman query
|
|
||||||
# open (my $fh, ">", ".git/watchman-query.json");
|
|
||||||
# print $fh $query;
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
print CHLD_IN $query;
|
|
||||||
close CHLD_IN;
|
|
||||||
my $response = do {local $/; <CHLD_OUT>};
|
|
||||||
|
|
||||||
# Uncomment for debugging the watch response
|
|
||||||
# open ($fh, ">", ".git/watchman-response.json");
|
|
||||||
# print $fh $response;
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
die "Watchman: command returned no output.\n" .
|
|
||||||
"Falling back to scanning...\n" if $response eq "";
|
|
||||||
die "Watchman: command returned invalid output: $response\n" .
|
|
||||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
|
||||||
|
|
||||||
return $json_pkg->new->utf8->decode($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub is_work_tree_watched {
|
|
||||||
my ($output) = @_;
|
|
||||||
my $error = $output->{error};
|
|
||||||
if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
|
||||||
$retry--;
|
|
||||||
my $response = qx/watchman watch "$git_work_tree"/;
|
|
||||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
|
||||||
"Falling back to scanning...\n" if $? != 0;
|
|
||||||
$output = $json_pkg->new->utf8->decode($response);
|
|
||||||
$error = $output->{error};
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
# Uncomment for debugging watchman output
|
|
||||||
# open (my $fh, ">", ".git/watchman-output.out");
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
# Watchman will always return all files on the first query so
|
|
||||||
# return the fast "everything is dirty" flag to git and do the
|
|
||||||
# Watchman query just to get it over with now so we won't pay
|
|
||||||
# the cost in git to look up each individual file.
|
|
||||||
my $o = watchman_clock();
|
|
||||||
$error = $output->{error};
|
|
||||||
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
output_result($o->{clock}, ("/"));
|
|
||||||
$last_update_token = $o->{clock};
|
|
||||||
|
|
||||||
eval { launch_watchman() };
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_working_dir {
|
|
||||||
my $working_dir;
|
|
||||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
|
||||||
$working_dir = Win32::GetCwd();
|
|
||||||
$working_dir =~ tr/\\/\//;
|
|
||||||
} else {
|
|
||||||
require Cwd;
|
|
||||||
$working_dir = Cwd::cwd();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $working_dir;
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to prepare a packed repository for use over
|
|
||||||
# dumb transports.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "post-update".
|
|
||||||
|
|
||||||
exec git update-server-info
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed
|
|
||||||
# by applypatch from an e-mail message.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an
|
|
||||||
# appropriate message if it wants to stop the commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-applypatch".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
|
||||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
|
||||||
:
|
|
|
@ -1,49 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed.
|
|
||||||
# Called by "git commit" with no arguments. The hook should
|
|
||||||
# exit with non-zero status after issuing an appropriate message if
|
|
||||||
# it wants to stop the commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-commit".
|
|
||||||
|
|
||||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
against=HEAD
|
|
||||||
else
|
|
||||||
# Initial commit: diff against an empty tree object
|
|
||||||
against=$(git hash-object -t tree /dev/null)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If you want to allow non-ASCII filenames set this variable to true.
|
|
||||||
allownonascii=$(git config --type=bool hooks.allownonascii)
|
|
||||||
|
|
||||||
# Redirect output to stderr.
|
|
||||||
exec 1>&2
|
|
||||||
|
|
||||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
|
||||||
# them from being added to the repository. We exploit the fact that the
|
|
||||||
# printable range starts at the space character and ends with tilde.
|
|
||||||
if [ "$allownonascii" != "true" ] &&
|
|
||||||
# Note that the use of brackets around a tr range is ok here, (it's
|
|
||||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
|
||||||
# the square bracket bytes happen to fall in the designated range.
|
|
||||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
|
||||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
|
||||||
then
|
|
||||||
cat <<\EOF
|
|
||||||
Error: Attempt to add a non-ASCII file name.
|
|
||||||
|
|
||||||
This can cause problems if you want to work with people on other platforms.
|
|
||||||
|
|
||||||
To be portable it is advisable to rename the file.
|
|
||||||
|
|
||||||
If you know what you are doing you can disable this check using:
|
|
||||||
|
|
||||||
git config hooks.allownonascii true
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If there are whitespace errors, print the offending file names and fail.
|
|
||||||
exec git diff-index --check --cached $against --
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed.
|
|
||||||
# Called by "git merge" with no arguments. The hook should
|
|
||||||
# exit with non-zero status after issuing an appropriate message to
|
|
||||||
# stderr if it wants to stop the merge commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-merge-commit".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
test -x "$GIT_DIR/hooks/pre-commit" &&
|
|
||||||
exec "$GIT_DIR/hooks/pre-commit"
|
|
||||||
:
|
|
|
@ -1,53 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to verify what is about to be pushed. Called by "git
|
|
||||||
# push" after it has checked the remote status, but before anything has been
|
|
||||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
|
||||||
#
|
|
||||||
# This hook is called with the following parameters:
|
|
||||||
#
|
|
||||||
# $1 -- Name of the remote to which the push is being done
|
|
||||||
# $2 -- URL to which the push is being done
|
|
||||||
#
|
|
||||||
# If pushing without using a named remote those arguments will be equal.
|
|
||||||
#
|
|
||||||
# Information about the commits which are being pushed is supplied as lines to
|
|
||||||
# the standard input in the form:
|
|
||||||
#
|
|
||||||
# <local ref> <local oid> <remote ref> <remote oid>
|
|
||||||
#
|
|
||||||
# This sample shows how to prevent push of commits where the log message starts
|
|
||||||
# with "WIP" (work in progress).
|
|
||||||
|
|
||||||
remote="$1"
|
|
||||||
url="$2"
|
|
||||||
|
|
||||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
|
||||||
|
|
||||||
while read local_ref local_oid remote_ref remote_oid
|
|
||||||
do
|
|
||||||
if test "$local_oid" = "$zero"
|
|
||||||
then
|
|
||||||
# Handle delete
|
|
||||||
:
|
|
||||||
else
|
|
||||||
if test "$remote_oid" = "$zero"
|
|
||||||
then
|
|
||||||
# New branch, examine all commits
|
|
||||||
range="$local_oid"
|
|
||||||
else
|
|
||||||
# Update to existing branch, examine new commits
|
|
||||||
range="$remote_oid..$local_oid"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for WIP commit
|
|
||||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
|
||||||
if test -n "$commit"
|
|
||||||
then
|
|
||||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,169 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
|
||||||
#
|
|
||||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
|
||||||
# its job, and can prevent the command from running by exiting with
|
|
||||||
# non-zero status.
|
|
||||||
#
|
|
||||||
# The hook is called with the following parameters:
|
|
||||||
#
|
|
||||||
# $1 -- the upstream the series was forked from.
|
|
||||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
|
||||||
#
|
|
||||||
# This sample shows how to prevent topic branches that are already
|
|
||||||
# merged to 'next' branch from getting rebased, because allowing it
|
|
||||||
# would result in rebasing already published history.
|
|
||||||
|
|
||||||
publish=next
|
|
||||||
basebranch="$1"
|
|
||||||
if test "$#" = 2
|
|
||||||
then
|
|
||||||
topic="refs/heads/$2"
|
|
||||||
else
|
|
||||||
topic=`git symbolic-ref HEAD` ||
|
|
||||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$topic" in
|
|
||||||
refs/heads/??/*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit 0 ;# we do not interrupt others.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Now we are dealing with a topic branch being rebased
|
|
||||||
# on top of master. Is it OK to rebase it?
|
|
||||||
|
|
||||||
# Does the topic really exist?
|
|
||||||
git show-ref -q "$topic" || {
|
|
||||||
echo >&2 "No such branch $topic"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Is topic fully merged to master?
|
|
||||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
|
||||||
if test -z "$not_in_master"
|
|
||||||
then
|
|
||||||
echo >&2 "$topic is fully merged to master; better remove it."
|
|
||||||
exit 1 ;# we could allow it, but there is no point.
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
|
||||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
|
||||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
|
||||||
if test "$only_next_1" = "$only_next_2"
|
|
||||||
then
|
|
||||||
not_in_topic=`git rev-list "^$topic" master`
|
|
||||||
if test -z "$not_in_topic"
|
|
||||||
then
|
|
||||||
echo >&2 "$topic is already up to date with master"
|
|
||||||
exit 1 ;# we could allow it, but there is no point.
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
|
||||||
/usr/bin/perl -e '
|
|
||||||
my $topic = $ARGV[0];
|
|
||||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
|
||||||
my (%not_in_next) = map {
|
|
||||||
/^([0-9a-f]+) /;
|
|
||||||
($1 => 1);
|
|
||||||
} split(/\n/, $ARGV[1]);
|
|
||||||
for my $elem (map {
|
|
||||||
/^([0-9a-f]+) (.*)$/;
|
|
||||||
[$1 => $2];
|
|
||||||
} split(/\n/, $ARGV[2])) {
|
|
||||||
if (!exists $not_in_next{$elem->[0]}) {
|
|
||||||
if ($msg) {
|
|
||||||
print STDERR $msg;
|
|
||||||
undef $msg;
|
|
||||||
}
|
|
||||||
print STDERR " $elem->[1]\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
' "$topic" "$not_in_next" "$not_in_master"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
<<\DOC_END
|
|
||||||
|
|
||||||
This sample hook safeguards topic branches that have been
|
|
||||||
published from being rewound.
|
|
||||||
|
|
||||||
The workflow assumed here is:
|
|
||||||
|
|
||||||
* Once a topic branch forks from "master", "master" is never
|
|
||||||
merged into it again (either directly or indirectly).
|
|
||||||
|
|
||||||
* Once a topic branch is fully cooked and merged into "master",
|
|
||||||
it is deleted. If you need to build on top of it to correct
|
|
||||||
earlier mistakes, a new topic branch is created by forking at
|
|
||||||
the tip of the "master". This is not strictly necessary, but
|
|
||||||
it makes it easier to keep your history simple.
|
|
||||||
|
|
||||||
* Whenever you need to test or publish your changes to topic
|
|
||||||
branches, merge them into "next" branch.
|
|
||||||
|
|
||||||
The script, being an example, hardcodes the publish branch name
|
|
||||||
to be "next", but it is trivial to make it configurable via
|
|
||||||
$GIT_DIR/config mechanism.
|
|
||||||
|
|
||||||
With this workflow, you would want to know:
|
|
||||||
|
|
||||||
(1) ... if a topic branch has ever been merged to "next". Young
|
|
||||||
topic branches can have stupid mistakes you would rather
|
|
||||||
clean up before publishing, and things that have not been
|
|
||||||
merged into other branches can be easily rebased without
|
|
||||||
affecting other people. But once it is published, you would
|
|
||||||
not want to rewind it.
|
|
||||||
|
|
||||||
(2) ... if a topic branch has been fully merged to "master".
|
|
||||||
Then you can delete it. More importantly, you should not
|
|
||||||
build on top of it -- other people may already want to
|
|
||||||
change things related to the topic as patches against your
|
|
||||||
"master", so if you need further changes, it is better to
|
|
||||||
fork the topic (perhaps with the same name) afresh from the
|
|
||||||
tip of "master".
|
|
||||||
|
|
||||||
Let's look at this example:
|
|
||||||
|
|
||||||
o---o---o---o---o---o---o---o---o---o "next"
|
|
||||||
/ / / /
|
|
||||||
/ a---a---b A / /
|
|
||||||
/ / / /
|
|
||||||
/ / c---c---c---c B /
|
|
||||||
/ / / \ /
|
|
||||||
/ / / b---b C \ /
|
|
||||||
/ / / / \ /
|
|
||||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
|
||||||
|
|
||||||
|
|
||||||
A, B and C are topic branches.
|
|
||||||
|
|
||||||
* A has one fix since it was merged up to "next".
|
|
||||||
|
|
||||||
* B has finished. It has been fully merged up to "master" and "next",
|
|
||||||
and is ready to be deleted.
|
|
||||||
|
|
||||||
* C has not merged to "next" at all.
|
|
||||||
|
|
||||||
We would want to allow C to be rebased, refuse A, and encourage
|
|
||||||
B to be deleted.
|
|
||||||
|
|
||||||
To compute (1):
|
|
||||||
|
|
||||||
git rev-list ^master ^topic next
|
|
||||||
git rev-list ^master next
|
|
||||||
|
|
||||||
if these match, topic has not merged in next at all.
|
|
||||||
|
|
||||||
To compute (2):
|
|
||||||
|
|
||||||
git rev-list master..topic
|
|
||||||
|
|
||||||
if this is empty, it is fully merged to "master".
|
|
||||||
|
|
||||||
DOC_END
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to make use of push options.
|
|
||||||
# The example simply echoes all push options that start with 'echoback='
|
|
||||||
# and rejects all pushes when the "reject" push option is used.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-receive".
|
|
||||||
|
|
||||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
|
||||||
then
|
|
||||||
i=0
|
|
||||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
|
||||||
do
|
|
||||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
|
||||||
case "$value" in
|
|
||||||
echoback=*)
|
|
||||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
|
||||||
;;
|
|
||||||
reject)
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
i=$((i + 1))
|
|
||||||
done
|
|
||||||
fi
|
|
|
@ -1,42 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to prepare the commit log message.
|
|
||||||
# Called by "git commit" with the name of the file that has the
|
|
||||||
# commit message, followed by the description of the commit
|
|
||||||
# message's source. The hook's purpose is to edit the commit
|
|
||||||
# message file. If the hook fails with a non-zero status,
|
|
||||||
# the commit is aborted.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
|
||||||
|
|
||||||
# This hook includes three examples. The first one removes the
|
|
||||||
# "# Please enter the commit message..." help message.
|
|
||||||
#
|
|
||||||
# The second includes the output of "git diff --name-status -r"
|
|
||||||
# into the message, just before the "git status" output. It is
|
|
||||||
# commented because it doesn't cope with --amend or with squashed
|
|
||||||
# commits.
|
|
||||||
#
|
|
||||||
# The third example adds a Signed-off-by line to the message, that can
|
|
||||||
# still be edited. This is rarely a good idea.
|
|
||||||
|
|
||||||
COMMIT_MSG_FILE=$1
|
|
||||||
COMMIT_SOURCE=$2
|
|
||||||
SHA1=$3
|
|
||||||
|
|
||||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
|
||||||
|
|
||||||
# case "$COMMIT_SOURCE,$SHA1" in
|
|
||||||
# ,|template,)
|
|
||||||
# /usr/bin/perl -i.bak -pe '
|
|
||||||
# print "\n" . `git diff --cached --name-status -r`
|
|
||||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
|
||||||
# *) ;;
|
|
||||||
# esac
|
|
||||||
|
|
||||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
||||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
|
||||||
# if test -z "$COMMIT_SOURCE"
|
|
||||||
# then
|
|
||||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
|
||||||
# fi
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to update a checked-out tree on a git push.
|
|
||||||
#
|
|
||||||
# This hook is invoked by git-receive-pack(1) when it reacts to git
|
|
||||||
# push and updates reference(s) in its repository, and when the push
|
|
||||||
# tries to update the branch that is currently checked out and the
|
|
||||||
# receive.denyCurrentBranch configuration variable is set to
|
|
||||||
# updateInstead.
|
|
||||||
#
|
|
||||||
# By default, such a push is refused if the working tree and the index
|
|
||||||
# of the remote repository has any difference from the currently
|
|
||||||
# checked out commit; when both the working tree and the index match
|
|
||||||
# the current commit, they are updated to match the newly pushed tip
|
|
||||||
# of the branch. This hook is to be used to override the default
|
|
||||||
# behaviour; however the code below reimplements the default behaviour
|
|
||||||
# as a starting point for convenient modification.
|
|
||||||
#
|
|
||||||
# The hook receives the commit with which the tip of the current
|
|
||||||
# branch is going to be updated:
|
|
||||||
commit=$1
|
|
||||||
|
|
||||||
# It can exit with a non-zero status to refuse the push (when it does
|
|
||||||
# so, it must not modify the index or the working tree).
|
|
||||||
die () {
|
|
||||||
echo >&2 "$*"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Or it can make any necessary changes to the working tree and to the
|
|
||||||
# index to bring them to the desired state when the tip of the current
|
|
||||||
# branch is updated to the new commit, and exit with a zero status.
|
|
||||||
#
|
|
||||||
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
|
|
||||||
# in order to emulate git fetch that is run in the reverse direction
|
|
||||||
# with git push, as the two-tree form of git read-tree -u -m is
|
|
||||||
# essentially the same as git switch or git checkout that switches
|
|
||||||
# branches while keeping the local changes in the working tree that do
|
|
||||||
# not interfere with the difference between the branches.
|
|
||||||
|
|
||||||
# The below is a more-or-less exact translation to shell of the C code
|
|
||||||
# for the default behaviour for git's push-to-checkout hook defined in
|
|
||||||
# the push_to_deploy() function in builtin/receive-pack.c.
|
|
||||||
#
|
|
||||||
# Note that the hook will be executed from the repository directory,
|
|
||||||
# not from the working tree, so if you want to perform operations on
|
|
||||||
# the working tree, you will have to adapt your code accordingly, e.g.
|
|
||||||
# by adding "cd .." or using relative paths.
|
|
||||||
|
|
||||||
if ! git update-index -q --ignore-submodules --refresh
|
|
||||||
then
|
|
||||||
die "Up-to-date check failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff-files --quiet --ignore-submodules --
|
|
||||||
then
|
|
||||||
die "Working directory has unstaged changes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This is a rough translation of:
|
|
||||||
#
|
|
||||||
# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
|
|
||||||
if git cat-file -e HEAD 2>/dev/null
|
|
||||||
then
|
|
||||||
head=HEAD
|
|
||||||
else
|
|
||||||
head=$(git hash-object -t tree --stdin </dev/null)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff-index --quiet --cached --ignore-submodules $head --
|
|
||||||
then
|
|
||||||
die "Working directory has staged changes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git read-tree -u -m "$commit"
|
|
||||||
then
|
|
||||||
die "Could not update working tree to new HEAD"
|
|
||||||
fi
|
|
|
@ -1,77 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to validate a patch (and/or patch series) before
|
|
||||||
# sending it via email.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an appropriate
|
|
||||||
# message if it wants to prevent the email(s) from being sent.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "sendemail-validate".
|
|
||||||
#
|
|
||||||
# By default, it will only check that the patch(es) can be applied on top of
|
|
||||||
# the default upstream branch without conflicts in a secondary worktree. After
|
|
||||||
# validation (successful or not) of the last patch of a series, the worktree
|
|
||||||
# will be deleted.
|
|
||||||
#
|
|
||||||
# The following config variables can be set to change the default remote and
|
|
||||||
# remote ref that are used to apply the patches against:
|
|
||||||
#
|
|
||||||
# sendemail.validateRemote (default: origin)
|
|
||||||
# sendemail.validateRemoteRef (default: HEAD)
|
|
||||||
#
|
|
||||||
# Replace the TODO placeholders with appropriate checks according to your
|
|
||||||
# needs.
|
|
||||||
|
|
||||||
validate_cover_letter () {
|
|
||||||
file="$1"
|
|
||||||
# TODO: Replace with appropriate checks (e.g. spell checking).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_patch () {
|
|
||||||
file="$1"
|
|
||||||
# Ensure that the patch applies without conflicts.
|
|
||||||
git am -3 "$file" || return
|
|
||||||
# TODO: Replace with appropriate checks for this patch
|
|
||||||
# (e.g. checkpatch.pl).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_series () {
|
|
||||||
# TODO: Replace with appropriate checks for the whole series
|
|
||||||
# (e.g. quick build, coding style checks, etc.).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
# main -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
|
|
||||||
then
|
|
||||||
remote=$(git config --default origin --get sendemail.validateRemote) &&
|
|
||||||
ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
|
|
||||||
worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
|
|
||||||
git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
|
|
||||||
git config --replace-all sendemail.validateWorktree "$worktree"
|
|
||||||
else
|
|
||||||
worktree=$(git config --get sendemail.validateWorktree)
|
|
||||||
fi || {
|
|
||||||
echo "sendemail-validate: error: failed to prepare worktree" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
unset GIT_DIR GIT_WORK_TREE
|
|
||||||
cd "$worktree" &&
|
|
||||||
|
|
||||||
if grep -q "^diff --git " "$1"
|
|
||||||
then
|
|
||||||
validate_patch "$1"
|
|
||||||
else
|
|
||||||
validate_cover_letter "$1"
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"
|
|
||||||
then
|
|
||||||
git config --unset-all sendemail.validateWorktree &&
|
|
||||||
trap 'git worktree remove -ff "$worktree"' EXIT &&
|
|
||||||
validate_series
|
|
||||||
fi
|
|
|
@ -1,128 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to block unannotated tags from entering.
|
|
||||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "update".
|
|
||||||
#
|
|
||||||
# Config
|
|
||||||
# ------
|
|
||||||
# hooks.allowunannotated
|
|
||||||
# This boolean sets whether unannotated tags will be allowed into the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.allowdeletetag
|
|
||||||
# This boolean sets whether deleting tags will be allowed in the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.allowmodifytag
|
|
||||||
# This boolean sets whether a tag may be modified after creation. By default
|
|
||||||
# it won't be.
|
|
||||||
# hooks.allowdeletebranch
|
|
||||||
# This boolean sets whether deleting branches will be allowed in the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.denycreatebranch
|
|
||||||
# This boolean sets whether remotely creating branches will be denied
|
|
||||||
# in the repository. By default this is allowed.
|
|
||||||
#
|
|
||||||
|
|
||||||
# --- Command line
|
|
||||||
refname="$1"
|
|
||||||
oldrev="$2"
|
|
||||||
newrev="$3"
|
|
||||||
|
|
||||||
# --- Safety check
|
|
||||||
if [ -z "$GIT_DIR" ]; then
|
|
||||||
echo "Don't run this script from the command line." >&2
|
|
||||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
|
||||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
|
||||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- Config
|
|
||||||
allowunannotated=$(git config --type=bool hooks.allowunannotated)
|
|
||||||
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
|
|
||||||
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
|
|
||||||
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
|
|
||||||
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
|
|
||||||
|
|
||||||
# check for no description
|
|
||||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
|
||||||
case "$projectdesc" in
|
|
||||||
"Unnamed repository"* | "")
|
|
||||||
echo "*** Project description file hasn't been set" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# --- Check types
|
|
||||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
|
||||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
|
||||||
if [ "$newrev" = "$zero" ]; then
|
|
||||||
newrev_type=delete
|
|
||||||
else
|
|
||||||
newrev_type=$(git cat-file -t $newrev)
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$refname","$newrev_type" in
|
|
||||||
refs/tags/*,commit)
|
|
||||||
# un-annotated tag
|
|
||||||
short_refname=${refname##refs/tags/}
|
|
||||||
if [ "$allowunannotated" != "true" ]; then
|
|
||||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
|
||||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/tags/*,delete)
|
|
||||||
# delete tag
|
|
||||||
if [ "$allowdeletetag" != "true" ]; then
|
|
||||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/tags/*,tag)
|
|
||||||
# annotated tag
|
|
||||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
|
||||||
then
|
|
||||||
echo "*** Tag '$refname' already exists." >&2
|
|
||||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/heads/*,commit)
|
|
||||||
# branch
|
|
||||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
|
||||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/heads/*,delete)
|
|
||||||
# delete branch
|
|
||||||
if [ "$allowdeletebranch" != "true" ]; then
|
|
||||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/remotes/*,commit)
|
|
||||||
# tracking branch
|
|
||||||
;;
|
|
||||||
refs/remotes/*,delete)
|
|
||||||
# delete tracking branch
|
|
||||||
if [ "$allowdeletebranch" != "true" ]; then
|
|
||||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Anything else (is there anything else?)
|
|
||||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# --- Finished
|
|
||||||
exit 0
|
|
Binary file not shown.
|
@ -1,6 +0,0 @@
|
||||||
# git ls-files --others --exclude-from=.git/info/exclude
|
|
||||||
# Lines that start with '#' are comments.
|
|
||||||
# For a project mostly in C, the following would be a good set of
|
|
||||||
# exclude patterns (uncomment them if you want to use them):
|
|
||||||
# *.[oa]
|
|
||||||
# *~
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 Simon Rieger <rieger@netzlink.com> 1699878736 +0100 clone: from https://github.com/arcticicestudio/nord-tmux
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 Simon Rieger <rieger@netzlink.com> 1699878736 +0100 clone: from https://github.com/arcticicestudio/nord-tmux
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 Simon Rieger <rieger@netzlink.com> 1699878736 +0100 clone: from https://github.com/arcticicestudio/nord-tmux
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,2 +0,0 @@
|
||||||
# pack-refs with: peeled fully-peeled sorted
|
|
||||||
f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 refs/remotes/origin/develop
|
|
|
@ -1 +0,0 @@
|
||||||
f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92
|
|
|
@ -1 +0,0 @@
|
||||||
ref: refs/remotes/origin/develop
|
|
|
@ -1 +0,0 @@
|
||||||
4279c6531d50413299746fb5621799dd7eabd7ec
|
|
|
@ -1,12 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Configuration to define attributes per path.
|
|
||||||
#
|
|
||||||
# References:
|
|
||||||
# 1. https://git-scm.com/docs/gitattributes
|
|
||||||
# 2. https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Keyword-Expansion
|
|
||||||
|
|
||||||
# Automatically perform line feed (LF) normalization for files detected as text and
|
|
||||||
# leave all files detected as binary untouched.
|
|
||||||
* text=auto eol=lf
|
|
|
@ -1,14 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Configuration for the GitHub feature to automatically request reviews from the code owners
|
|
||||||
# when a pull request changes any owned files.
|
|
||||||
#
|
|
||||||
# References:
|
|
||||||
# 1. https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-location
|
|
||||||
# 2. https://github.com/blog/2392-introducing-code-owners
|
|
||||||
|
|
||||||
# +----------------------+
|
|
||||||
# + Core Team Code Owner +
|
|
||||||
# +----------------------+
|
|
||||||
* @svengreb
|
|
|
@ -1,10 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Path match pattern to intentionally ignore untracked files and directories.
|
|
||||||
# See https://git-scm.com/docs/gitignore for more details.
|
|
||||||
|
|
||||||
# +---------+
|
|
||||||
# + Node.js +
|
|
||||||
# +---------+
|
|
||||||
node_modules/
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license found in the license file.
|
|
||||||
|
|
||||||
# Git "pre-commit" hook for husky.
|
|
||||||
# References:
|
|
||||||
# 1. https://github.com/typicode/husky
|
|
||||||
# 2. https://git-scm.com/docs/githooks#_pre_commit
|
|
||||||
|
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
npm exec lint-staged
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Configuration for the Git mail mapping feature to coalesce together commits by the same person in the shortlog,
|
|
||||||
# where their name and/or email address was spelled differently or has been changed.
|
|
||||||
# See https://git-scm.com/docs/git-shortlog#_mapping_authors for more details.
|
|
||||||
Sven Greb <development@svengreb.de>
|
|
||||||
Sven Greb <development@svengreb.de> <development@arcticicestudio.com>
|
|
|
@ -1,25 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Configurations for npm.
|
|
||||||
# See https://docs.npmjs.com/cli/v7/configuring-npm/npmrc for more details.
|
|
||||||
|
|
||||||
# Disable the vulnerability auditing and checks which includes often way too many false-positives, insignificant
|
|
||||||
# problems that are only for local development, and many other warnings that are overhelming.
|
|
||||||
# Use dedicated vulnerability tools instead to filter and identify issue that really impact the project.
|
|
||||||
# References:
|
|
||||||
# 1. https://docs.npmjs.com/cli/v9/commands/npm-audit
|
|
||||||
audit=false
|
|
||||||
|
|
||||||
# Only use a lockfile for single-consumer projects, like applications, but not for multi-consumer projects like
|
|
||||||
# libraries.
|
|
||||||
# It helps to pin dependency versions, improves the security through integrity checksums, prevents possible errors
|
|
||||||
# caused by updated transitive dependencies and allows to get deterministic build results, but it can hide problems in
|
|
||||||
# multi-consumer projects when any later versions of a used dependency, or its transitive dependencies, is not
|
|
||||||
# compatible with the own project anymore.
|
|
||||||
package-lock=true
|
|
||||||
|
|
||||||
# Do not resolve to the latest minor and patch updates.
|
|
||||||
# Automatically pin dependencies to exact versions instead of resolving to latest minor and patch updates.
|
|
||||||
# This prevents possible errors caused by updated transitive dependencies.
|
|
||||||
save-exact=true
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Path match pattern to ignore (i.e. not reformat) certain files and folders.
|
|
||||||
# See https://prettier.io/docs/en/ignore for more details.
|
|
||||||
|
|
||||||
.husky/_/
|
|
||||||
node_modules/
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
# Path match pattern to ignore when searching for files.
|
|
||||||
# See https://github.com/unifiedjs/unified-engine/blob/HEAD/doc/ignore.md for more details.
|
|
||||||
|
|
||||||
node_modules/
|
|
||||||
license
|
|
|
@ -1,13 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
* This source code is licensed under the MIT license found in the license file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configurations for remark-lint.
|
|
||||||
* @see https://github.com/remarkjs/remark-lint
|
|
||||||
* @see https://remark.js.org
|
|
||||||
*/
|
|
||||||
export default {
|
|
||||||
plugins: ["@svengreb/remark-preset-lint"],
|
|
||||||
};
|
|
|
@ -1,53 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
NORD_TMUX_COLOR_THEME_FILE=src/nord.conf
|
|
||||||
NORD_TMUX_VERSION=0.3.0
|
|
||||||
NORD_TMUX_STATUS_CONTENT_FILE="src/nord-status-content.conf"
|
|
||||||
NORD_TMUX_STATUS_CONTENT_NO_PATCHED_FONT_FILE="src/nord-status-content-no-patched-font.conf"
|
|
||||||
NORD_TMUX_STATUS_CONTENT_OPTION="@nord_tmux_show_status_content"
|
|
||||||
NORD_TMUX_STATUS_CONTENT_DATE_FORMAT="@nord_tmux_date_format"
|
|
||||||
NORD_TMUX_NO_PATCHED_FONT_OPTION="@nord_tmux_no_patched_font"
|
|
||||||
_current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
|
|
||||||
__cleanup() {
|
|
||||||
unset -v NORD_TMUX_COLOR_THEME_FILE NORD_TMUX_VERSION
|
|
||||||
unset -v NORD_TMUX_STATUS_CONTENT_FILE NORD_TMUX_STATUS_CONTENT_NO_PATCHED_FONT_FILE
|
|
||||||
unset -v NORD_TMUX_STATUS_CONTENT_OPTION NORD_TMUX_NO_PATCHED_FONT_OPTION
|
|
||||||
unset -v NORD_TMUX_STATUS_CONTENT_DATE_FORMAT
|
|
||||||
unset -v _current_dir
|
|
||||||
unset -f __load __cleanup
|
|
||||||
tmux set-environment -gu NORD_TMUX_STATUS_TIME_FORMAT
|
|
||||||
tmux set-environment -gu NORD_TMUX_STATUS_DATE_FORMAT
|
|
||||||
}
|
|
||||||
|
|
||||||
__load() {
|
|
||||||
tmux source-file "$_current_dir/$NORD_TMUX_COLOR_THEME_FILE"
|
|
||||||
|
|
||||||
local status_content=$(tmux show-option -gqv "$NORD_TMUX_STATUS_CONTENT_OPTION")
|
|
||||||
local no_patched_font=$(tmux show-option -gqv "$NORD_TMUX_NO_PATCHED_FONT_OPTION")
|
|
||||||
local date_format=$(tmux show-option -gqv "$NORD_TMUX_STATUS_CONTENT_DATE_FORMAT")
|
|
||||||
|
|
||||||
if [ "$(tmux show-option -gqv "clock-mode-style")" == '12' ]; then
|
|
||||||
tmux set-environment -g NORD_TMUX_STATUS_TIME_FORMAT "%I:%M %p"
|
|
||||||
else
|
|
||||||
tmux set-environment -g NORD_TMUX_STATUS_TIME_FORMAT "%H:%M"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$date_format" ]; then
|
|
||||||
tmux set-environment -g NORD_TMUX_STATUS_DATE_FORMAT "%Y-%m-%d"
|
|
||||||
else
|
|
||||||
tmux set-environment -g NORD_TMUX_STATUS_DATE_FORMAT "$date_format"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$status_content" != "0" ]; then
|
|
||||||
if [ "$no_patched_font" != "1" ]; then
|
|
||||||
tmux source-file "$_current_dir/$NORD_TMUX_STATUS_CONTENT_FILE"
|
|
||||||
else
|
|
||||||
tmux source-file "$_current_dir/$NORD_TMUX_STATUS_CONTENT_NO_PATCHED_FONT_FILE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
__load
|
|
||||||
__cleanup
|
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
* This source code is licensed under the MIT license found in the license file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configurations for lint-staged.
|
|
||||||
* @see https://github.com/okonet/lint-staged#configuration
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
"*.{json,tmux}": "prettier --check --ignore-unknown --no-editorconfig",
|
|
||||||
"*.{js,mjs}": ["eslint", "prettier --check --ignore-unknown --no-editorconfig"],
|
|
||||||
"*.md": ["remark --no-stdout", "prettier --check --ignore-unknown --no-editorconfig"],
|
|
||||||
".husky/pre-*": "prettier --check --ignore-unknown --no-editorconfig",
|
|
||||||
};
|
|
7354
dot_tmux/plugins/nord-tmux/package-lock.json
generated
7354
dot_tmux/plugins/nord-tmux/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,51 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@nordtheme/tmux",
|
|
||||||
"version": "0.3.0",
|
|
||||||
"description": "An arctic, north-bluish clean and elegant tmux color theme",
|
|
||||||
"author": {
|
|
||||||
"name": "Sven Greb",
|
|
||||||
"email": "development@svengreb.de",
|
|
||||||
"url": "https://www.svengreb.de"
|
|
||||||
},
|
|
||||||
"homepage": "https://www.nordtheme.com/ports/tmux",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/nordtheme/tmux.git"
|
|
||||||
},
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/nordtheme/tmux/issues"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"private": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=15.13",
|
|
||||||
"npm": ">=7.7"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"format": "run-s format:*",
|
|
||||||
"format:js": "eslint --fix .",
|
|
||||||
"format:pretty": "prettier --ignore-unknown --no-editorconfig --write \"**\"",
|
|
||||||
"lint": "run-s lint:js lint:md lint:pretty",
|
|
||||||
"lint:ci": "run-s --continue-on-error lint:js lint:md lint:ci:pretty",
|
|
||||||
"lint:ci:pretty": "prettier --check --ignore-unknown --loglevel silent --no-editorconfig --no-error-on-unmatched-pattern \"**\"",
|
|
||||||
"lint:js": "eslint .",
|
|
||||||
"lint:md": "remark --no-stdout . .github/",
|
|
||||||
"lint:pretty": "prettier --check --ignore-unknown --no-editorconfig \"**\"",
|
|
||||||
"prepare:husky": "husky install",
|
|
||||||
"prepare": "run-s prepare:*"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@svengreb/eslint-config-base": ">=0.12.0 <=1.0.0",
|
|
||||||
"@svengreb/remark-preset-lint": ">=0.5.0 <1.0.0",
|
|
||||||
"eslint": "8.39.0",
|
|
||||||
"eslint-config-prettier": "8.8.0",
|
|
||||||
"eslint-plugin-import": "2.27.5",
|
|
||||||
"eslint-plugin-prettier": "4.2.1",
|
|
||||||
"husky": "8.0.3",
|
|
||||||
"lint-staged": "13.2.2",
|
|
||||||
"npm-run-all": "4.1.5",
|
|
||||||
"prettier": "2.8.8",
|
|
||||||
"prettier-plugin-sh": "0.12.8",
|
|
||||||
"remark-cli": "11.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
* This source code is licensed under the MIT license found in the license file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configurations for Prettier.
|
|
||||||
* @see https://prettier.io/docs/en/configuration.html
|
|
||||||
* @see https://prettier.io/docs/en/options.html
|
|
||||||
* @see https://prettier.io/docs/en/options.html#parser
|
|
||||||
* @see https://prettier.io/docs/en/plugins.html
|
|
||||||
* @see https://github.com/un-ts/prettier/tree/master/packages/sh
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
printWidth: 160,
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: [".husky/*", "*.tmux"],
|
|
||||||
options: {
|
|
||||||
parser: "sh",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
|
@ -1,169 +0,0 @@
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux" target="_blank">
|
|
||||||
<picture>
|
|
||||||
<source srcset="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/repository-hero.svg?sanitize=true" width="100%" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" />
|
|
||||||
<img srcset="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/repository-hero.svg?sanitize=true" width="100%" />
|
|
||||||
</picture>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/nordtheme/tmux/releases/latest" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/nordtheme/tmux.svg?style=flat-square&label=Release&logo=github&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.nordtheme.com/docs/ports/tmux" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/nordtheme/tmux.svg?style=flat-square&label=Docs&colorA=4c566a&colorB=88c0d0&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI%2BCiAgICA8cGF0aCBmaWxsPSIjZDhkZWU5IiBkPSJNMTMuNzQ2IDIuODEzYS42Ny42NyAwIDAgMC0uNTU5LS4xMzNMOCAzLjg0OGwtNS4xODgtMS4xOGEuNjY5LjY2OSAwIDAgMC0uNTcuMTMzLjY3Ny42NzcgMCAwIDAtLjI0Mi41MzF2OC4xMzNjLS4wMDguMzIuMjEuNTk4LjUyLjY2OGw1LjMzMiAxLjE5OWguMjk2bDUuMzMyLTEuMmEuNjY4LjY2OCAwIDAgMCAuNTItLjY2N1YzLjMzMmEuNjU5LjY1OSAwIDAgMC0uMjU0LS41MnpNMy4zMzIgNC4xNjhsNCAuODk4djYuNzY2bC00LS44OTh6bTkuMzM2IDYuNzY2bC00IC44OThWNS4wNjZsNC0uODk4em0wIDAiLz4KPC9zdmc%2BCg%3D%3D"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/nordtheme/tmux/blob/develop/changelog.md" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/nordtheme/tmux.svg?style=flat-square&label=Changelog&logo=github&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/svengreb/styleguide-javascript/releases/latest" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/svengreb/styleguide-javascript.svg?style=flat-square&label=JavaScript%20Style%20Guide&logoColor=eceff4&colorA=4c566a&colorB=88c0d0&logo=javascript"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/svengreb/styleguide-markdown/releases/latest" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/svengreb/styleguide-markdown.svg?style=flat-square&label=Markdown%20Style%20Guide&colorA=4c566a&colorB=88c0d0&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzOSIgaGVpZ2h0PSIzOSIgdmlld0JveD0iMCAwIDM5IDM5Ij48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNEOERFRTkiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMS41IDEuNWgzNnYzNmgtMzZ6Ii8%2BPHBhdGggZmlsbD0iI0Q4REVFOSIgZD0iTTIwLjY4MyAyNS42NTVsNS44NzItMTMuNDhoLjU2Nmw1Ljg3MyAxMy40OGgtMS45OTZsLTQuMTU5LTEwLjA1Ni00LjE2MSAxMC4wNTZoLTEuOTk1em0tMi42OTYgMGwtMTMuNDgtNS44NzJ2LS41NjZsMTMuNDgtNS44NzJ2MS45OTVMNy45MzEgMTkuNWwxMC4wNTYgNC4xNnoiLz48L3N2Zz4%3D"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/svengreb/styleguide-git/releases/latest" target="_blank">
|
|
||||||
<img src="https://img.shields.io/github/release/svengreb/styleguide-git.svg?style=flat-square&label=Git%20Style%20Guide&logoColor=eceff4&colorA=4c566a&colorB=88c0d0&logo=git"/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/nordtheme/nord/releases/tag/v0.2.0" target="_blank">
|
|
||||||
<img src="https://img.shields.io/static/v1.svg?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAACUklEQVRIibXUQUiTcRjH8e+zvaO0AgPd1mDmNvFVI+ng1UNU1wiDoEIIoUNUdOkQUkER1KWTnRJCLyZBIdEhQvAWQVp5KN9X3bskmHunYbeZbu/TaWXRdOLrc3ue5/f/f/6nP+xwycy8m6y0LGqg0N7UsLB+9jmdbQwZQaNawPBKpCstA3g/7fRCl5k68P7PLNjplRgBQtUAYjmuCriqDP690RqQK8A3WSt1mmZsqbyyM+4pVc5tcvdxYD+W46qVdif/l7Ac95bluGo57piqBqt58e+zaXfSclwNbBQyE+F7KKPAMTuzeGcrQLk2BEREV41dvYAD2jeddrt9BQA6DtYtC3QDKyIM2pmlVl+Bublc2ExGpgS9BuxTLT2byuX2+AYUJTAyPq6GmYwOIPoEOLy7IAO+AYgejTW5dwF2UbiM8kGVs9NO/qo/AGRV5Ybl5E4mEokVT0rdwHdBH9pOvmvbgCd6GlgDGZqddVPtydg8aC9gKDqybaA9EX2nyHWgrhTkxUQ2W9uajL4U0QdAbNsAQFsy3C8wBHTsXQk+BmhpitwE3vgCANSGVi8pfATO207uooh4hqc9vgHxeLzgeXIG+KFIv5Ve7GxujuZ9AwAONYfnVLUHCCHec9vO1vsKALSloq9A7gONhILDm/2yWwYAzETDbeC1wgk7k+/bKCuW4yqwDIxtGBSGzURktNzbdrZeQ8EJIA76CJXCP/kLCpEyUE2VVLWnLRV9Wh7MZPJHPNW3QE2lQ0YgSKpKgLWiV1zftyTCn758XUwZ4lUEdrx+ASW88rx2UJY8AAAAAElFTkSuQmCC&label=Nord&message=v0.2.0&colorA=4c566a&colorB=88c0d0"/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">An arctic, north-bluish clean and elegant <a href="https://tmux.github.io" target="_blank">tmux</a> color theme.</p>
|
|
||||||
|
|
||||||
<p align="center">Designed for a fluent and clear workflow based on the <a href="https://www.nordtheme.com" target="_blank">Nord</a> color palette.</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/overview.png"/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
Visit the [official website][nord-home] to learn all about the [fluidly merging appearance][nord-home#intro] features, details and elements of [UI elements][nord-home#ui-elements], the [various theme configurations][nord-home#configurations] and the [support for plugins][nord-home#plugin-support].
|
|
||||||
|
|
||||||
Learn about the [installation and activation][nord-docs-home-install], how to [configure][nord-docs-home-config] the theme and [supported plugins][nord-docs-home-plugins] from the [official documentations][nord-docs-home].
|
|
||||||
|
|
||||||
### Quick Start
|
|
||||||
|
|
||||||
Thanks to existing plugin managers for tmux, Nord tmux can be installed for all platforms in a uniform way within a few lines of codes. The recommended manager is [tpm][gh-tmux-plugins/tpm], but any other manager like [tundle][gh-javier-lopez/tundle] can also be used.
|
|
||||||
|
|
||||||
To automatically download and activate Nord tmux, follow the install instructions for [tpm][gh-tmux-plugins/tpm] and
|
|
||||||
|
|
||||||
1. add `set -g @plugin "nordtheme/tmux"` to your [`tmux.conf`][tmux-man-tmux.conf], by default `.tmux.conf` located in your [home directory][wiki-home_dir]
|
|
||||||
2. press the default key binding `prefix` + <kbd>I</kbd> to fetch- and install the plugin
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<picture>
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/installation-tpm.png" />
|
|
||||||
</picture>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
See the Nord tmux's documentation for [more installation options][nord-docs-home-install] and how to [set it up manually][nord-docs-home-install#manual].
|
|
||||||
Also see [_tpm's_ install instructions][gh-tpm-docs-install-plugins] for more details.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<p><strong>Your terminal. Your style.</strong></p>
|
|
||||||
<p>The unified UI element design provides a clutter-free and fluidly merging appearance.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux#intro" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/ui-fluid-appearance-vim.png" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux#introduction" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/ui-fluid-appearance-gotop.png" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<p><strong>Uniform design with beautiful UI elements.</strong></p>
|
|
||||||
<p>The themed UI elements provide a fluid and unobtrusive transition from the terminal to the tmux status bar.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux#ui-elements" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/ui-clock.png" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div align="center"><p><strong>Take your favorite plugins with you.</strong></p><p>The theme supports popular plugins for a fluid and unobtrusive user interface transition.</p></div>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://www.nordtheme.com/ports/tmux#plugin-support" target="_blank">
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/web/main/assets/images/ports/tmux/plugins-tmux-prefix-highlight.png" />
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Nord is an open source project and we love to receive contributions from the [community][nord-comm]!
|
|
||||||
|
|
||||||
There are many ways to contribute, from [writing- and improving documentation and tutorials][nord-contrib-guide-docs], [reporting bugs][nord-contrib-guide-bugs], [submitting enhancement suggestions][nord-contrib-guide-enhance] that can be added to Nord by [submitting pull requests][nord-contrib-guide-pr].
|
|
||||||
|
|
||||||
Please take a moment to read Nord's full [contributing guide][nord-contrib-guide] to learn about the development process, the project's used [styleguides][nord-contrib-guide-styles], [branch organization][nord-contrib-guide-branching] and [versioning][nord-contrib-guide-versioning] model.
|
|
||||||
|
|
||||||
The guide also includes information about [minimal, complete, and verifiable examples][nord-contrib-guide-mcve] and other ways to contribute to the project like [improving existing issues][nord-contrib-guide-impr-issues] and [giving feedback on issues and pull requests][nord-contrib-guide-feedback].
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<picture>
|
|
||||||
<source srcset="https://raw.githubusercontent.com/nordtheme/assets/main/static/images/elements/separators/iceberg/footer/dark/spaced.svg" width="100%" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" />
|
|
||||||
<source srcset="https://raw.githubusercontent.com/nordtheme/assets/main/static/images/elements/separators/iceberg/footer/light/spaced.svg" width="100%" media="(prefers-color-scheme: dark)" />
|
|
||||||
<img src="https://raw.githubusercontent.com/nordtheme/assets/main/static/images/elements/separators/iceberg/footer/dark/spaced.svg" width="100%" />
|
|
||||||
</picture>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
Copyright © 2016-present <a href="https://www.svengreb.de" target="_blank">Sven Greb</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/nordtheme/tmux/blob/develop/license" target="_blank">
|
|
||||||
<img src="https://img.shields.io/static/v1.svg?style=flat-square&label=License&message=MIT&logoColor=eceff4&colorA=4c566a&colorB=88c0d0"/>
|
|
||||||
</a>
|
|
||||||
<a href="https://www.svengreb.de">
|
|
||||||
<img src="https://img.shields.io/static/v1.svg?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAABMklEQVQ4jcWQvUoDQRRGz52s5IfVIiDWPkGKFFaCIVaGdIagjcFAwICFb7DvIK6QQlNpY2UQLMQVBbEQ0SewFkGbKCQmOzaTJay7/lR+zTAf9xwuF/47Mv45rdezqWEq72v/RWZnHgqOMwDwHMfSj085JSqb6Pu38we7r18E3nqzhmYbsE11rxKsAvhDfQiSM30XYbOw57YDwfnaRl6U3ABWaMNn806H+oGPzBX3d+4UgChZiYBHYBgGsBLoKoAyhR0x9G20Zmpc4P1ZoMQDcwMNclFrdhBKv6M5WWi7ZQGtjEUn35IV4OwnVjSX/WGmKqCDDUa5rmyle3bvGFiMg3WGUsF1u0EXHoqTRMGRgkAy2eugKZrqijRLYThWANBpNDL2h3UE0J0YLJdbrfe42f/NJ0wqY7/KcXKPAAAAAElFTkSuQmCC&label=lovely%20crafted%20in&message=Germany&colorA=4c566a&colorB=88c0d0"/>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
[gh-javier-lopez/tundle]: https://github.com/javier-lopez/tundle
|
|
||||||
[gh-tmux-plugins/tpm]: https://github.com/tmux-plugins/tpm
|
|
||||||
[gh-tpm-docs-install-plugins]: https://github.com/tmux-plugins/tpm#installing-plugins
|
|
||||||
[nord-comm]: https://www.nordtheme.com/community
|
|
||||||
[nord-contrib-guide-branching]: https://github.com/nordtheme/.github/blob/main/contributing.md#branch-organization
|
|
||||||
[nord-contrib-guide-bugs]: https://github.com/nordtheme/.github/blob/main/contributing.md#bug-reports
|
|
||||||
[nord-contrib-guide-docs]: https://github.com/nordtheme/.github/blob/main/contributing.md#documentations
|
|
||||||
[nord-contrib-guide-enhance]: https://github.com/nordtheme/.github/blob/main/contributing.md#enhancement-suggestions
|
|
||||||
[nord-contrib-guide-feedback]: https://github.com/nordtheme/.github/blob/main/contributing.md#feedback
|
|
||||||
[nord-contrib-guide-impr-issues]: https://github.com/nordtheme/.github/blob/main/contributing.md#improve-issues
|
|
||||||
[nord-contrib-guide-mcve]: https://github.com/nordtheme/.github/blob/main/contributing.md#mcve
|
|
||||||
[nord-contrib-guide-pr]: https://github.com/nordtheme/.github/blob/main/contributing.md#pull-requests
|
|
||||||
[nord-contrib-guide-styles]: https://github.com/nordtheme/.github/blob/main/contributing.md#style-guides
|
|
||||||
[nord-contrib-guide-versioning]: https://github.com/nordtheme/.github/blob/main/contributing.md#versioning
|
|
||||||
[nord-contrib-guide]: https://github.com/nordtheme/.github/blob/main/contributing.md
|
|
||||||
[nord-docs-home-config]: https://www.nordtheme.com/docs/ports/tmux/configuration
|
|
||||||
[nord-docs-home-install]: https://www.nordtheme.com/docs/ports/tmux/installation
|
|
||||||
[nord-docs-home-install#manual]: https://www.nordtheme.com/docs/ports/tmux/installation#manual
|
|
||||||
[nord-docs-home-plugins]: https://www.nordtheme.com/docs/ports/tmux/plugin-support
|
|
||||||
[nord-docs-home]: https://www.nordtheme.com/docs/ports/tmux
|
|
||||||
[nord-home]: https://www.nordtheme.com/ports/tmux
|
|
||||||
[nord-home#configurations]: https://www.nordtheme.com/ports/tmux#configurations
|
|
||||||
[nord-home#intro]: https://www.nordtheme.com/ports/tmux#intro
|
|
||||||
[nord-home#plugin-support]: https://www.nordtheme.com/ports/tmux#plugin-support
|
|
||||||
[nord-home#ui-elements]: https://www.nordtheme.com/ports/tmux#ui-elements
|
|
||||||
[tmux-man-tmux.conf]: http://man.openbsd.org/OpenBSD-current/man1/tmux.1#FILES
|
|
||||||
[wiki-home_dir]: https://en.wikipedia.org/wiki/Home_directory
|
|
|
@ -1,20 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
#+----------------+
|
|
||||||
#+ Plugin Support +
|
|
||||||
#+----------------+
|
|
||||||
#+--- tmux-prefix-highlight ---+
|
|
||||||
set -g @prefix_highlight_copy_mode_attr "fg=black,bg=brightcyan"
|
|
||||||
|
|
||||||
#+--------+
|
|
||||||
#+ Status +
|
|
||||||
#+--------+
|
|
||||||
#+--- Bars ---+
|
|
||||||
set -g status-left "#[fg=black,bg=blue,bold] #S "
|
|
||||||
set -g status-right "#{prefix_highlight}#[fg=white,bg=brightblack] ${NORD_TMUX_STATUS_DATE_FORMAT} #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]|#[fg=white,bg=brightblack] ${NORD_TMUX_STATUS_TIME_FORMAT} #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore] #[fg=black,bg=cyan,bold] #H "
|
|
||||||
|
|
||||||
#+--- Windows ---+
|
|
||||||
set -g window-status-format " #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack]#W #F"
|
|
||||||
set -g window-status-current-format " #[fg=black,bg=cyan]#I#[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#W #F"
|
|
||||||
set -g window-status-separator ""
|
|
|
@ -1,22 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
#+----------------+
|
|
||||||
#+ Plugin Support +
|
|
||||||
#+----------------+
|
|
||||||
#+--- tmux-prefix-highlight ---+
|
|
||||||
set -g @prefix_highlight_output_prefix "#[fg=brightcyan]#[bg=black]#[nobold]#[noitalics]#[nounderscore]#[bg=brightcyan]#[fg=black]"
|
|
||||||
set -g @prefix_highlight_output_suffix ""
|
|
||||||
set -g @prefix_highlight_copy_mode_attr "fg=brightcyan,bg=black,bold"
|
|
||||||
|
|
||||||
#+--------+
|
|
||||||
#+ Status +
|
|
||||||
#+--------+
|
|
||||||
#+--- Bars ---+
|
|
||||||
set -g status-left "#[fg=black,bg=blue,bold] #S #[fg=blue,bg=black,nobold,noitalics,nounderscore]"
|
|
||||||
set -g status-right "#{prefix_highlight}#[fg=brightblack,bg=black,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] ${NORD_TMUX_STATUS_DATE_FORMAT} #[fg=white,bg=brightblack,nobold,noitalics,nounderscore]#[fg=white,bg=brightblack] ${NORD_TMUX_STATUS_TIME_FORMAT} #[fg=cyan,bg=brightblack,nobold,noitalics,nounderscore]#[fg=black,bg=cyan,bold] #H "
|
|
||||||
|
|
||||||
#+--- Windows ---+
|
|
||||||
set -g window-status-format "#[fg=black,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#I #[fg=white,bg=brightblack,nobold,noitalics,nounderscore] #[fg=white,bg=brightblack]#W #F #[fg=brightblack,bg=black,nobold,noitalics,nounderscore]"
|
|
||||||
set -g window-status-current-format "#[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#I #[fg=black,bg=cyan,nobold,noitalics,nounderscore] #[fg=black,bg=cyan]#W #F #[fg=cyan,bg=black,nobold,noitalics,nounderscore]"
|
|
||||||
set -g window-status-separator ""
|
|
|
@ -1,43 +0,0 @@
|
||||||
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
|
|
||||||
# This source code is licensed under the MIT license found in the license file.
|
|
||||||
|
|
||||||
#+----------------+
|
|
||||||
#+ Plugin Support +
|
|
||||||
#+----------------+
|
|
||||||
#+--- tmux-prefix-highlight ---+
|
|
||||||
set -g @prefix_highlight_fg black
|
|
||||||
set -g @prefix_highlight_bg brightcyan
|
|
||||||
|
|
||||||
#+---------+
|
|
||||||
#+ Options +
|
|
||||||
#+---------+
|
|
||||||
set -g status-interval 1
|
|
||||||
set -g status on
|
|
||||||
|
|
||||||
#+--------+
|
|
||||||
#+ Status +
|
|
||||||
#+--------+
|
|
||||||
#+--- Layout ---+
|
|
||||||
set -g status-justify left
|
|
||||||
|
|
||||||
#+--- Colors ---+
|
|
||||||
set -g status-style bg=black,fg=white
|
|
||||||
|
|
||||||
#+-------+
|
|
||||||
#+ Panes +
|
|
||||||
#+-------+
|
|
||||||
set -g pane-border-style bg=default,fg=brightblack
|
|
||||||
set -g pane-active-border-style bg=default,fg=blue
|
|
||||||
set -g display-panes-colour black
|
|
||||||
set -g display-panes-active-colour brightblack
|
|
||||||
|
|
||||||
#+------------+
|
|
||||||
#+ Clock Mode +
|
|
||||||
#+------------+
|
|
||||||
setw -g clock-mode-colour cyan
|
|
||||||
|
|
||||||
#+----------+
|
|
||||||
#+ Messages +
|
|
||||||
#+---------+
|
|
||||||
set -g message-style bg=brightblack,fg=cyan
|
|
||||||
set -g message-command-style bg=brightblack,fg=cyan
|
|
|
@ -1,88 +0,0 @@
|
||||||
# Changelog
|
|
||||||
|
|
||||||
### master
|
|
||||||
|
|
||||||
### v3.0.0, Nov 01, 2017
|
|
||||||
- if installed use `gawk` instead of `awk` (@metcalfc)
|
|
||||||
- add stored search for matching git SHAs (@jbnicolai)
|
|
||||||
- move documentation from github wiki to `docs/` folder
|
|
||||||
- support for tmux 2.4+, not compatible with tmux 2.3 and earlier (@thalesmello)
|
|
||||||
|
|
||||||
### v2.1.0, Jan 01, 2015
|
|
||||||
- combine send-keys calls to reduce flickering (@toupeira)
|
|
||||||
- add `file:///` prefix for local file url's (@vellvisher)
|
|
||||||
- add `git://` type url
|
|
||||||
|
|
||||||
### v2.0.0, Oct 16, 2014
|
|
||||||
- add tmux options for default searches
|
|
||||||
- use `session_id` instead of `session_name` in the copycat file name (solution
|
|
||||||
provided by @toupeira)
|
|
||||||
- use `grep -E` and remove eval (@toupeira)
|
|
||||||
|
|
||||||
### v1.1.0, Sep 29, 2014
|
|
||||||
- add IP address search
|
|
||||||
- enhance url search with git and ftp urls
|
|
||||||
|
|
||||||
### v1.0.0, Aug 31, 2014
|
|
||||||
- simplify file search stored regex
|
|
||||||
- match files starting with dot
|
|
||||||
- improve README - add more relevant related plugins
|
|
||||||
- do not use `copycat_clear_search` method when in copycat mode. It was causing
|
|
||||||
mysterious issues for some users.
|
|
||||||
- update `README.md` - warning about a breaking mapping
|
|
||||||
- remove rails request stored search `C-r`
|
|
||||||
|
|
||||||
### v0.1.0, Aug 02, 2014
|
|
||||||
- remove note about git history issue
|
|
||||||
- url saved search includes `#` character
|
|
||||||
- improve stored search handling
|
|
||||||
- update README and document addding custom stored searches
|
|
||||||
|
|
||||||
### v0.0.7, Jul 31, 2014
|
|
||||||
- add customization section to the readme (@soli)
|
|
||||||
- remove screencast from the project. The video is too bit and plugin download
|
|
||||||
is slow because of that. The video is moved to the separate `screencast`
|
|
||||||
branch.
|
|
||||||
- run test suite on 2 vagrant VMs: ubuntu and centos
|
|
||||||
|
|
||||||
### v0.0.6, Jul 28, 2014
|
|
||||||
- update video script
|
|
||||||
- update readme and invite for code contributions
|
|
||||||
- update dockerfile with it's purpose
|
|
||||||
- add test suite `README` file
|
|
||||||
- add screencast original document to git
|
|
||||||
- add video directory `README` file
|
|
||||||
- update readme to reflect github organization change
|
|
||||||
- add a screencast link to the readme
|
|
||||||
|
|
||||||
### v0.0.5, Jul 24, 2014
|
|
||||||
- improve stored file matching search
|
|
||||||
- fix wrong result highlighting for lines that have \r, \n chars
|
|
||||||
- another improvement to file matching search: changed regex strategy to be
|
|
||||||
"inclusive"
|
|
||||||
- add test suite
|
|
||||||
- update readme to show how test suite is started
|
|
||||||
|
|
||||||
### v0.0.4, Jul 9, 2014
|
|
||||||
- bugfix for incorrect result highlighting
|
|
||||||
- optimize and improve the function that centers the result vertically on the
|
|
||||||
screen
|
|
||||||
- fix OS X awk bug: awk variable content can't start with `=` char
|
|
||||||
- fix a bug with wrong result highlighting caused by using `printf`
|
|
||||||
- fix a bug with wrong result highlighting caused by a bug in OSX `grep`
|
|
||||||
- improve URL matching regex. Matches don't include quotes anymore.
|
|
||||||
|
|
||||||
### v0.0.3, Jun 29, 2014
|
|
||||||
- add notifications about the first and last match
|
|
||||||
- improve "jump correction" handling by fetching the precise window height
|
|
||||||
- improve result vertical centering & fix a related bug
|
|
||||||
|
|
||||||
### v0.0.2, Jun 26, 2014
|
|
||||||
- search results are always at the bottom of the page. If possible center the
|
|
||||||
result, or provide maximum possible padding.
|
|
||||||
- refactoring in `copycat_jump.sh` - extract 2 constants to file global variables
|
|
||||||
- improve file matching regex. `master...origin/master` is not detected as a
|
|
||||||
string.
|
|
||||||
|
|
||||||
### v0.0.1, Jun 25, 2014
|
|
||||||
- first version, plugin working
|
|
|
@ -1,19 +0,0 @@
|
||||||
Copyright (C) 2014 Bruno Sutic
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
||||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,146 +0,0 @@
|
||||||
# Tmux copycat
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/tmux-plugins/tmux-copycat.svg?branch=master)](https://travis-ci.org/tmux-plugins/tmux-copycat)
|
|
||||||
|
|
||||||
**NOTE: [tmux 3.1 adds support for native regex searches](https://raw.githubusercontent.com/tmux/tmux/3.1/CHANGES).
|
|
||||||
This is great news because it means a big part of 'tmux-copycat' is now
|
|
||||||
available natively! Use this plugin only if you need its other features.**
|
|
||||||
|
|
||||||
This plugin enables:
|
|
||||||
|
|
||||||
- regex searches (native support added in tmux 3.1)
|
|
||||||
- search result highlighting
|
|
||||||
- predefined searches
|
|
||||||
|
|
||||||
Predefined searches are plugin killer feature. It speeds the workflow and
|
|
||||||
reduces mouse usage with Tmux.
|
|
||||||
|
|
||||||
It works even better when paired with
|
|
||||||
[tmux yank](https://github.com/tmux-plugins/tmux-yank). Tested and working on
|
|
||||||
Linux, OSX and Cygwin.
|
|
||||||
|
|
||||||
### Screencast
|
|
||||||
|
|
||||||
[![screencast screenshot](/video/screencast_img.png)](https://vimeo.com/101867689)
|
|
||||||
|
|
||||||
#### Search
|
|
||||||
|
|
||||||
- `prefix + /` - regex search (strings work too)
|
|
||||||
|
|
||||||
Example search entries:
|
|
||||||
|
|
||||||
- `foo` - searches for string `foo`
|
|
||||||
- `[0-9]+` - regex search for numbers
|
|
||||||
|
|
||||||
Grep is used for searching.<br/>
|
|
||||||
Searches are case insensitive.<br/>
|
|
||||||
|
|
||||||
#### Predefined searches
|
|
||||||
|
|
||||||
- `prefix + ctrl-f` - simple *f*ile search
|
|
||||||
- `prefix + ctrl-g` - jumping over *g*it status files (best used after `git status` command)
|
|
||||||
- `prefix + alt-h` - jumping over SHA-1/SHA-256 hashes (best used after `git log` command)
|
|
||||||
- `prefix + ctrl-u` - *u*rl search (http, ftp and git urls)
|
|
||||||
- `prefix + ctrl-d` - number search (mnemonic d, as digit)
|
|
||||||
- `prefix + alt-i` - *i*p address search
|
|
||||||
|
|
||||||
These start "copycat mode" and jump to first match.
|
|
||||||
|
|
||||||
#### "Copycat mode" bindings
|
|
||||||
|
|
||||||
These are enabled when you search with copycat:
|
|
||||||
|
|
||||||
- `n` - jumps to the next match
|
|
||||||
- `N` - jumps to the previous match
|
|
||||||
|
|
||||||
To copy a highlighted match:
|
|
||||||
|
|
||||||
- `Enter` - if you're using Tmux `vi` mode
|
|
||||||
- `ctrl-w` or `alt-w` - if you're using Tmux `emacs` mode
|
|
||||||
|
|
||||||
Copying a highlighted match will take you "out" of copycat mode. Paste with
|
|
||||||
`prefix + ]` (this is Tmux default paste).
|
|
||||||
|
|
||||||
Copying highlighted matches can be enhanced with
|
|
||||||
[tmux yank](https://github.com/tmux-plugins/tmux-yank).
|
|
||||||
|
|
||||||
### Installation with [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm) (recommended)
|
|
||||||
|
|
||||||
Add plugin to the list of TPM plugins in `.tmux.conf`:
|
|
||||||
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-copycat'
|
|
||||||
|
|
||||||
Hit `prefix + I` to fetch the plugin and source it. You should now be able to
|
|
||||||
use the plugin.
|
|
||||||
|
|
||||||
Optional (but recommended) install `gawk` via your package manager of choice
|
|
||||||
for better UTF-8 character support.
|
|
||||||
|
|
||||||
### Manual Installation
|
|
||||||
|
|
||||||
Clone the repo:
|
|
||||||
|
|
||||||
$ git clone https://github.com/tmux-plugins/tmux-copycat ~/clone/path
|
|
||||||
|
|
||||||
Add this line to the bottom of `.tmux.conf`:
|
|
||||||
|
|
||||||
run-shell ~/clone/path/copycat.tmux
|
|
||||||
|
|
||||||
Reload TMUX environment with: `$ tmux source-file ~/.tmux.conf`. You should now
|
|
||||||
be able to use the plugin.
|
|
||||||
|
|
||||||
Optional (but recommended) install `gawk` via your package manager of choice
|
|
||||||
for better UTF-8 character support.
|
|
||||||
|
|
||||||
### Installation for Tmux 2.3 and earlier
|
|
||||||
|
|
||||||
Due to the changes in tmux, the latest version of this plugin doesn't support
|
|
||||||
tmux 2.3 and earlier. It is recommended you upgrade to tmux version 2.4 or
|
|
||||||
later. If you must continue using older version, please follow
|
|
||||||
[these steps for installation](docs/installation_for_tmux_2.3.md).
|
|
||||||
|
|
||||||
### Limitations
|
|
||||||
|
|
||||||
This plugin has some known limitations. Please read about it
|
|
||||||
[here](docs/limitations.md).
|
|
||||||
|
|
||||||
### Docs
|
|
||||||
|
|
||||||
- Most of the behavior of tmux-copycat can be customized via tmux options.
|
|
||||||
[Check out the full options list](docs/customizations.md).
|
|
||||||
- To speed up the workflow you can define new bindings in `.tmux.conf` for
|
|
||||||
searches you use often, more info [here](docs/defining_new_stored_searches.md)
|
|
||||||
|
|
||||||
### Other goodies
|
|
||||||
|
|
||||||
`tmux-copycat` works great with:
|
|
||||||
|
|
||||||
- [tmux-yank](https://github.com/tmux-plugins/tmux-yank) - enables copying
|
|
||||||
highlighted text to system clipboard
|
|
||||||
- [tmux-open](https://github.com/tmux-plugins/tmux-open) - a plugin for quickly
|
|
||||||
opening a highlighted file or a url
|
|
||||||
- [tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) - automatic
|
|
||||||
restoring and continuous saving of tmux env
|
|
||||||
|
|
||||||
### Test suite
|
|
||||||
|
|
||||||
This plugin has a pretty extensive integration test suite that runs on
|
|
||||||
[travis](https://travis-ci.org/tmux-plugins/tmux-copycat).
|
|
||||||
|
|
||||||
When run locally, it depends on `vagrant`. Run it with:
|
|
||||||
|
|
||||||
# within project top directory
|
|
||||||
$ ./run-tests
|
|
||||||
|
|
||||||
### Contributions and new features
|
|
||||||
|
|
||||||
Bug fixes and contributions are welcome.
|
|
||||||
|
|
||||||
Feel free to suggest new features, via github issues.
|
|
||||||
|
|
||||||
If you have a bigger idea you'd like to work on, please get in touch, also via
|
|
||||||
github issues.
|
|
||||||
|
|
||||||
### License
|
|
||||||
|
|
||||||
[MIT](LICENSE.md)
|
|
8
dot_tmux/plugins/tmux-copycat/Vagrantfile
vendored
8
dot_tmux/plugins/tmux-copycat/Vagrantfile
vendored
|
@ -1,8 +0,0 @@
|
||||||
VAGRANTFILE_API_VERSION = '2'
|
|
||||||
|
|
||||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
||||||
config.vm.define :ubuntu_two_five do |ubuntu|
|
|
||||||
ubuntu.vm.box = 'hashicorp/precise32'
|
|
||||||
ubuntu.vm.provision 'shell', path: 'vagrant_ubuntu_provisioning_two_five.sh'
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,26 +0,0 @@
|
||||||
# Customizations
|
|
||||||
|
|
||||||
Most of the behavior of tmux-copycat can be customized via tmux options.<br/>
|
|
||||||
To set a value, just put `set -g @option 'value'` in your `.tmux.conf` before
|
|
||||||
loading the tmux-copycat plugin.
|
|
||||||
|
|
||||||
Other options:
|
|
||||||
|
|
||||||
- `@copycat_search` (default `/`) defines the key-binding used (after prefix) to
|
|
||||||
start an interactive search.
|
|
||||||
- `@copycat_next` (default `n`) defines the key (without prefix) used to jump to
|
|
||||||
next search result.
|
|
||||||
- `@copycat_prev` (default `N`) defines the key (without prefix) used to jump to
|
|
||||||
previous search result.
|
|
||||||
|
|
||||||
Options for predefined searches:
|
|
||||||
|
|
||||||
- `@copycat_git_special` (default `C-g`) git status search
|
|
||||||
- `@copycat_file_search` (default `C-f`) file search
|
|
||||||
- `@copycat_url_search` (default `C-u`) url search
|
|
||||||
- `@copycat_digit_search` (default `C-d`) digit search
|
|
||||||
- `@copycat_hash_search` (default `M-h`) SHA-1 hash search
|
|
||||||
- `@copycat_ip_search` (default `M-i`) IP address search
|
|
||||||
|
|
||||||
Example: to remap default file search to use `C-t` put
|
|
||||||
`set -g @copycat_file_search 'C-t'` in `.tmux.conf`.
|
|
|
@ -1,40 +0,0 @@
|
||||||
# Defining new stored searches
|
|
||||||
|
|
||||||
To speed up the workflow you can define new bindings in `.tmux.conf` for
|
|
||||||
searches you use often.
|
|
||||||
|
|
||||||
After adding any of the below snippets, make sure to reload your tmux
|
|
||||||
configuration:
|
|
||||||
|
|
||||||
# type this in the terminal
|
|
||||||
$ tmux source-file ~/.tmux.conf
|
|
||||||
|
|
||||||
Dummy examples (just for testing):
|
|
||||||
|
|
||||||
* `prefix + ctrl-t` example string search
|
|
||||||
|
|
||||||
set -g @copycat_search_C-t 'search me'
|
|
||||||
|
|
||||||
* `prefix + alt-t` example regex search
|
|
||||||
|
|
||||||
set -g @copycat_search_M-t 'regex search[[:alnum:]]\*'
|
|
||||||
|
|
||||||
### Useful searches
|
|
||||||
|
|
||||||
* `prefix + ctrl-e` in the Rails log output searches for previous request start
|
|
||||||
|
|
||||||
set -g @copycat_search_C-e '^Processing[[:space:]]by[[:space:]][^[:space:]]*'
|
|
||||||
|
|
||||||
* `prefix + D` searches for numbers at the *beginning* of line.<br/>
|
|
||||||
Useful with `$ pgrep -lf process` command to quickly select process PID.
|
|
||||||
|
|
||||||
set -g @copycat_search_D '^[[:digit:]]+'
|
|
||||||
|
|
||||||
* `prefix + G` searches for git commit SHA1.<br/>
|
|
||||||
Works for both the short (5 chars) and full (40 chars) versions.
|
|
||||||
|
|
||||||
set -g @copycat_search_G '\b[0-9a-f]{5,40}\b'
|
|
||||||
|
|
||||||
|
|
||||||
Have your own custom search? Please share it in
|
|
||||||
[the discussion](https://github.com/tmux-plugins/tmux-copycat/issues/57).
|
|
|
@ -1,20 +0,0 @@
|
||||||
# Installation for Tmux 2.3 and earlier
|
|
||||||
|
|
||||||
The installation steps for Tmux 2.3 are based on
|
|
||||||
[manual installation](https://github.com/tmux-plugins/tmux-copycat#manual-installation)
|
|
||||||
steps, with the addition of using `tmux-23` branch.
|
|
||||||
|
|
||||||
Create tmux plugins dir:
|
|
||||||
|
|
||||||
$ mkdir -p ~/.tmux/plugins
|
|
||||||
|
|
||||||
Clone the repo:
|
|
||||||
|
|
||||||
$ git clone -b tmux-23 https://github.com/tmux-plugins/tmux-copycat ~/.tmux/plugins/tmux-copycat
|
|
||||||
|
|
||||||
Add this line to the bottom of `.tmux.conf`:
|
|
||||||
|
|
||||||
run-shell ~/clone/path/copycat.tmux
|
|
||||||
|
|
||||||
Reload TMUX environment with: `$ tmux source-file ~/.tmux.conf`. You should now
|
|
||||||
be able to use the plugin.
|
|
|
@ -1,24 +0,0 @@
|
||||||
# Limitations
|
|
||||||
|
|
||||||
- This plugin tries hard to consistently enable "marketed" features. It uses some
|
|
||||||
hacks to go beyond the APIs Tmux provides. Because of this, it might have some
|
|
||||||
"rough edges" and there's nothing that can be done.
|
|
||||||
|
|
||||||
Examples: non-perfect file and url matching and selection. That said, usage
|
|
||||||
should be fine in +90% cases.
|
|
||||||
|
|
||||||
- feel free to report search cases you think should work, but are not
|
|
||||||
(provide examples pls!). I'm open to the idea of adding more saved searches.
|
|
||||||
|
|
||||||
- Tmux `vi` copy mode works faster than `emacs`. If you don't have a preference
|
|
||||||
yet and to speed up `tmux_copycat`, I recommend putting this in `.tmux.conf`
|
|
||||||
to set Tmux copy mode to `vi`:
|
|
||||||
|
|
||||||
set -g mode-keys vi
|
|
||||||
|
|
||||||
- remapping `Escape` key in copy mode will break the plugin. If you have this
|
|
||||||
in your `.tmux.conf`, please consider removing it:
|
|
||||||
|
|
||||||
bind -t vi-copy Escape cancel
|
|
||||||
|
|
||||||
After removing this key binding, don't forget to restart tmux server!
|
|
|
@ -1 +0,0 @@
|
||||||
ref: refs/heads/master
|
|
|
@ -1,13 +0,0 @@
|
||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = false
|
|
||||||
logallrefupdates = true
|
|
||||||
[submodule]
|
|
||||||
active = .
|
|
||||||
[remote "origin"]
|
|
||||||
url = https://git::@github.com/tmux-plugins/tmux-copycat
|
|
||||||
fetch = +refs/heads/master:refs/remotes/origin/master
|
|
||||||
[branch "master"]
|
|
||||||
remote = origin
|
|
||||||
merge = refs/heads/master
|
|
|
@ -1 +0,0 @@
|
||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to check the commit log message taken by
|
|
||||||
# applypatch from an e-mail message.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an
|
|
||||||
# appropriate message if it wants to stop the commit. The hook is
|
|
||||||
# allowed to edit the commit message file.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "applypatch-msg".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
|
||||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
|
||||||
:
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to check the commit log message.
|
|
||||||
# Called by "git commit" with one argument, the name of the file
|
|
||||||
# that has the commit message. The hook should exit with non-zero
|
|
||||||
# status after issuing an appropriate message if it wants to stop the
|
|
||||||
# commit. The hook is allowed to edit the commit message file.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "commit-msg".
|
|
||||||
|
|
||||||
# Uncomment the below to add a Signed-off-by line to the message.
|
|
||||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
|
||||||
# hook is more suited to it.
|
|
||||||
#
|
|
||||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
||||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
|
||||||
|
|
||||||
# This example catches duplicate Signed-off-by lines.
|
|
||||||
|
|
||||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
|
||||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
|
||||||
echo >&2 Duplicate Signed-off-by lines.
|
|
||||||
exit 1
|
|
||||||
}
|
|
|
@ -1,174 +0,0 @@
|
||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
use IPC::Open2;
|
|
||||||
|
|
||||||
# An example hook script to integrate Watchman
|
|
||||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
|
||||||
# new and modified files.
|
|
||||||
#
|
|
||||||
# The hook is passed a version (currently 2) and last update token
|
|
||||||
# formatted as a string and outputs to stdout a new update token and
|
|
||||||
# all files that have been modified since the update token. Paths must
|
|
||||||
# be relative to the root of the working tree and separated by a single NUL.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "query-watchman" and set
|
|
||||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
|
||||||
#
|
|
||||||
my ($version, $last_update_token) = @ARGV;
|
|
||||||
|
|
||||||
# Uncomment for debugging
|
|
||||||
# print STDERR "$0 $version $last_update_token\n";
|
|
||||||
|
|
||||||
# Check the hook interface version
|
|
||||||
if ($version ne 2) {
|
|
||||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
|
||||||
"Falling back to scanning...\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
my $git_work_tree = get_working_dir();
|
|
||||||
|
|
||||||
my $retry = 1;
|
|
||||||
|
|
||||||
my $json_pkg;
|
|
||||||
eval {
|
|
||||||
require JSON::XS;
|
|
||||||
$json_pkg = "JSON::XS";
|
|
||||||
1;
|
|
||||||
} or do {
|
|
||||||
require JSON::PP;
|
|
||||||
$json_pkg = "JSON::PP";
|
|
||||||
};
|
|
||||||
|
|
||||||
launch_watchman();
|
|
||||||
|
|
||||||
sub launch_watchman {
|
|
||||||
my $o = watchman_query();
|
|
||||||
if (is_work_tree_watched($o)) {
|
|
||||||
output_result($o->{clock}, @{$o->{files}});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub output_result {
|
|
||||||
my ($clockid, @files) = @_;
|
|
||||||
|
|
||||||
# Uncomment for debugging watchman output
|
|
||||||
# open (my $fh, ">", ".git/watchman-output.out");
|
|
||||||
# binmode $fh, ":utf8";
|
|
||||||
# print $fh "$clockid\n@files\n";
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
binmode STDOUT, ":utf8";
|
|
||||||
print $clockid;
|
|
||||||
print "\0";
|
|
||||||
local $, = "\0";
|
|
||||||
print @files;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub watchman_clock {
|
|
||||||
my $response = qx/watchman clock "$git_work_tree"/;
|
|
||||||
die "Failed to get clock id on '$git_work_tree'.\n" .
|
|
||||||
"Falling back to scanning...\n" if $? != 0;
|
|
||||||
|
|
||||||
return $json_pkg->new->utf8->decode($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub watchman_query {
|
|
||||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
|
||||||
or die "open2() failed: $!\n" .
|
|
||||||
"Falling back to scanning...\n";
|
|
||||||
|
|
||||||
# In the query expression below we're asking for names of files that
|
|
||||||
# changed since $last_update_token but not from the .git folder.
|
|
||||||
#
|
|
||||||
# To accomplish this, we're using the "since" generator to use the
|
|
||||||
# recency index to select candidate nodes and "fields" to limit the
|
|
||||||
# output to file names only. Then we're using the "expression" term to
|
|
||||||
# further constrain the results.
|
|
||||||
my $last_update_line = "";
|
|
||||||
if (substr($last_update_token, 0, 1) eq "c") {
|
|
||||||
$last_update_token = "\"$last_update_token\"";
|
|
||||||
$last_update_line = qq[\n"since": $last_update_token,];
|
|
||||||
}
|
|
||||||
my $query = <<" END";
|
|
||||||
["query", "$git_work_tree", {$last_update_line
|
|
||||||
"fields": ["name"],
|
|
||||||
"expression": ["not", ["dirname", ".git"]]
|
|
||||||
}]
|
|
||||||
END
|
|
||||||
|
|
||||||
# Uncomment for debugging the watchman query
|
|
||||||
# open (my $fh, ">", ".git/watchman-query.json");
|
|
||||||
# print $fh $query;
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
print CHLD_IN $query;
|
|
||||||
close CHLD_IN;
|
|
||||||
my $response = do {local $/; <CHLD_OUT>};
|
|
||||||
|
|
||||||
# Uncomment for debugging the watch response
|
|
||||||
# open ($fh, ">", ".git/watchman-response.json");
|
|
||||||
# print $fh $response;
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
die "Watchman: command returned no output.\n" .
|
|
||||||
"Falling back to scanning...\n" if $response eq "";
|
|
||||||
die "Watchman: command returned invalid output: $response\n" .
|
|
||||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
|
||||||
|
|
||||||
return $json_pkg->new->utf8->decode($response);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub is_work_tree_watched {
|
|
||||||
my ($output) = @_;
|
|
||||||
my $error = $output->{error};
|
|
||||||
if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
|
||||||
$retry--;
|
|
||||||
my $response = qx/watchman watch "$git_work_tree"/;
|
|
||||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
|
||||||
"Falling back to scanning...\n" if $? != 0;
|
|
||||||
$output = $json_pkg->new->utf8->decode($response);
|
|
||||||
$error = $output->{error};
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
# Uncomment for debugging watchman output
|
|
||||||
# open (my $fh, ">", ".git/watchman-output.out");
|
|
||||||
# close $fh;
|
|
||||||
|
|
||||||
# Watchman will always return all files on the first query so
|
|
||||||
# return the fast "everything is dirty" flag to git and do the
|
|
||||||
# Watchman query just to get it over with now so we won't pay
|
|
||||||
# the cost in git to look up each individual file.
|
|
||||||
my $o = watchman_clock();
|
|
||||||
$error = $output->{error};
|
|
||||||
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
output_result($o->{clock}, ("/"));
|
|
||||||
$last_update_token = $o->{clock};
|
|
||||||
|
|
||||||
eval { launch_watchman() };
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
die "Watchman: $error.\n" .
|
|
||||||
"Falling back to scanning...\n" if $error;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_working_dir {
|
|
||||||
my $working_dir;
|
|
||||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
|
||||||
$working_dir = Win32::GetCwd();
|
|
||||||
$working_dir =~ tr/\\/\//;
|
|
||||||
} else {
|
|
||||||
require Cwd;
|
|
||||||
$working_dir = Cwd::cwd();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $working_dir;
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to prepare a packed repository for use over
|
|
||||||
# dumb transports.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "post-update".
|
|
||||||
|
|
||||||
exec git update-server-info
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed
|
|
||||||
# by applypatch from an e-mail message.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an
|
|
||||||
# appropriate message if it wants to stop the commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-applypatch".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
|
||||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
|
||||||
:
|
|
|
@ -1,49 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed.
|
|
||||||
# Called by "git commit" with no arguments. The hook should
|
|
||||||
# exit with non-zero status after issuing an appropriate message if
|
|
||||||
# it wants to stop the commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-commit".
|
|
||||||
|
|
||||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
against=HEAD
|
|
||||||
else
|
|
||||||
# Initial commit: diff against an empty tree object
|
|
||||||
against=$(git hash-object -t tree /dev/null)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If you want to allow non-ASCII filenames set this variable to true.
|
|
||||||
allownonascii=$(git config --type=bool hooks.allownonascii)
|
|
||||||
|
|
||||||
# Redirect output to stderr.
|
|
||||||
exec 1>&2
|
|
||||||
|
|
||||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
|
||||||
# them from being added to the repository. We exploit the fact that the
|
|
||||||
# printable range starts at the space character and ends with tilde.
|
|
||||||
if [ "$allownonascii" != "true" ] &&
|
|
||||||
# Note that the use of brackets around a tr range is ok here, (it's
|
|
||||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
|
||||||
# the square bracket bytes happen to fall in the designated range.
|
|
||||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
|
||||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
|
||||||
then
|
|
||||||
cat <<\EOF
|
|
||||||
Error: Attempt to add a non-ASCII file name.
|
|
||||||
|
|
||||||
This can cause problems if you want to work with people on other platforms.
|
|
||||||
|
|
||||||
To be portable it is advisable to rename the file.
|
|
||||||
|
|
||||||
If you know what you are doing you can disable this check using:
|
|
||||||
|
|
||||||
git config hooks.allownonascii true
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If there are whitespace errors, print the offending file names and fail.
|
|
||||||
exec git diff-index --check --cached $against --
|
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to verify what is about to be committed.
|
|
||||||
# Called by "git merge" with no arguments. The hook should
|
|
||||||
# exit with non-zero status after issuing an appropriate message to
|
|
||||||
# stderr if it wants to stop the merge commit.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-merge-commit".
|
|
||||||
|
|
||||||
. git-sh-setup
|
|
||||||
test -x "$GIT_DIR/hooks/pre-commit" &&
|
|
||||||
exec "$GIT_DIR/hooks/pre-commit"
|
|
||||||
:
|
|
|
@ -1,53 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to verify what is about to be pushed. Called by "git
|
|
||||||
# push" after it has checked the remote status, but before anything has been
|
|
||||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
|
||||||
#
|
|
||||||
# This hook is called with the following parameters:
|
|
||||||
#
|
|
||||||
# $1 -- Name of the remote to which the push is being done
|
|
||||||
# $2 -- URL to which the push is being done
|
|
||||||
#
|
|
||||||
# If pushing without using a named remote those arguments will be equal.
|
|
||||||
#
|
|
||||||
# Information about the commits which are being pushed is supplied as lines to
|
|
||||||
# the standard input in the form:
|
|
||||||
#
|
|
||||||
# <local ref> <local oid> <remote ref> <remote oid>
|
|
||||||
#
|
|
||||||
# This sample shows how to prevent push of commits where the log message starts
|
|
||||||
# with "WIP" (work in progress).
|
|
||||||
|
|
||||||
remote="$1"
|
|
||||||
url="$2"
|
|
||||||
|
|
||||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
|
||||||
|
|
||||||
while read local_ref local_oid remote_ref remote_oid
|
|
||||||
do
|
|
||||||
if test "$local_oid" = "$zero"
|
|
||||||
then
|
|
||||||
# Handle delete
|
|
||||||
:
|
|
||||||
else
|
|
||||||
if test "$remote_oid" = "$zero"
|
|
||||||
then
|
|
||||||
# New branch, examine all commits
|
|
||||||
range="$local_oid"
|
|
||||||
else
|
|
||||||
# Update to existing branch, examine new commits
|
|
||||||
range="$remote_oid..$local_oid"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for WIP commit
|
|
||||||
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
|
||||||
if test -n "$commit"
|
|
||||||
then
|
|
||||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,169 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
|
||||||
#
|
|
||||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
|
||||||
# its job, and can prevent the command from running by exiting with
|
|
||||||
# non-zero status.
|
|
||||||
#
|
|
||||||
# The hook is called with the following parameters:
|
|
||||||
#
|
|
||||||
# $1 -- the upstream the series was forked from.
|
|
||||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
|
||||||
#
|
|
||||||
# This sample shows how to prevent topic branches that are already
|
|
||||||
# merged to 'next' branch from getting rebased, because allowing it
|
|
||||||
# would result in rebasing already published history.
|
|
||||||
|
|
||||||
publish=next
|
|
||||||
basebranch="$1"
|
|
||||||
if test "$#" = 2
|
|
||||||
then
|
|
||||||
topic="refs/heads/$2"
|
|
||||||
else
|
|
||||||
topic=`git symbolic-ref HEAD` ||
|
|
||||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$topic" in
|
|
||||||
refs/heads/??/*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit 0 ;# we do not interrupt others.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Now we are dealing with a topic branch being rebased
|
|
||||||
# on top of master. Is it OK to rebase it?
|
|
||||||
|
|
||||||
# Does the topic really exist?
|
|
||||||
git show-ref -q "$topic" || {
|
|
||||||
echo >&2 "No such branch $topic"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Is topic fully merged to master?
|
|
||||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
|
||||||
if test -z "$not_in_master"
|
|
||||||
then
|
|
||||||
echo >&2 "$topic is fully merged to master; better remove it."
|
|
||||||
exit 1 ;# we could allow it, but there is no point.
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
|
||||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
|
||||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
|
||||||
if test "$only_next_1" = "$only_next_2"
|
|
||||||
then
|
|
||||||
not_in_topic=`git rev-list "^$topic" master`
|
|
||||||
if test -z "$not_in_topic"
|
|
||||||
then
|
|
||||||
echo >&2 "$topic is already up to date with master"
|
|
||||||
exit 1 ;# we could allow it, but there is no point.
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
|
||||||
/usr/bin/perl -e '
|
|
||||||
my $topic = $ARGV[0];
|
|
||||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
|
||||||
my (%not_in_next) = map {
|
|
||||||
/^([0-9a-f]+) /;
|
|
||||||
($1 => 1);
|
|
||||||
} split(/\n/, $ARGV[1]);
|
|
||||||
for my $elem (map {
|
|
||||||
/^([0-9a-f]+) (.*)$/;
|
|
||||||
[$1 => $2];
|
|
||||||
} split(/\n/, $ARGV[2])) {
|
|
||||||
if (!exists $not_in_next{$elem->[0]}) {
|
|
||||||
if ($msg) {
|
|
||||||
print STDERR $msg;
|
|
||||||
undef $msg;
|
|
||||||
}
|
|
||||||
print STDERR " $elem->[1]\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
' "$topic" "$not_in_next" "$not_in_master"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
<<\DOC_END
|
|
||||||
|
|
||||||
This sample hook safeguards topic branches that have been
|
|
||||||
published from being rewound.
|
|
||||||
|
|
||||||
The workflow assumed here is:
|
|
||||||
|
|
||||||
* Once a topic branch forks from "master", "master" is never
|
|
||||||
merged into it again (either directly or indirectly).
|
|
||||||
|
|
||||||
* Once a topic branch is fully cooked and merged into "master",
|
|
||||||
it is deleted. If you need to build on top of it to correct
|
|
||||||
earlier mistakes, a new topic branch is created by forking at
|
|
||||||
the tip of the "master". This is not strictly necessary, but
|
|
||||||
it makes it easier to keep your history simple.
|
|
||||||
|
|
||||||
* Whenever you need to test or publish your changes to topic
|
|
||||||
branches, merge them into "next" branch.
|
|
||||||
|
|
||||||
The script, being an example, hardcodes the publish branch name
|
|
||||||
to be "next", but it is trivial to make it configurable via
|
|
||||||
$GIT_DIR/config mechanism.
|
|
||||||
|
|
||||||
With this workflow, you would want to know:
|
|
||||||
|
|
||||||
(1) ... if a topic branch has ever been merged to "next". Young
|
|
||||||
topic branches can have stupid mistakes you would rather
|
|
||||||
clean up before publishing, and things that have not been
|
|
||||||
merged into other branches can be easily rebased without
|
|
||||||
affecting other people. But once it is published, you would
|
|
||||||
not want to rewind it.
|
|
||||||
|
|
||||||
(2) ... if a topic branch has been fully merged to "master".
|
|
||||||
Then you can delete it. More importantly, you should not
|
|
||||||
build on top of it -- other people may already want to
|
|
||||||
change things related to the topic as patches against your
|
|
||||||
"master", so if you need further changes, it is better to
|
|
||||||
fork the topic (perhaps with the same name) afresh from the
|
|
||||||
tip of "master".
|
|
||||||
|
|
||||||
Let's look at this example:
|
|
||||||
|
|
||||||
o---o---o---o---o---o---o---o---o---o "next"
|
|
||||||
/ / / /
|
|
||||||
/ a---a---b A / /
|
|
||||||
/ / / /
|
|
||||||
/ / c---c---c---c B /
|
|
||||||
/ / / \ /
|
|
||||||
/ / / b---b C \ /
|
|
||||||
/ / / / \ /
|
|
||||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
|
||||||
|
|
||||||
|
|
||||||
A, B and C are topic branches.
|
|
||||||
|
|
||||||
* A has one fix since it was merged up to "next".
|
|
||||||
|
|
||||||
* B has finished. It has been fully merged up to "master" and "next",
|
|
||||||
and is ready to be deleted.
|
|
||||||
|
|
||||||
* C has not merged to "next" at all.
|
|
||||||
|
|
||||||
We would want to allow C to be rebased, refuse A, and encourage
|
|
||||||
B to be deleted.
|
|
||||||
|
|
||||||
To compute (1):
|
|
||||||
|
|
||||||
git rev-list ^master ^topic next
|
|
||||||
git rev-list ^master next
|
|
||||||
|
|
||||||
if these match, topic has not merged in next at all.
|
|
||||||
|
|
||||||
To compute (2):
|
|
||||||
|
|
||||||
git rev-list master..topic
|
|
||||||
|
|
||||||
if this is empty, it is fully merged to "master".
|
|
||||||
|
|
||||||
DOC_END
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to make use of push options.
|
|
||||||
# The example simply echoes all push options that start with 'echoback='
|
|
||||||
# and rejects all pushes when the "reject" push option is used.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "pre-receive".
|
|
||||||
|
|
||||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
|
||||||
then
|
|
||||||
i=0
|
|
||||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
|
||||||
do
|
|
||||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
|
||||||
case "$value" in
|
|
||||||
echoback=*)
|
|
||||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
|
||||||
;;
|
|
||||||
reject)
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
i=$((i + 1))
|
|
||||||
done
|
|
||||||
fi
|
|
|
@ -1,42 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to prepare the commit log message.
|
|
||||||
# Called by "git commit" with the name of the file that has the
|
|
||||||
# commit message, followed by the description of the commit
|
|
||||||
# message's source. The hook's purpose is to edit the commit
|
|
||||||
# message file. If the hook fails with a non-zero status,
|
|
||||||
# the commit is aborted.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
|
||||||
|
|
||||||
# This hook includes three examples. The first one removes the
|
|
||||||
# "# Please enter the commit message..." help message.
|
|
||||||
#
|
|
||||||
# The second includes the output of "git diff --name-status -r"
|
|
||||||
# into the message, just before the "git status" output. It is
|
|
||||||
# commented because it doesn't cope with --amend or with squashed
|
|
||||||
# commits.
|
|
||||||
#
|
|
||||||
# The third example adds a Signed-off-by line to the message, that can
|
|
||||||
# still be edited. This is rarely a good idea.
|
|
||||||
|
|
||||||
COMMIT_MSG_FILE=$1
|
|
||||||
COMMIT_SOURCE=$2
|
|
||||||
SHA1=$3
|
|
||||||
|
|
||||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
|
||||||
|
|
||||||
# case "$COMMIT_SOURCE,$SHA1" in
|
|
||||||
# ,|template,)
|
|
||||||
# /usr/bin/perl -i.bak -pe '
|
|
||||||
# print "\n" . `git diff --cached --name-status -r`
|
|
||||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
|
||||||
# *) ;;
|
|
||||||
# esac
|
|
||||||
|
|
||||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
||||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
|
||||||
# if test -z "$COMMIT_SOURCE"
|
|
||||||
# then
|
|
||||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
|
||||||
# fi
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to update a checked-out tree on a git push.
|
|
||||||
#
|
|
||||||
# This hook is invoked by git-receive-pack(1) when it reacts to git
|
|
||||||
# push and updates reference(s) in its repository, and when the push
|
|
||||||
# tries to update the branch that is currently checked out and the
|
|
||||||
# receive.denyCurrentBranch configuration variable is set to
|
|
||||||
# updateInstead.
|
|
||||||
#
|
|
||||||
# By default, such a push is refused if the working tree and the index
|
|
||||||
# of the remote repository has any difference from the currently
|
|
||||||
# checked out commit; when both the working tree and the index match
|
|
||||||
# the current commit, they are updated to match the newly pushed tip
|
|
||||||
# of the branch. This hook is to be used to override the default
|
|
||||||
# behaviour; however the code below reimplements the default behaviour
|
|
||||||
# as a starting point for convenient modification.
|
|
||||||
#
|
|
||||||
# The hook receives the commit with which the tip of the current
|
|
||||||
# branch is going to be updated:
|
|
||||||
commit=$1
|
|
||||||
|
|
||||||
# It can exit with a non-zero status to refuse the push (when it does
|
|
||||||
# so, it must not modify the index or the working tree).
|
|
||||||
die () {
|
|
||||||
echo >&2 "$*"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Or it can make any necessary changes to the working tree and to the
|
|
||||||
# index to bring them to the desired state when the tip of the current
|
|
||||||
# branch is updated to the new commit, and exit with a zero status.
|
|
||||||
#
|
|
||||||
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
|
|
||||||
# in order to emulate git fetch that is run in the reverse direction
|
|
||||||
# with git push, as the two-tree form of git read-tree -u -m is
|
|
||||||
# essentially the same as git switch or git checkout that switches
|
|
||||||
# branches while keeping the local changes in the working tree that do
|
|
||||||
# not interfere with the difference between the branches.
|
|
||||||
|
|
||||||
# The below is a more-or-less exact translation to shell of the C code
|
|
||||||
# for the default behaviour for git's push-to-checkout hook defined in
|
|
||||||
# the push_to_deploy() function in builtin/receive-pack.c.
|
|
||||||
#
|
|
||||||
# Note that the hook will be executed from the repository directory,
|
|
||||||
# not from the working tree, so if you want to perform operations on
|
|
||||||
# the working tree, you will have to adapt your code accordingly, e.g.
|
|
||||||
# by adding "cd .." or using relative paths.
|
|
||||||
|
|
||||||
if ! git update-index -q --ignore-submodules --refresh
|
|
||||||
then
|
|
||||||
die "Up-to-date check failed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff-files --quiet --ignore-submodules --
|
|
||||||
then
|
|
||||||
die "Working directory has unstaged changes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This is a rough translation of:
|
|
||||||
#
|
|
||||||
# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
|
|
||||||
if git cat-file -e HEAD 2>/dev/null
|
|
||||||
then
|
|
||||||
head=HEAD
|
|
||||||
else
|
|
||||||
head=$(git hash-object -t tree --stdin </dev/null)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff-index --quiet --cached --ignore-submodules $head --
|
|
||||||
then
|
|
||||||
die "Working directory has staged changes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git read-tree -u -m "$commit"
|
|
||||||
then
|
|
||||||
die "Could not update working tree to new HEAD"
|
|
||||||
fi
|
|
|
@ -1,77 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# An example hook script to validate a patch (and/or patch series) before
|
|
||||||
# sending it via email.
|
|
||||||
#
|
|
||||||
# The hook should exit with non-zero status after issuing an appropriate
|
|
||||||
# message if it wants to prevent the email(s) from being sent.
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "sendemail-validate".
|
|
||||||
#
|
|
||||||
# By default, it will only check that the patch(es) can be applied on top of
|
|
||||||
# the default upstream branch without conflicts in a secondary worktree. After
|
|
||||||
# validation (successful or not) of the last patch of a series, the worktree
|
|
||||||
# will be deleted.
|
|
||||||
#
|
|
||||||
# The following config variables can be set to change the default remote and
|
|
||||||
# remote ref that are used to apply the patches against:
|
|
||||||
#
|
|
||||||
# sendemail.validateRemote (default: origin)
|
|
||||||
# sendemail.validateRemoteRef (default: HEAD)
|
|
||||||
#
|
|
||||||
# Replace the TODO placeholders with appropriate checks according to your
|
|
||||||
# needs.
|
|
||||||
|
|
||||||
validate_cover_letter () {
|
|
||||||
file="$1"
|
|
||||||
# TODO: Replace with appropriate checks (e.g. spell checking).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_patch () {
|
|
||||||
file="$1"
|
|
||||||
# Ensure that the patch applies without conflicts.
|
|
||||||
git am -3 "$file" || return
|
|
||||||
# TODO: Replace with appropriate checks for this patch
|
|
||||||
# (e.g. checkpatch.pl).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
validate_series () {
|
|
||||||
# TODO: Replace with appropriate checks for the whole series
|
|
||||||
# (e.g. quick build, coding style checks, etc.).
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
# main -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
|
|
||||||
then
|
|
||||||
remote=$(git config --default origin --get sendemail.validateRemote) &&
|
|
||||||
ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
|
|
||||||
worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
|
|
||||||
git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
|
|
||||||
git config --replace-all sendemail.validateWorktree "$worktree"
|
|
||||||
else
|
|
||||||
worktree=$(git config --get sendemail.validateWorktree)
|
|
||||||
fi || {
|
|
||||||
echo "sendemail-validate: error: failed to prepare worktree" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
unset GIT_DIR GIT_WORK_TREE
|
|
||||||
cd "$worktree" &&
|
|
||||||
|
|
||||||
if grep -q "^diff --git " "$1"
|
|
||||||
then
|
|
||||||
validate_patch "$1"
|
|
||||||
else
|
|
||||||
validate_cover_letter "$1"
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"
|
|
||||||
then
|
|
||||||
git config --unset-all sendemail.validateWorktree &&
|
|
||||||
trap 'git worktree remove -ff "$worktree"' EXIT &&
|
|
||||||
validate_series
|
|
||||||
fi
|
|
|
@ -1,128 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# An example hook script to block unannotated tags from entering.
|
|
||||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
|
||||||
#
|
|
||||||
# To enable this hook, rename this file to "update".
|
|
||||||
#
|
|
||||||
# Config
|
|
||||||
# ------
|
|
||||||
# hooks.allowunannotated
|
|
||||||
# This boolean sets whether unannotated tags will be allowed into the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.allowdeletetag
|
|
||||||
# This boolean sets whether deleting tags will be allowed in the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.allowmodifytag
|
|
||||||
# This boolean sets whether a tag may be modified after creation. By default
|
|
||||||
# it won't be.
|
|
||||||
# hooks.allowdeletebranch
|
|
||||||
# This boolean sets whether deleting branches will be allowed in the
|
|
||||||
# repository. By default they won't be.
|
|
||||||
# hooks.denycreatebranch
|
|
||||||
# This boolean sets whether remotely creating branches will be denied
|
|
||||||
# in the repository. By default this is allowed.
|
|
||||||
#
|
|
||||||
|
|
||||||
# --- Command line
|
|
||||||
refname="$1"
|
|
||||||
oldrev="$2"
|
|
||||||
newrev="$3"
|
|
||||||
|
|
||||||
# --- Safety check
|
|
||||||
if [ -z "$GIT_DIR" ]; then
|
|
||||||
echo "Don't run this script from the command line." >&2
|
|
||||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
|
||||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
|
||||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- Config
|
|
||||||
allowunannotated=$(git config --type=bool hooks.allowunannotated)
|
|
||||||
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
|
|
||||||
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
|
|
||||||
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
|
|
||||||
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
|
|
||||||
|
|
||||||
# check for no description
|
|
||||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
|
||||||
case "$projectdesc" in
|
|
||||||
"Unnamed repository"* | "")
|
|
||||||
echo "*** Project description file hasn't been set" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# --- Check types
|
|
||||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
|
||||||
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
|
||||||
if [ "$newrev" = "$zero" ]; then
|
|
||||||
newrev_type=delete
|
|
||||||
else
|
|
||||||
newrev_type=$(git cat-file -t $newrev)
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$refname","$newrev_type" in
|
|
||||||
refs/tags/*,commit)
|
|
||||||
# un-annotated tag
|
|
||||||
short_refname=${refname##refs/tags/}
|
|
||||||
if [ "$allowunannotated" != "true" ]; then
|
|
||||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
|
||||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/tags/*,delete)
|
|
||||||
# delete tag
|
|
||||||
if [ "$allowdeletetag" != "true" ]; then
|
|
||||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/tags/*,tag)
|
|
||||||
# annotated tag
|
|
||||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
|
||||||
then
|
|
||||||
echo "*** Tag '$refname' already exists." >&2
|
|
||||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/heads/*,commit)
|
|
||||||
# branch
|
|
||||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
|
||||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/heads/*,delete)
|
|
||||||
# delete branch
|
|
||||||
if [ "$allowdeletebranch" != "true" ]; then
|
|
||||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
refs/remotes/*,commit)
|
|
||||||
# tracking branch
|
|
||||||
;;
|
|
||||||
refs/remotes/*,delete)
|
|
||||||
# delete tracking branch
|
|
||||||
if [ "$allowdeletebranch" != "true" ]; then
|
|
||||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Anything else (is there anything else?)
|
|
||||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# --- Finished
|
|
||||||
exit 0
|
|
Binary file not shown.
|
@ -1,6 +0,0 @@
|
||||||
# git ls-files --others --exclude-from=.git/info/exclude
|
|
||||||
# Lines that start with '#' are comments.
|
|
||||||
# For a project mostly in C, the following would be a good set of
|
|
||||||
# exclude patterns (uncomment them if you want to use them):
|
|
||||||
# *.[oa]
|
|
||||||
# *~
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09 Simon Rieger <rieger@netzlink.com> 1699878732 +0100 clone: from https://github.com/tmux-plugins/tmux-copycat
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09 Simon Rieger <rieger@netzlink.com> 1699878732 +0100 clone: from https://github.com/tmux-plugins/tmux-copycat
|
|
|
@ -1 +0,0 @@
|
||||||
0000000000000000000000000000000000000000 d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09 Simon Rieger <rieger@netzlink.com> 1699878732 +0100 clone: from https://github.com/tmux-plugins/tmux-copycat
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,2 +0,0 @@
|
||||||
# pack-refs with: peeled fully-peeled sorted
|
|
||||||
d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09 refs/remotes/origin/master
|
|
|
@ -1 +0,0 @@
|
||||||
d7f7e6c1de0bc0d6915f4beea5be6a8a42045c09
|
|
|
@ -1 +0,0 @@
|
||||||
ref: refs/remotes/origin/master
|
|
|
@ -1 +0,0 @@
|
||||||
695404b910484c742eec5c920d393963a0270997
|
|
|
@ -1 +0,0 @@
|
||||||
5d66a57b6f014663d5618cfaf5d21b590e2b4595
|
|
|
@ -1 +0,0 @@
|
||||||
de224a5b0c82124bd91afbd00411c89374963bf6
|
|
|
@ -1 +0,0 @@
|
||||||
6bc93920406c8f4d0ff832f9eee7ea5a95f02068
|
|
|
@ -1 +0,0 @@
|
||||||
e81eaaca057524c95cca2e330392e1b8da4ca979
|
|
|
@ -1 +0,0 @@
|
||||||
6d4fd32498119c3129303f3dc15ab9e8f4091a0b
|
|
|
@ -1 +0,0 @@
|
||||||
b78252363f42fab918abfa3769d1ba9f65a37b6d
|
|
|
@ -1 +0,0 @@
|
||||||
5ab01f3d873b162003318443b70aa8279538c120
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue