move files under src folder

This commit is contained in:
2024-10-20 18:48:59 +03:00
parent 7496ec5af3
commit efb02b9abc
55 changed files with 9 additions and 9 deletions

15
src/GIT-Bash.md Normal file
View File

@@ -0,0 +1,15 @@
# Git в Bash
Для работы с Git часто будет требоваться командная строка. Хотя тут может быть большое количество личных предпочтений (PowerShell, zsh, fish), но пожалуй самый распостраненный случай когда пользователь будет использовать Bash. Такая возможность есть и в Windows (Git-bash) и в Linux, а также в различных вариантах embedded Linux устройств.
Потому хочется так настроить Bash чтобы им было удобно пользоваться.
[В официальном репозитории Git](https://github.com/git/git/tree/master/contrib/completion) уже есть все необходимо для этого.
- git-completion.bash - позволяет по нажатию `<TAB>` делать автодополнение комманд Git.
- git-prompt.sh - позволяет отображать полезные подсказки в promt терминала.
Если кто-то захочет разобраться во всех тонкостях настройки Bash, то он это сделает по официальной документации, и ничто не сможет его остановить. Я же предложу простой путь. Просто скачать и установить мою конфигурацию.
Для этого скачиваем [архив конфигурации](../../../../raw/branch/main/man/home-config/home-config.zip) и распаковываем в домашнюю папку пользователя с заменой. Не забываем перелогиниться чтобы изменения вступили в силу.
Теперь Bash будет автоматически распознавать что вы находитесь внутри репозитория Git и делать подсказки по работе.

55
src/GIT-config.md Normal file
View File

@@ -0,0 +1,55 @@
# Конфигурация GIT
Сразу же после установки лучше всего произвести первоначальную настройку Git.
Git имеет три файла конфигурации:
- системный (общий на всю систему, для всех пользователей) */etc/gitconfig*
- глобальный (для конкретного пользователя) *~/.gitconfig*
- локальный (для конкретного репозитория) *.git/config*
Соответственно для настроек *git config* используется с опциями:
- git config --system
- git cofnig --global
- git config (--local)
Можно редактировать файлы ручками, либо использовать встроенную утилиту *git config*. В общем виде формат вызова выглядит так:
```
git config секция.параметр значение
```
Делаем базовые настройки:
```
git config --global user.name "My name" # Имя пользователя по умолчанию для всех коммитов
git config --global user.email my@mail.com # Почта пользователя по умолчанию для всех коммитов
git config --global color.ui true # Включаем цветной вывод в командах git
git config --global core.quotepath off # Для правильного отображение русских имен файлов
```
Дополнительно можно настроить удобные элиасы для часто используемых команд.
---
Вот моя конфигурация ~/.gitconfig
```
[user]
name = ARNik
email = r.anikeev@gmail.com
[color]
ui = true
[core]
quotepath = off # отображение русских имен файлов
[alias]
ll = log --oneline --graph --decorate --all
st = status --short
co = checkout
br = branch
ct = commit
lg = log --graph --all\
--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
```
---
Для изучения Git и в качестве справки хочу порекомендовать:
- [Git: курс](https://www.youtube.com/playlist?list=PLDyvV36pndZFHXjXuwA_NywNrVQO0aQqb)
- [Git: разное](https://www.youtube.com/playlist?list=PLDyvV36pndZEB7kWWocU4QSn-G78LoaEE)

106
src/GIT-install-win.md Normal file
View File

@@ -0,0 +1,106 @@
# Установка GIT в windows.
Официальный сайт Git: https://git-scm.com/
Скачиваем и устанавливаем...
Путь установки оставим по умолчанию.
<p align="center"> <img src="images/Git_Install1.png"></p>
---
Тут вопрос удобства. Если не знаем что выбрать, то можно оставить по умолчанию.
<p align="center"> <img src="images/Git_Install2.png"></p>
---
Далее
<p align="center"> <img src="images/Git_Install3.png"></p>
---
Git поддерживает несколько редакторов. Этот редактор будет появляться каждый раз когда у Git появятся к вам вопросы. Лучше конечно использовать консольный редактор, т.к. не всегда получится использовать GUI редактор из консоли.
Для начинающих хорошо подойдет "Nano"
<p align="center"> <img src="images/Git_Install4.png"></p>
---
Раньше ветка по умолчанию называлась *master*. Теперь же Git стал толерантным и предлагает изменить ее на *main*. Я выбираю *main* просто потому что там на 2 буквы меньше чем в *master* :)
<p align="center"> <img src="images/Git_Install5.png"></p>
---
**Важная настройка!**
Выбираем средний пункт чтобы другой софт мог использовать Git тоже.
<p align="center"> <img src="images/Git_Install6.png"></p>
---
Используем встроенный в Git OpenSSH.
<p align="center"> <img src="images/Git_Install7.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install8.png"></p>
---
Git может автоматически менять окончания строк (Windows <-> Linux) при чекаутах и коммитах. Предпочитаю отключить эту опцию и не менять эти файлы. Если понадобится в будущем, то можно будет включить для определенных репозиториев.
Иначе могут быть странные поведения когда клонированный в виртуальную WSL машину репозиторий при просмотре через windows выклядит как измененный.
<p align="center"> <img src="images/Git_Install9.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install10.png"></p>
---
Поведение команды pull по умолчанию. Поскольку pull это две команды в одной (fetch и merge), то существует риск получить нежелательные действия в локальной ветке типа merge или rebase. Предпочитаю такие вещи контролировать самостоятельно, потому отключаю все кроме простой "перемотки".
<p align="center"> <img src="images/Git_Install11.png"></p>
---
Менеджер "секретов" для двухфакторной авторизации через https.
Не пользуюсь. Т.к. работаю через ssh.
<p align="center"> <img src="images/Git_Install12.png"></p>
---
Оставляем по умолчанию.
<p align="center"> <img src="images/Git_Install13.png"></p>
---
Экспериментальные фичи. Будем тестировать позже, когда доделают.
<p align="center"> <img src="images/Git_Install14.png"></p>
---
Готово!
<p align="center"> <img src="images/Git_Install15.png"></p>
Перезагружаемся.

141
src/SSH-key-auth-win.md Normal file
View File

@@ -0,0 +1,141 @@
# SSH авторизация по ключам
В интернете можно найти множество иснтрукций о том как настроить *ssh авторизацию по ключам* для использования с репозиториями, удаленным администрированием, различными программами контроля версий и т.д.
Встречаются даже такие извращения как использование Putty агента в связке с Tortoise Git на основе Putty сессий. Варианты с генерацией ключа с помощью Putty, конвертирование из одного формата в другой и подсовывание в Tortoise Git я, изрядно измучившись, тоже выкинул. Даже на самом GitHub лежит мануал с использованием агента ключей.
Перелопатив кучу мануалов я решил что мне нужен универсальный способ. И похоже мне удалось такой найти.
Итак, мне нужно чтобы работало:
* из любых терминалов (cmd, PowerShell, Git-bash, Git-cmd)
* с любыми shell (cmd, sh, bash, zsh т.д.)
* c любыми встроенными в терминалы или shell утилитами (ssh, scp, sftp и т.д.)
* со всеми репозиториями (GitHub, GitLab, Gitea)
* с различными GUI (TortoiseGit, VSCode, Altium Designer и пр.)
* без использования агентов ключей (ssh-agent или Putty)
* одинаково настраивалось как в Windows, так и в Linux.
* на одну машину должен приходиться один ключ, чтобы не настраивать отдельно для каждой утилиты/приложения/IDE
* один ключ для работы с репозиториями и доступом к удаленным серверам
Как оказалось чтобы все это реализовать нужно было не гуглить мануалы, а читать **man ssh**.
---
Для работы с SSH в windows будем использовать OpenSSH. Ставить отдельно его не надо т.к. OpenSSH идет в комплекте с Git. Ставим его в первую очередь.
Если же Git уже установлен, то идем дальше...
---
### 1. Открываем терминал и создаем ключ нашей локальной системы.
```
$ ssh-keygen -t rsa
```
На все вопросы нажимаем "Enter", отказываясь от ключевой фразы.
Как результат в домашней папке пользователя будет создана ключевая пара:
- .ssh/id_rsa (закрытый ключ)
- .ssh/id_rsa.pub (открытый ключ)
Закрытый ключ мы не трогаем. Он секретный и остается только на этой машние.
Открытый ключ мы используем для помещения в репозитории и удаленные сервера.
---
### 2. Добавляем ключ в ~/.ssh/config
Поскольку мы не будем пользоваться никакими агентами ключей, то для пользования репозиториями, нужно прописать данный ключ в ~/.ssh/config в качестве ипользуемого по умолчанию глобально.
Если этого файла нет, то создаем его и добавляем в него строчку:
```
IdentityFile ~/.ssh/id_rsa
```
~/.ssh/config вообще очень полезный файл. Рекомендую почитать что он еще умеет. Например туда можно прописать хосты типа:
```
Host site
HostName www.my-site.dyndns.org
Port 2222
User user
```
Тогда вместо такого:
```
$ ssh user@www.my-site.dyndns.org -p 2222
```
Можно писать так:
```
$ ssh site
```
---
### 3. Добавляем ключ на удаленные сервера Linux
Если ключ нужен только для работы с репозиториями, то переходим к следующему пункту.
Если есть программа ssh-copy-id (в Linux и Git-bash она есть), прописываем публичный ключ на удаленный сервер.
```
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
```
Eсли ssh-copy-id нет, то можно сделать это вручную.
Вот последовательность действий:
- логинимся на удаленной машине
- добавляем свой ключ в файл authorized_keys
```
remote$ echo "содержимое файла открытого ключа" >> ~/.ssh/authorized_keys
```
- делаем правильные права (если файл только что был создан)
```
remote$ chmod 600 ~/.ssh/authorized_keys
```
- проверяем, что все работает, запускаем на локальном компьютере.
```
$ ssh user@server_ip
```
---
### 4. Добавляем ключ в репозитории
Для работы с репозиториями необходимо прописать туда публичный ключ.
Для этого копируем содержимое файла ~/.ssh/id_rsa.pub во все необходимые репозитории.
- GitHub: Settings -> SSH and GPG keys -> Nes SSH key
- GitLab: Preferences -> SSH Keys -> Add key
- Gitea: Settings -> SSH / GPG keys -> Add Key
В качестве имени ключа удобно указывать пользователя и имя машины.
**user@host**
Для тестирования авторизации можно запустить:
```
$ ssh -T git@github.com
```
Аналогично и для других репозиториев:
```
$ ssh -T git@repo_url
```
Что проверяю я:
```
$ ssh -T git@git.arnik.ru
$ ssh -T git@gitlab.srv.mf-t.ru -p 2222
```
---
### 5. Настройка TortoiseGit
Чтобы TortiseGit переключился на использование OpenSSH надо в настройках
```
Settings -> Network -> SSH client
```
поменять клиент на
```
C:\Program Files\Git\usr\bin\ssh.exe
```
---
### PS (Linux)
Если все настроено но все равно спрашивает пароль, то надо проверить права:
```
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
```
Удачной работы!

107
src/TortoiseGit.md Normal file
View File

@@ -0,0 +1,107 @@
# Установка TortoiseGIT в windows.
Перед тем как устанавливать TortoiseGit надо [установить Git for windows](GIT-install-win.md).
Скачиваем с официального сайта: https://tortoisegit.org/download/
Запускаем установку.
<p align="center"> <img src="images/TortoiseGit_install_01.png"></p>
---
Далее.
<p align="center"> <img src="images/TortoiseGit_install_02.png"></p>
---
Проверяем что будут установлены все компоненты.
<p align="center"> <img src="images/TortoiseGit_install_03.png"></p>
---
Запускаем процесс установки.
<p align="center"> <img src="images/TortoiseGit_install_04.png"></p>
---
<p align="center"> <img src="images/TortoiseGit_install_05.png"></p>
---
Убираем галочку "Мастера настроек". Все настройки будем делать явным образом в Git и в TortoiseGit. Завершаем установку.
<p align="center"> <img src="images/TortoiseGit_install_06.png"></p>
---
После установки TortoiseGit соответствующие пункты появятся в контекстном меню проводника. Открываем настройки.
<p align="center"> <img src="images/TortoiseGit_install_07.png"></p>
---
В настройках "Context Menu" рекомендую дополнительно включить:
- Diff
- Show log
- Revert
<p align="center"> <img src="images/TortoiseGit_install_08.png"></p>
---
Чтобы значки отображались на сетевых и других дисках необходимо включить соответствующие галочики в:
```
Settings -> Icon Overlays
```
<p align="center"> <img src="images/TortoiseGit_install_09.png"></p>
---
Меняем набор иконок на "Illustration"
(самый красивый)
```
Settings -> Icon Overlays -> Icon Set
```
<p align="center"> <img src="images/TortoiseGit_install_10.png"></p>
---
Чтобы TortiseGit переключился на использование OpenSSH надо в настройках
```
Settings -> Network -> SSH client
```
поменять клиент на
```
C:\Program Files\Git\usr\bin\ssh.exe
```
<p align="center"> <img src="images/TortoiseGit_install_11.png"></p>
---
Для того чтобы удобно просматривать изменения рекомендую установить [WinMerge](https://winmerge.org/).
После установки чтобы TortoiseGit использовал WinMerge по умолчанию необходимо указать его в настройках.
```
Settings -> Diff Viewer
```
переключаем на External и вводим путь к установленному WinMerge c ключами:
```
C:\Program Files (x86)\WinMerge\WinMergeU.exe -e -ub -dl %bname -dr %yname %base %mine
```
<p align="center"> <img src="images/TortoiseGit_install_12.png"></p>
```
Settings -> Diff Viewer -> Merge Tool
```
также переключаем на External и вводим путь к установленному WinMerge c ключами:
```
C:\Program Files (x86)\WinMerge\WinMergeU.exe /e /ub /fm /wl /wr /dl %tname /dm %bname /dr %yname %theirs %base %mine /o %merged
```
<p align="center"> <img src="images/TortoiseGit_install_13.png"></p>
Не забываем перезагрузить компьютер чтобы все изменения вступили в силу.

47
src/VS-Code.md Normal file
View File

@@ -0,0 +1,47 @@
# Visual Studio Code
Очень популярный редактор для разработчиков. Достаточно простой с кучей дополнительных расширений которые можно установить из маркета.
В отличие от Eclipse быстрый, минималистичный и намного проще в настройке.
<details><summary>Отладка:</summary>
<p align="center"> <img src="images/vscode_demo.gif"></p>
</details>
<details><summary>Работа с GIT:</summary>
<p align="center"> <img src="images/vscode_graph_demo.gif"></p>
</details>
<details><summary>Работа через SSH:</summary>
<p align="center"> <img src="images/vscode_ssh_demo.gif"></p>
</details>
<details><summary>Запуск из консоли:</summary>
<p align="center"> <img src="images/vscode_wsl_demo.gif"></p>
</details>
Основные достоинства:
- Минималистичный
- Кроссплатформенный
- Отладка по SSH и в WSL
- Простой в настройке
- Встроенный Git
- Терминал
- поддерживает SWO и SEGGER RTT
## Установка
На [официальном сайте](https://code.visualstudio.com/Download) можно скачать различные версии для установки.
- User (только для одного пользователя)
- System (если пользователь Администратор)
Если есть права администратора, то рекомендую устанавливать [x64 System версию](https://code.visualstudio.com/docs/?dv=win64).
Если при запуске инсталятора выскакивает похожее окно, то вы пытаетесь установить не ту версию.
<p align="center"> <img src="images/vscode1.png"></p>
## VS Code uninstall
Если нужно полностью удалить VS Code, то кроме обычного удаления через Uninstall, нужно также почистить следующие папки:
- `C:\Program Files\Microsoft VS Code`
- `%USERPROFILE%\.vscode`
- `%AppData%\Code`

58
src/WSL.md Normal file
View File

@@ -0,0 +1,58 @@
# Windows Subsystem for Linux
WSL позволяет запускать, разрабатывать и отлаживать Linux программы на Windows. Более того обеспечивается удобная прозрачность между файловыми системами и возможность запускать программы друг-друга.
Существует две реализации WSL:
- WSL1 - транслятор API Linux <-> Windows
- WSL2 - виртуальная машина с полноценным ядром Linux.
Мы будем пользоваться WSL2. По скорости работы WSL2 почти не уступает нативной OS Linux. Более подробные отличия можно посмотреть в интеренете.
Находим в поиске: Включение или отключение компонентов Windows
Включаем галочки:
- Подсистема Windows для Linux
- Платформа виртуальной машины
<p align="center"> <img src="images/WSL1.png"></p>
Перезагружаем.
В терминале включаем WSL2 по умолчанию для всех дистрибутивов.
```
wsl --set-default-version 2
```
Далее из Microsoft Store можно устанавливать дистрибутивы Ubuntu, Debian, и др.
# Конфигурация WSL
Установленные дистрибутивы можно запускать из профиля [Windows Terminal](Windows-Terminal) так:
```
wsl.exe -d <distroname>
```
Например:
```
wsl.exe -d Ubuntu-20.04
```
Если после настройки .bashrc будет ругаться на переменные locale
то надо сгенерировать локаль ru_RU.UTF-8:
```
sudo dpkg-reconfigure locales
```
# Работа
Чтобы получить доступ к файловой системе виртуальной машины
надо при запущенной машине зайти в сетевую папку:
```
\\wsl$
```
Либо запустить внутри виртуальной машины:
```
explorer.exe .
```
Если используете VS Code то его можно открыть в нужной папке виртуальной машины:
```
code .
```

17
src/Windows-Terminal.md Normal file
View File

@@ -0,0 +1,17 @@
# Windows Terminal
[![IMAGE ALT TEXT HERE](images/WinTermYoutubeBtn.png)](https://www.youtube.com/watch?v=8gw0rXPMMPE)
Я нешел этот терминал самым удобным для использования в windows т.к. он позволяет заменить все необходимые терминалы существующие в винде. Такие как:
* cmd
* PowerShell
* Git-bash
* WSL (виртуальные машины)
* Putty (для удаленного администрироваия через SSH)
Получается единый терминал для всего, с едиными шрифтами, внешним видом, настройками. Ну и в конце-концов он просто красивый :)
Установить можно через Microsoft Store или скачав с [GitHub](https://github.com/microsoft/terminal).
Вот так этот терминал выглядит у меня:
![Мой терминал](images/MyWinTerm.png)

View File

@@ -0,0 +1,13 @@
# ~/.bash_profile: executed by bash(1) for login shells.
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
#echo 'bashprofile handeld'

153
src/home-config/.bashrc Normal file
View File

@@ -0,0 +1,153 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto --group-directories-first'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# some more ls aliases
alias la='ls -A'
alias l='ls -lh'
alias ll='ls -Alh'
export LC_ALL="C" # for sorting .files first
alias b='byobu'
# aliases for systemd using
alias start='systemctl start'
alias stop='systemctl stop'
alias status='systemctl status'
alias restart='systemctl restart'
# Using color ls output throw less
alias lsless='ls --color=always | less -r'
alias laless='la --color=always | less -r'
alias lless='l --color=always | less -r'
alias llless='ll --color=always | less -r'
alias update='sudo apt update && sudo apt upgrade'
#https://gist.github.com/tlberglund/3714970
alias git-loglive='while :
do
clear
git --no-pager log --graph --pretty=oneline --abbrev-commit --decorate --all $*
sleep 1
done;
'
. ~/.colors
# https://github.com/git/git/tree/master/contrib/completion/git-completion.bash
. ~/.git-completion.bash
# https://stackoverflow.com/questions/592620/how-can-i-check-if-a-program-exists-from-a-bash-script
if command -v screen &> /dev/null #if screen exist on the system
then
SCREEN=`screen -ls | grep Attached | awk '{print $1}'` # get pid.tty.host for attached session
fi
if [ ! -z "$SCREEN" ]
then
SCREEN=$Yellow"("$SCREEN$")"$Color_Off #adding color and brackets
fi
ERROR="\
\$(err=\$?; \
if [[ \$err == 0 ]]; \
then echo -e \$Green; \
else echo -e \"(\$err)\"\$Red; \
fi)"
#PS1="\[$SCREEN\]\[$ERROR\]\u@\h:\[$Cyan\]\w\\$\[$Color_Off\] "
# https://github.com/git/git/tree/master/contrib/completion/git-prompt.sh
. ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_DESCRIBE_STYLE="tag"
PROMPT_COMMAND='__git_ps1 "\[$SCREEN\]\[$ERROR\]\u@\h:\[$Cyan\]\w\[$Color_Off\]" "\[$Cyan\]\\\$\[$Color_Off\] " " \[$BYellow\][\[$Color_Off\]%s\[$BYellow\]]\[$Color_Off\]"'
export LC_ALL=ru_RU.UTF-8
# Less Colors for Man Pages
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking (цвет мерцающего стиля)
export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold (цвет полужирного стиля)
export LESS_TERMCAP_me=$'\E[0m' # end mode
#export LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box (цвет и фон служебной информации)
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline (цвет подчеркнутого стиля)
export LESS_TERMCAP_ue=$'\E[0m' # end underline
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
# History completion
#http://stackoverflow.com/questions/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
if grep -q WSL2 /proc/version; then
#echo "WSL2"
alias explorer='explorer.exe'
fi

120
src/home-config/.colors Normal file
View File

@@ -0,0 +1,120 @@
#https://wiki.archlinux.org/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Prompt_customization_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
# Reset
Color_Off='\e[0m' # Text Reset
# Regular Colors
Black='\e[0;30m' # Black
Red='\e[0;31m' # Red
Green='\e[0;32m' # Green
Yellow='\e[0;33m' # Yellow
Blue='\e[0;34m' # Blue
Purple='\e[0;35m' # Purple
Cyan='\e[0;36m' # Cyan
White='\e[0;37m' # White
# Bold
BBlack='\e[1;30m' # Black
BRed='\e[1;31m' # Red
BGreen='\e[1;32m' # Green
BYellow='\e[1;33m' # Yellow
BBlue='\e[1;34m' # Blue
BPurple='\e[1;35m' # Purple
BCyan='\e[1;36m' # Cyan
BWhite='\e[1;37m' # White
# Underline
UBlack='\e[4;30m' # Black
URed='\e[4;31m' # Red
UGreen='\e[4;32m' # Green
UYellow='\e[4;33m' # Yellow
UBlue='\e[4;34m' # Blue
UPurple='\e[4;35m' # Purple
UCyan='\e[4;36m' # Cyan
UWhite='\e[4;37m' # White
# Background
On_Black='\e[40m' # Black
On_Red='\e[41m' # Red
On_Green='\e[42m' # Green
On_Yellow='\e[43m' # Yellow
On_Blue='\e[44m' # Blue
On_Purple='\e[45m' # Purple
On_Cyan='\e[46m' # Cyan
On_White='\e[47m' # White
# High Intensity
IBlack='\e[0;90m' # Black
IRed='\e[0;91m' # Red
IGreen='\e[0;92m' # Green
IYellow='\e[0;93m' # Yellow
IBlue='\e[0;94m' # Blue
IPurple='\e[0;95m' # Purple
ICyan='\e[0;96m' # Cyan
IWhite='\e[0;97m' # White
# Bold High Intensity
BIBlack='\e[1;90m' # Black
BIRed='\e[1;91m' # Red
BIGreen='\e[1;92m' # Green
BIYellow='\e[1;93m' # Yellow
BIBlue='\e[1;94m' # Blue
BIPurple='\e[1;95m' # Purple
BICyan='\e[1;96m' # Cyan
BIWhite='\e[1;97m' # White
# High Intensity backgrounds
On_IBlack='\e[0;100m' # Black
On_IRed='\e[0;101m' # Red
On_IGreen='\e[0;102m' # Green
On_IYellow='\e[0;103m' # Yellow
On_IBlue='\e[0;104m' # Blue
On_IPurple='\e[0;105m' # Purple
On_ICyan='\e[0;106m' # Cyan
On_IWhite='\e[0;107m' # White
# https://github.com/jimeh/git-aware-prompt/blob/master/colors.sh
# Regular
txtblk="$(tput setaf 0 2>/dev/null || echo '\e[0;30m')" # Black
txtred="$(tput setaf 1 2>/dev/null || echo '\e[0;31m')" # Red
txtgrn="$(tput setaf 2 2>/dev/null || echo '\e[0;32m')" # Green
txtylw="$(tput setaf 3 2>/dev/null || echo '\e[0;33m')" # Yellow
txtblu="$(tput setaf 4 2>/dev/null || echo '\e[0;34m')" # Blue
txtpur="$(tput setaf 5 2>/dev/null || echo '\e[0;35m')" # Purple
txtcyn="$(tput setaf 6 2>/dev/null || echo '\e[0;36m')" # Cyan
txtwht="$(tput setaf 7 2>/dev/null || echo '\e[0;37m')" # White
# Bold
bldblk="$(tput setaf 0 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;30m')" # Black
bldred="$(tput setaf 1 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;31m')" # Red
bldgrn="$(tput setaf 2 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;32m')" # Green
bldylw="$(tput setaf 3 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;33m')" # Yellow
bldblu="$(tput setaf 4 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;34m')" # Blue
bldpur="$(tput setaf 5 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;35m')" # Purple
bldcyn="$(tput setaf 6 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;36m')" # Cyan
bldwht="$(tput setaf 7 2>/dev/null)$(tput bold 2>/dev/null || echo '\e[1;37m')" # White
# Underline
undblk="$(tput setaf 0 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;30m')" # Black
undred="$(tput setaf 1 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;31m')" # Red
undgrn="$(tput setaf 2 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;32m')" # Green
undylw="$(tput setaf 3 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;33m')" # Yellow
undblu="$(tput setaf 4 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;34m')" # Blue
undpur="$(tput setaf 5 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;35m')" # Purple
undcyn="$(tput setaf 6 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;36m')" # Cyan
undwht="$(tput setaf 7 2>/dev/null)$(tput smul 2>/dev/null || echo '\e[4;37m')" # White
# Background
bakblk="$(tput setab 0 2>/dev/null || echo '\e[40m')" # Black
bakred="$(tput setab 1 2>/dev/null || echo '\e[41m')" # Red
bakgrn="$(tput setab 2 2>/dev/null || echo '\e[42m')" # Green
bakylw="$(tput setab 3 2>/dev/null || echo '\e[43m')" # Yellow
bakblu="$(tput setab 4 2>/dev/null || echo '\e[44m')" # Blue
bakpur="$(tput setab 5 2>/dev/null || echo '\e[45m')" # Purple
bakcyn="$(tput setab 6 2>/dev/null || echo '\e[46m')" # Cyan
bakwht="$(tput setab 7 2>/dev/null || echo '\e[47m')" # White
# Reset
txtrst="$(tput sgr 0 2>/dev/null || echo '\e[0m')" # Text Reset

206
src/home-config/.dircolors Normal file
View File

@@ -0,0 +1,206 @@
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
# Copying and distribution of this file, with or without modification,
# are permitted provided the copyright notice and this notice are preserved.
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.
# Below, there should be one TERM entry for each termtype that is colorizable
TERM Eterm
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM eterm-color
TERM gnome
TERM gnome-256color
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM mlterm
TERM putty
TERM rxvt
TERM rxvt-256color
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM rxvt-unicode-256color
TERM rxvt-unicode256
TERM screen
TERM screen-256color
TERM screen-256color-bce
TERM screen-bce
TERM screen-w
TERM screen.Eterm
TERM screen.rxvt
TERM screen.linux
TERM st
TERM st-256color
TERM terminator
TERM vt100
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-88color
TERM xterm-color
TERM xterm-debian
# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#NORMAL 00 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 01;33 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
# numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;36;01 # block device driver
CHR 40;36;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 30;43 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;43 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;32
# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32
# Or if you want to colorize scripts even if they do not have the
# executable bit actually set.
#.sh 01;32
#.csh 01;32
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.lzma 01;31
.tlz 01;31
.txz 01;31
.zip 01;31
.z 01;31
.Z 01;31
.dz 01;31
.gz 01;31
.lz 01;31
.xz 01;31
.bz2 01;31
.bz 01;31
.tbz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.war 01;31
.ear 01;31
.sar 01;31
.rar 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.pgm 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.png 01;35
.svg 01;35
.svgz 01;35
.mng 01;35
.pcx 01;35
.mov 01;35
.mpg 01;35
.mpeg 01;35
.m2v 01;35
.mkv 01;35
.webm 01;35
.ogm 01;35
.mp4 01;35
.m4v 01;35
.mp4v 01;35
.vob 01;35
.qt 01;35
.nuv 01;35
.wmv 01;35
.asf 01;35
.rm 01;35
.rmvb 01;35
.flc 01;35
.avi 01;35
.fli 01;35
.flv 01;35
.gl 01;35
.dl 01;35
.xcf 01;35
.xwd 01;35
.yuv 01;35
.cgm 01;35
.emf 01;35
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axv 01;35
.anx 01;35
.ogv 01;35
.ogx 01;35
# audio formats
.aac 00;36
.au 00;36
.flac 00;36
.mid 00;36
.midi 00;36
.mka 00;36
.mp3 00;36
.mpc 00;36
.ogg 00;36
.ra 00;36
.wav 00;36
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axa 00;36
.oga 00;36
.spx 00;36
.xspf 00;36
# my extentions
.pdf 01;35

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,672 @@
# bash/zsh git prompt support
#
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Distributed under the GNU General Public License, version 2.0.
#
# This script allows you to see repository status in your prompt.
#
# To enable:
#
# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
# 2) Add the following line to your .bashrc/.zshrc/.profile:
# . ~/.git-prompt.sh # dot path/to/this-file
# 3a) Change your PS1 to call __git_ps1 as
# command-substitution:
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
# the optional argument will be used as format string.
# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
# with two parameters, <pre> and <post>, which are strings
# you would put in $PS1 before and after the status string
# generated by the git-prompt machinery. e.g.
# Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
# will show username, at-sign, host, colon, cwd, then
# various status string, followed by dollar and SP, as
# your prompt.
# ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
# will show username, pipe, then various status string,
# followed by colon, cwd, dollar and SP, as your prompt.
# Optionally, you can supply a third argument with a printf
# format string to finetune the output of the branch status
#
# See notes below about compatibility with other shells.
#
# The repository status will be displayed only if you are currently in a
# git repository. The %s token is the placeholder for the shown status.
#
# The prompt status always includes the current branch name.
#
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
# unstaged (*) and staged (+) changes will be shown next to the branch
# name. You can configure this per-repository with the
# bash.showDirtyState variable, which defaults to true once
# GIT_PS1_SHOWDIRTYSTATE is enabled.
#
# You can also see if currently something is stashed, by setting
# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
# then a '$' will be shown next to the branch name.
#
# If you would like to see if there're untracked files, then you can set
# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
# files, then a '%' will be shown next to the branch name. You can
# configure this per-repository with the bash.showUntrackedFiles
# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
# enabled.
#
# If you would like to see the difference between HEAD and its upstream,
# set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates you are behind, ">"
# indicates you are ahead, "<>" indicates you have diverged and "="
# indicates that there is no difference. You can further control
# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
# of values:
#
# verbose show number of commits ahead/behind (+/-) upstream
# name if verbose, then also show the upstream abbrev name
# legacy don't use the '--count' option available in recent
# versions of git-rev-list
# git always compare HEAD to @{upstream}
# svn always compare HEAD to your SVN upstream
#
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
# find one, or @{upstream} otherwise. Once you have set
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
# setting the bash.showUpstream config variable.
#
# You can change the separator between the branch name and the above
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
# is SP.
#
# When there is an in-progress operation such as a merge, rebase,
# revert, cherry-pick, or bisect, the prompt will include information
# related to the operation, often in the form "|<OPERATION-NAME>".
#
# When the repository has a sparse-checkout, a notification of the form
# "|SPARSE" will be included in the prompt. This can be shortened to a
# single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted
# by setting GIT_PS1_OMITSPARSESTATE.
#
# If you would like to see a notification on the prompt when there are
# unresolved conflicts, set GIT_PS1_SHOWCONFLICTSTATE to "yes". The
# prompt will include "|CONFLICT".
#
# If you would like to see more information about the identity of
# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
# to one of these values:
#
# contains relative to newer annotated tag (v1.6.3.2~35)
# branch relative to newer tag or branch (master~4)
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
# tag relative to any older tag (v1.6.3.1-13-gdd42c2f)
# default exactly matching tag
#
# If you would like a colored hint about the current dirty state, set
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb".
#
# If you would like __git_ps1 to do nothing in the case when the current
# directory is set up to be ignored by git, then set
# GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the
# repository level by setting bash.hideIfPwdIgnored to "false".
#
# Compatibility with other shells (beyond bash/zsh):
#
# We require posix-ish shell plus "local" support, which is most
# shells (even pdksh), but excluding ksh93 (because no "local").
#
# Prompt integration might differ between shells, but the gist is
# to load it once on shell init with '. path/to/git-prompt.sh',
# set GIT_PS1* vars once as needed, and either place $(__git_ps1..)
# inside PS1 once (0/1 args), or, before each prompt is displayed,
# call __git_ps1 (2/3 args) which sets PS1 with the status embedded.
#
# Many shells support the 1st method of command substitution,
# though some might need to first enable cmd substitution in PS1.
#
# When using colors, each escape sequence is wrapped between byte
# values 1 and 2 (control chars SOH, STX, respectively), which are
# invisible at the output, but for bash/readline they mark 0-width
# strings (SGR color sequences) when calculating the on-screen
# prompt width, to maintain correct input editing at the prompt.
#
# To replace or disable the 0-width markers, set GIT_PS1_COLOR_PRE
# and GIT_PS1_COLOR_POST to other markers, or empty (nul) to not
# use markers. For instance, some shells support '\[' and '\]' as
# start/end markers in PS1 - when invoking __git_ps1 with 3/4 args,
# but it may or may not work in command substitution mode. YMMV.
#
# If the shell doesn't support 0-width markers and editing behaves
# incorrectly when using colors in __git_ps1, then, other than
# disabling color, it might be solved using multi-line prompt,
# where the git status is not at the last line, e.g.:
# PS1='\n\w \u@\h$(__git_ps1 " (%s)")\n\$ '
# check whether printf supports -v
__git_printf_supports_v=
printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
# like __git_SOH=$'\001' etc but works also in shells without $'...'
eval "$(printf '
__git_SOH="\001" __git_STX="\002" __git_ESC="\033"
__git_LF="\n" __git_CRLF="\r\n"
')"
# stores the divergence from upstream in $p
# used by GIT_PS1_SHOWUPSTREAM
__git_ps1_show_upstream ()
{
local key value
local svn_remotes="" svn_url_pattern="" count n
local upstream_type=git legacy="" verbose="" name=""
local LF="$__git_LF"
# get some config options from git-config
local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
while read -r key value; do
case "$key" in
bash.showupstream)
GIT_PS1_SHOWUPSTREAM="$value"
if [ -z "${GIT_PS1_SHOWUPSTREAM}" ]; then
p=""
return
fi
;;
svn-remote.*.url)
svn_remotes=${svn_remotes}${value}${LF} # URI\nURI\n...
svn_url_pattern="$svn_url_pattern\\|$value"
upstream_type=svn+git # default upstream type is SVN if available, else git
;;
esac
done <<-OUTPUT
$output
OUTPUT
# parse configuration values
local option
for option in ${GIT_PS1_SHOWUPSTREAM-}; do
case "$option" in
git|svn) upstream_type="$option" ;;
verbose) verbose=1 ;;
legacy) legacy=1 ;;
name) name=1 ;;
esac
done
# Find our upstream type
case "$upstream_type" in
git) upstream_type="@{upstream}" ;;
svn*)
# successful svn-upstream resolution:
# - get the list of configured svn-remotes ($svn_remotes set above)
# - get the last commit which seems from one of our svn-remotes
# - confirm that it is from one of the svn-remotes
# - use $GIT_SVN_ID if set, else "git-svn"
# get upstream from "git-svn-id: UPSTRM@N HASH" in a commit message
# (git-svn uses essentially the same procedure internally)
local svn_upstream="$(
git log --first-parent -1 \
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null
)"
if [ -n "$svn_upstream" ]; then
# extract the URI, assuming --grep matched the last line
svn_upstream=${svn_upstream##*$LF} # last line
svn_upstream=${svn_upstream#*: } # UPSTRM@N HASH
svn_upstream=${svn_upstream%@*} # UPSTRM
case ${LF}${svn_remotes} in
*"${LF}${svn_upstream}${LF}"*)
# grep indeed matched the last line - it's our remote
# default branch name for checkouts with no layout:
upstream_type=${GIT_SVN_ID:-git-svn}
;;
*)
# the commit message includes one of our remotes, but
# it's not at the last line. is $svn_upstream junk?
upstream_type=${svn_upstream#/}
;;
esac
elif [ "svn+git" = "$upstream_type" ]; then
upstream_type="@{upstream}"
fi
;;
esac
# Find how many commits we are ahead/behind our upstream
if [ -z "$legacy" ]; then
count="$(git rev-list --count --left-right \
"$upstream_type"...HEAD 2>/dev/null)"
else
# produce equivalent output to --count for older versions of git
local commits
if commits="$(git rev-list --left-right "$upstream_type"...HEAD 2>/dev/null)"
then
local commit behind=0 ahead=0
for commit in $commits
do
case "$commit" in
"<"*) behind=$((behind+1)) ;;
*) ahead=$((ahead+1)) ;;
esac
done
count="$behind $ahead"
else
count=""
fi
fi
# calculate the result
if [ -z "$verbose" ]; then
case "$count" in
"") # no upstream
p="" ;;
"0 0") # equal to upstream
p="=" ;;
"0 "*) # ahead of upstream
p=">" ;;
*" 0") # behind upstream
p="<" ;;
*) # diverged from upstream
p="<>" ;;
esac
else # verbose, set upstream instead of p
case "$count" in
"") # no upstream
upstream="" ;;
"0 0") # equal to upstream
upstream="|u=" ;;
"0 "*) # ahead of upstream
upstream="|u+${count#0 }" ;;
*" 0") # behind upstream
upstream="|u-${count% 0}" ;;
*) # diverged from upstream
upstream="|u+${count#* }-${count% *}" ;;
esac
if [ -n "$count" ] && [ -n "$name" ]; then
__git_ps1_upstream_name=$(git rev-parse \
--abbrev-ref "$upstream_type" 2>/dev/null)
if [ "$pcmode" = yes ] && [ "$ps1_expanded" = yes ]; then
upstream="$upstream \${__git_ps1_upstream_name}"
else
upstream="$upstream ${__git_ps1_upstream_name}"
# not needed anymore; keep user's
# environment clean
unset __git_ps1_upstream_name
fi
fi
fi
}
# Helper function that is meant to be called from __git_ps1. It
# injects color codes into the appropriate gitstring variables used
# to build a gitstring. Colored variables are responsible for clearing
# their own color.
__git_ps1_colorize_gitstring ()
{
if [ -n "${ZSH_VERSION-}" ]; then
local c_red='%F{red}'
local c_green='%F{green}'
local c_lblue='%F{blue}'
local c_clear='%f'
else
# \001 (SOH) and \002 (STX) are 0-width substring markers
# which bash/readline identify while calculating the prompt
# on-screen width - to exclude 0-screen-width esc sequences.
local c_pre="${GIT_PS1_COLOR_PRE-$__git_SOH}${__git_ESC}["
local c_post="m${GIT_PS1_COLOR_POST-$__git_STX}"
local c_red="${c_pre}31${c_post}"
local c_green="${c_pre}32${c_post}"
local c_lblue="${c_pre}1;34${c_post}"
local c_clear="${c_pre}0${c_post}"
fi
local bad_color="$c_red"
local ok_color="$c_green"
local flags_color="$c_lblue"
local branch_color=""
if [ "$detached" = no ]; then
branch_color="$ok_color"
else
branch_color="$bad_color"
fi
if [ -n "$c" ]; then
c="$branch_color$c$c_clear"
fi
b="$branch_color$b$c_clear"
if [ -n "$w" ]; then
w="$bad_color$w$c_clear"
fi
if [ -n "$i" ]; then
i="$ok_color$i$c_clear"
fi
if [ -n "$s" ]; then
s="$flags_color$s$c_clear"
fi
if [ -n "$u" ]; then
u="$bad_color$u$c_clear"
fi
}
# Helper function to read the first line of a file into a variable.
# __git_eread requires 2 arguments, the file path and the name of the
# variable, in that order.
__git_eread ()
{
test -r "$1" && IFS=$__git_CRLF read -r "$2" <"$1"
}
# see if a cherry-pick or revert is in progress, if the user has committed a
# conflict resolution with 'git commit' in the middle of a sequence of picks or
# reverts then CHERRY_PICK_HEAD/REVERT_HEAD will not exist so we have to read
# the todo file.
__git_sequencer_status ()
{
local todo
if test -f "$g/CHERRY_PICK_HEAD"
then
r="|CHERRY-PICKING"
return 0;
elif test -f "$g/REVERT_HEAD"
then
r="|REVERTING"
return 0;
elif __git_eread "$g/sequencer/todo" todo
then
case "$todo" in
p[\ \ ]|pick[\ \ ]*)
r="|CHERRY-PICKING"
return 0
;;
revert[\ \ ]*)
r="|REVERTING"
return 0
;;
esac
fi
return 1
}
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
# when called from PS1 using command substitution
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
#
# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
# when two arguments are given, the first is prepended and the second appended
# to the state string when assigned to PS1.
# The optional third parameter will be used as printf format string to further
# customize the output of the git-status string.
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
__git_ps1 ()
{
# preserve exit status
local exit="$?"
local pcmode=no
local detached=no
local ps1pc_start='\u@\h:\w '
local ps1pc_end='\$ '
local printf_format=' (%s)'
case "$#" in
2|3) pcmode=yes
ps1pc_start="$1"
ps1pc_end="$2"
printf_format="${3:-$printf_format}"
# set PS1 to a plain prompt so that we can
# simply return early if the prompt should not
# be decorated
PS1="$ps1pc_start$ps1pc_end"
;;
0|1) printf_format="${1:-$printf_format}"
;;
*) return "$exit"
;;
esac
# ps1_expanded: This variable is set to 'yes' if the shell
# subjects the value of PS1 to parameter expansion:
#
# * bash does unless the promptvars option is disabled
# * zsh does not unless the PROMPT_SUBST option is set
# * POSIX shells always do
#
# If the shell would expand the contents of PS1 when drawing
# the prompt, a raw ref name must not be included in PS1.
# This protects the user from arbitrary code execution via
# specially crafted ref names. For example, a ref named
# 'refs/heads/$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' might cause the
# shell to execute 'sudo rm -rf /' when the prompt is drawn.
#
# Instead, the ref name should be placed in a separate global
# variable (in the __git_ps1_* namespace to avoid colliding
# with the user's environment) and that variable should be
# referenced from PS1. For example:
#
# __git_ps1_foo=$(do_something_to_get_ref_name)
# PS1="...stuff...\${__git_ps1_foo}...stuff..."
#
# If the shell does not expand the contents of PS1, the raw
# ref name must be included in PS1.
#
# The value of this variable is only relevant when in pcmode.
#
# Assume that the shell follows the POSIX specification and
# expands PS1 unless determined otherwise. (This is more
# likely to be correct if the user has a non-bash, non-zsh
# shell and safer than the alternative if the assumption is
# incorrect.)
#
local ps1_expanded=yes
[ -z "${ZSH_VERSION-}" ] || eval '[[ -o PROMPT_SUBST ]]' || ps1_expanded=no
[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no
local repo_info rev_parse_exit_code
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
--is-bare-repository --is-inside-work-tree --show-ref-format \
--short HEAD 2>/dev/null)"
rev_parse_exit_code="$?"
if [ -z "$repo_info" ]; then
return "$exit"
fi
local LF="$__git_LF"
local short_sha=""
if [ "$rev_parse_exit_code" = "0" ]; then
short_sha="${repo_info##*$LF}"
repo_info="${repo_info%$LF*}"
fi
local ref_format="${repo_info##*$LF}"
repo_info="${repo_info%$LF*}"
local inside_worktree="${repo_info##*$LF}"
repo_info="${repo_info%$LF*}"
local bare_repo="${repo_info##*$LF}"
repo_info="${repo_info%$LF*}"
local inside_gitdir="${repo_info##*$LF}"
local g="${repo_info%$LF*}"
if [ "true" = "$inside_worktree" ] &&
[ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] &&
[ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] &&
git check-ignore -q .
then
return "$exit"
fi
local sparse=""
if [ -z "${GIT_PS1_COMPRESSSPARSESTATE-}" ] &&
[ -z "${GIT_PS1_OMITSPARSESTATE-}" ] &&
[ "$(git config --bool core.sparseCheckout)" = "true" ]; then
sparse="|SPARSE"
fi
local r=""
local b=""
local step=""
local total=""
if [ -d "$g/rebase-merge" ]; then
__git_eread "$g/rebase-merge/head-name" b
__git_eread "$g/rebase-merge/msgnum" step
__git_eread "$g/rebase-merge/end" total
r="|REBASE"
else
if [ -d "$g/rebase-apply" ]; then
__git_eread "$g/rebase-apply/next" step
__git_eread "$g/rebase-apply/last" total
if [ -f "$g/rebase-apply/rebasing" ]; then
__git_eread "$g/rebase-apply/head-name" b
r="|REBASE"
elif [ -f "$g/rebase-apply/applying" ]; then
r="|AM"
else
r="|AM/REBASE"
fi
elif [ -f "$g/MERGE_HEAD" ]; then
r="|MERGING"
elif __git_sequencer_status; then
:
elif [ -f "$g/BISECT_LOG" ]; then
r="|BISECTING"
fi
if [ -n "$b" ]; then
:
elif [ -h "$g/HEAD" ]; then
# symlink symbolic ref
b="$(git symbolic-ref HEAD 2>/dev/null)"
else
local head=""
case "$ref_format" in
files)
if ! __git_eread "$g/HEAD" head; then
return "$exit"
fi
case $head in
"ref: "*)
head="${head#ref: }"
;;
*)
head=""
esac
;;
*)
head="$(git symbolic-ref HEAD 2>/dev/null)"
;;
esac
if test -z "$head"; then
detached=yes
b="$(
case "${GIT_PS1_DESCRIBE_STYLE-}" in
(contains)
git describe --contains HEAD ;;
(branch)
git describe --contains --all HEAD ;;
(tag)
git describe --tags HEAD ;;
(describe)
git describe HEAD ;;
(* | default)
git describe --tags --exact-match HEAD ;;
esac 2>/dev/null)" ||
b="$short_sha..."
b="($b)"
else
b="$head"
fi
fi
fi
if [ -n "$step" ] && [ -n "$total" ]; then
r="$r $step/$total"
fi
local conflict="" # state indicator for unresolved conflicts
if [ "${GIT_PS1_SHOWCONFLICTSTATE-}" = "yes" ] &&
[ "$(git ls-files --unmerged 2>/dev/null)" ]; then
conflict="|CONFLICT"
fi
local w=""
local i=""
local s=""
local u=""
local h=""
local c=""
local p="" # short version of upstream state indicator
local upstream="" # verbose version of upstream state indicator
if [ "true" = "$inside_gitdir" ]; then
if [ "true" = "$bare_repo" ]; then
c="BARE:"
else
b="GIT_DIR!"
fi
elif [ "true" = "$inside_worktree" ]; then
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
[ "$(git config --bool bash.showDirtyState)" != "false" ]
then
git diff --no-ext-diff --quiet || w="*"
git diff --no-ext-diff --cached --quiet || i="+"
if [ -z "$short_sha" ] && [ -z "$i" ]; then
i="#"
fi
fi
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
git rev-parse --verify --quiet refs/stash >/dev/null
then
s="$"
fi
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
then
u="%${ZSH_VERSION+%}"
fi
if [ -n "${GIT_PS1_COMPRESSSPARSESTATE-}" ] &&
[ "$(git config --bool core.sparseCheckout)" = "true" ]; then
h="?"
fi
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
__git_ps1_show_upstream
fi
fi
local z="${GIT_PS1_STATESEPARATOR- }"
b=${b##refs/heads/}
if [ "$pcmode" = yes ] && [ "$ps1_expanded" = yes ]; then
__git_ps1_branch_name=$b
b="\${__git_ps1_branch_name}"
fi
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
__git_ps1_colorize_gitstring
fi
local f="$h$w$i$s$u$p"
local gitstring="$c$b${f:+$z$f}${sparse}$r${upstream}${conflict}"
if [ "$pcmode" = yes ]; then
if [ "${__git_printf_supports_v-}" != yes ]; then
gitstring=$(printf -- "$printf_format" "$gitstring")
else
printf -v gitstring -- "$printf_format" "$gitstring"
fi
PS1="$ps1pc_start$gitstring$ps1pc_end"
else
printf -- "$printf_format" "$gitstring"
fi
return "$exit"
}

Binary file not shown.

BIN
src/images/Git_Install1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/images/Git_Install2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/images/Git_Install3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/images/Git_Install4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/images/Git_Install5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
src/images/Git_Install6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/images/Git_Install7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/images/Git_Install8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/images/Git_Install9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
src/images/MyWinTerm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
src/images/WSL1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
src/images/YoutubeBtn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/images/vscode1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/images/vscode2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/images/vscode_demo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB