From a9c588f7078bb74e6251a1f859d421f0d558628c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 11 Feb 2025 18:25:06 +0100 Subject: [PATCH] Adding upstream version 0.10.9. Signed-off-by: Daniel Baumann --- .gita-completion.bash | 37 +++++ .github/workflows/nos.yml | 25 ++++ .gitignore | 102 ++++++++++++++ .travis.yml | 11 ++ LICENSE | 21 +++ MANIFEST.in | 1 + Makefile | 12 ++ README.md | 230 ++++++++++++++++++++++++++++++ doc/README_CN.md | 187 ++++++++++++++++++++++++ doc/design.md | 81 +++++++++++ doc/screenshot.png | Bin 0 -> 225737 bytes gita/__init__.py | 3 + gita/__main__.py | 289 ++++++++++++++++++++++++++++++++++++++ gita/cmds.yml | 65 +++++++++ gita/common.py | 7 + gita/info.py | 146 +++++++++++++++++++ gita/utils.py | 225 +++++++++++++++++++++++++++++ requirements.txt | 6 + setup.py | 38 +++++ tests/clash_path_file | 3 + tests/conftest.py | 26 ++++ tests/empty_path_file | 0 tests/mock_group_file | 2 + tests/mock_path_file | 4 + tests/test_info.py | 16 +++ tests/test_main.py | 167 ++++++++++++++++++++++ tests/test_utils.py | 118 ++++++++++++++++ 27 files changed, 1822 insertions(+) create mode 100644 .gita-completion.bash create mode 100644 .github/workflows/nos.yml create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 MANIFEST.in create mode 100644 Makefile create mode 100644 README.md create mode 100644 doc/README_CN.md create mode 100644 doc/design.md create mode 100644 doc/screenshot.png create mode 100644 gita/__init__.py create mode 100644 gita/__main__.py create mode 100644 gita/cmds.yml create mode 100644 gita/common.py create mode 100644 gita/info.py create mode 100644 gita/utils.py create mode 100644 requirements.txt create mode 100644 setup.py create mode 100644 tests/clash_path_file create mode 100644 tests/conftest.py create mode 100644 tests/empty_path_file create mode 100644 tests/mock_group_file create mode 100644 tests/mock_path_file create mode 100644 tests/test_info.py create mode 100644 tests/test_main.py create mode 100644 tests/test_utils.py diff --git a/.gita-completion.bash b/.gita-completion.bash new file mode 100644 index 0000000..5090bb7 --- /dev/null +++ b/.gita-completion.bash @@ -0,0 +1,37 @@ + +_gita_completions() +{ + + local cur commands repos cmd + + cur=${COMP_WORDS[COMP_CWORD]} + cmd=${COMP_WORDS[1]} + + # FIXME: this is somewhat slow + commands=`gita -h | sed '2q;d' |sed 's/[{}.,]/ /g'` + + repos=`gita ls` + # this doesn't work for two repos with the same basename + #gita_path=${XDG_CONFIG_HOME:-$HOME/.config}/gita/repo_path + #repos=`awk '{split($0, paths, ":")} END {for (i in paths) {n=split(paths[i],b, /\//); print b[n]}}' ${gita_path}` + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=($(compgen -W "${commands}" ${cur})) + elif [ $COMP_CWORD -gt 1 ]; then + case $cmd in + add) + COMPREPLY=($(compgen -d ${cur})) + ;; + ll) + return + ;; + *) + COMPREPLY=($(compgen -W "${repos}" ${cur})) + ;; + esac + fi + +} + +complete -F _gita_completions gita + diff --git a/.github/workflows/nos.yml b/.github/workflows/nos.yml new file mode 100644 index 0000000..d75defa --- /dev/null +++ b/.github/workflows/nos.yml @@ -0,0 +1,25 @@ +name: gita-test + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: [3.6, 3.7, 3.8] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependences + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install . + - name: Pytest + run: | + pytest tests --cov=./gita diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4124c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,102 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..dedcf1c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: python + +python: + - '3.6' +install: + - pip3 install . + - pip install -r requirements.txt +script: make test +after_success: + - bash <(curl -s https://codecov.io/bash) + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f6e6adc --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Dong Zhou + +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. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..e50bea9 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include gita/cmds.yml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c67d4a7 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +.PHONY: dist test install clean twine + +install: + pip3 install -e . +test: clean + pytest tests --cov=./gita $(TEST_ARGS) -n=auto +dist: clean + python3 setup.py sdist +twine: + twine upload dist/* +clean: + git clean -fdx diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6518a9 --- /dev/null +++ b/README.md @@ -0,0 +1,230 @@ +[![PyPi version](https://img.shields.io/pypi/v/gita.svg?color=blue)](https://pypi.org/project/gita/) +[![Build Status](https://travis-ci.org/nosarthur/gita.svg?branch=master)](https://travis-ci.org/nosarthur/gita) +[![codecov](https://codecov.io/gh/nosarthur/gita/branch/master/graph/badge.svg)](https://codecov.io/gh/nosarthur/gita) +[![licence](https://img.shields.io/pypi/l/gita.svg)](https://github.com/nosarthur/gita/blob/master/LICENSE) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/gita.svg)](https://pypistats.org/packages/gita) +[![Chinese](https://img.shields.io/badge/-中文-lightgrey.svg)](https://github.com/nosarthur/gita/blob/master/doc/README_CN.md) + +``` + _______________________________ +( ____ \__ __|__ __( ___ ) +| ( \/ ) ( ) ( | ( ) | +| | | | | | | (___) | +| | ____ | | | | | ___ | +| | \_ ) | | | | | ( ) | +| (___) |__) (___ | | | ) ( | +(_______)_______/ )_( |/ \| v0.10 +``` + +# Gita: a command-line tool to manage multiple git repos + +This tool does two things + +- display the status of multiple git repos such as branch, modification, commit message side by side +- delegate git commands/aliases from any working directory + +If several repos compile together, it helps to see their status together too. +I also hate to change directories to execute git commands. + +![gita screenshot](https://github.com/nosarthur/gita/raw/master/doc/screenshot.png) + +Here the branch color distinguishes 5 situations between local and remote branches: + +- white: local has no remote +- green: local is the same as remote +- red: local has diverged from remote +- purple: local is ahead of remote (good for push) +- yellow: local is behind remote (good for merge) + +The choice of purple for ahead and yellow for behind is motivated by +[blueshift](https://en.wikipedia.org/wiki/Blueshift) and [redshift](https://en.wikipedia.org/wiki/Redshift), +using green as baseline. + +The additional status symbols denote + +- `+`: staged changes +- `*`: unstaged changes +- `_`: untracked files/folders + +The bookkeeping sub-commands are + +- `gita add `: add repo(s) to `gita` +- `gita rm `: remove repo(s) from `gita` (won't remove files from disk) +- `gita group`: show grouping of the repos +- `gita group `: group repos +- `gita ungroup `: remove grouping for repos +- `gita ll`: display the status of all repos +- `gita ll `: display the status of repos in a group +- `gita ls`: display the names of all repos +- `gita ls `: display the absolute path of one repo +- `gita rename `: rename a repo +- `gita info`: display the used and unused information items +- `gita -v`: display gita version + +Repo paths are saved in `$XDG_CONFIG_HOME/gita/repo_path` (most likely `~/.config/gita/repo_path`). + +The delegating sub-commands are of two formats + +- `gita [repo-name(s) or group-name(s)]`: + optional repo or group input, and no input means all repos. +- `gita `: + required repo name(s) or group name(s) input + +By default, only `fetch` and `pull` take optional input. + +If more than one repos are specified, the git command will run asynchronously, +with the exception of `log`, `difftool` and `mergetool`, which require non-trivial user input. + +## Customization + +Custom delegating sub-commands can be defined in `$XDG_CONFIG_HOME/gita/cmds.yml` +(most likely `~/.config/gita/cmds.yml`). +And they shadow the default ones if name collisions exist. + +Default delegating sub-commands are defined in +[cmds.yml](https://github.com/nosarthur/gita/blob/master/gita/cmds.yml). +For example, `gita stat ` is registered as + +```yaml +stat: + cmd: diff --stat + help: show edit statistics +``` + +which executes `git diff --stat`. + +If the delegated git command is a single word, the `cmd` tag can be omitted. +See `push` for an example. +To disable asynchronous execution, set the `disable_async` tag to be `true`. +See `difftool` for an example. + +If you want a custom command to behave like `gita fetch`, i.e., to apply +command to all repos if nothing is specified, +set the `allow_all` option to be `true`. +For example, the following snippet creates a new command +`gita comaster [repo-name(s)]` with optional repo name input. + +```yaml +comaster: + cmd: checkout master + allow_all: true + help: checkout the master branch +``` + +Another customization is the information items displayed by `gita ll`. +The used and unused information items are shown with `gita info` and one can +create `$XDG_CONFIG_HOME/gita/info.yml` to customize it. For example, the +default information items setting corresponds to + +```yaml +- branch +- commit_msg +``` + +To create your own information items, define a dictionary called `extra_info_items` +in `$XDG_CONFIG_HOME/gita/extra_repo_info.py`. It should map strings to functions, +where the strings are the information item names and the functions take repo path +as input. A trivial example is shown below. + +```python +def get_delim(path: str) -> str: + return '|' + +extra_info_items = {'delim': get_delim} +``` + +If it works, you will see these extra items in the 'Unused' section of the +`gita info` output. To use them, edit `$XDG_CONFIG_HOME/gita/extra_repo_info.py`. + +## Superman mode + +The superman mode delegates any git command/alias. +Usage: + +``` +gita super [repo-name(s) or group-name(s)] +``` + +Here `repo-name(s)` or `group-name(s)` are optional, and their absence means all repos. +For example, + +- `gita super checkout master` puts all repos on the master branch +- `gita super frontend-repo backend-repo commit -am 'implement a new feature'` + executes `git commit -am 'implement a new feature'` for `frontend-repo` and `backend-repo` + +## Requirements + +Gita requires Python 3.6 or higher, due to the use of +[f-string](https://www.python.org/dev/peps/pep-0498/) +and [asyncio module](https://docs.python.org/3.6/library/asyncio.html). + +Under the hood, gita uses subprocess to run git commands/aliases. +Thus the installed git version may matter. +I have git `1.8.3.1`, `2.17.2`, and `2.20.1` on my machines, and +their results agree. + +## Installation + +To install the latest version, run + +``` +pip3 install -U gita +``` + +If development mode is preferred, +download the source code and run + +``` +pip3 install -e +``` + +In either case, calling `gita` in terminal may not work, +then you can put the following line in the `.bashrc` file. + +``` +alias gita="python3 -m gita" +``` + +Windows users may need to enable the ANSI escape sequence in terminal, otherwise +the branch color won't work. +See [this stackoverflow post](https://stackoverflow.com/questions/51680709/colored-text-output-in-powershell-console-using-ansi-vt100-codes) for details. + +## Auto-completion + +Download +[.gita-completion.bash](https://github.com/nosarthur/gita/blob/master/.gita-completion.bash) +and source it in `.bashrc`. + +## Contributing + +To contribute, you can + +- report/fix bugs +- request/implement features +- star/recommend this project + +To run tests locally, simply `pytest`. +More implementation details are in +[design.md](https://github.com/nosarthur/gita/blob/master/doc/design.md). + +You can also make donation to me on [patreon](https://www.patreon.com/nosarthur). +Any amount is appreciated! + +## Contributors + +[![nosarthur](https://github.com/nosarthur.png?size=40 "nosarthur")](https://github.com/nosarthur) +[![mc0239](https://github.com/mc0239.png?size=40 "mc0239")](https://github.com/mc0239) +[![dgrant](https://github.com/dgrant.png?size=40 "dgrant")](https://github.com/dgrant) +[![samibh](https://github.com/github.png?size=40 "samibh")](https://github.com/samibh) +[![wbrn](https://github.com/wbrn.png?size=40 "wbrn")](https://github.com/wbrn) +[![TpOut](https://github.com/TpOut.png?size=40 "TpOut")](https://github.com/TpOut) +[![PabloCastellano](https://github.com/PabloCastellano.png?size=40 "PabloCastellano")](https://github.com/PabloCastellano) +[![cd3](https://github.com/cd3.png?size=40 "cd3")](https://github.com/cd3) + +## Other multi-repo tools + +I haven't tried them but I heard good things about them. + +- [myrepos](https://myrepos.branchable.com/) +- [repo](https://source.android.com/setup/develop/repo) + diff --git a/doc/README_CN.md b/doc/README_CN.md new file mode 100644 index 0000000..ac688db --- /dev/null +++ b/doc/README_CN.md @@ -0,0 +1,187 @@ +[![PyPi version](https://img.shields.io/pypi/v/gita.svg?color=blue)](https://pypi.org/project/gita/) +[![Build Status](https://travis-ci.org/nosarthur/gita.svg?branch=master)](https://travis-ci.org/nosarthur/gita) +[![codecov](https://codecov.io/gh/nosarthur/gita/branch/master/graph/badge.svg)](https://codecov.io/gh/nosarthur/gita) +[![licence](https://img.shields.io/pypi/l/gita.svg)](https://github.com/nosarthur/gita/blob/master/LICENSE) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/gita.svg)](https://pypistats.org/packages/gita) +[![English](https://img.shields.io/badge/-English-lightgrey.svg)](https://github.com/nosarthur/gita) + +``` + _______________________________ +( ____ \__ __|__ __( ___ ) +| ( \/ ) ( ) ( | ( ) | +| | | | | | | (___) | +| | ____ | | | | | ___ | +| | \_ ) | | | | | ( ) | +| (___) |__) (___ | | | ) ( | +(_______)_______/ )_( |/ \| v0.10 +``` + +# Gita:一个管理多个 git 库的命令行工具 + +这个工具有两个作用: + +- 并排显示多个库的状态信息,比如分支名,编辑状态,提交信息等 +- 在任何目录下代理执行 git 指令 + +![gita screenshot](https://github.com/nosarthur/gita/raw/master/doc/screenshot.png) + +本地和远程分支之间的关系有5种情况,在这里分别用5种颜色对应着: + +- 绿色:本地和远程保持一致 +- 红色:本地和远程产生了分叉 +- 黄色:本地落后于远程(适合合并merge) +- 白色:本地没有指定远程 +- 紫色:本地超前于远程(适合推送push) + +为什么选择了紫色作为超前以及黄色作为落后,绿色作为基准 的理由在这两篇文章中解释: +[blueshift](https://en.wikipedia.org/wiki/Blueshift)、[redshift](https://en.wikipedia.org/wiki/Redshift) + +额外的状态符号意义: + +- `+`: 暂存(staged) +- `*`: 未暂存(unstaged) +- `_`: 未追踪(untracked) + +基础指令: + +- `gita add `: 添加库 +- `gita rm `: 移除库(不会删除文件) +- `gita group`: 显示库的组群 +- `gita group` : 将库分组 +- `gita ll`: 显示所有库的状态信息 +- `gita ll `: 显示一个组群中库的状态信息 +- `gita ls`: 显示所有库的名字 +- `gita ls `: 显示一个库的绝对路径 +- `gita rename `: 重命名一个库 +- `gita info`: 显示已用的和未用的信息项 +- `gita -v`: 显示版本号 + +库的路径存在`$XDG_CONFIG_HOME/gita/repo_path` (多半是`~/.config/gita/repo_path`)。 + +代理执行的子命令有两种格式: + +- `gita [repo-name(s) or group-name(s)]`: 库名或组群名是可选的,缺失表示所有库 +- `gita `: 必须有库名或组群名 + +默认只有`fetch`和`pull`是第一种格式。 + +如果输入了多个库名, +而且被代理的git指令不需要用户输入, +那么各个库的代理指令会被异步执行。 + +## 私人定制 + +定制的代理子命令要放在`$XDG_CONFIG_HOME/gita/cmds.yml` (多半是`~/.config/gita/cmds.yml`)。 +如果存在命名冲突,它们会覆盖掉默认的指令。 + +默认代理子指令的定义可见 +[cmds.yml](https://github.com/nosarthur/gita/blob/master/gita/cmds.yml)。 +举个栗子,`gita stat `的定义是 + +```yaml +stat: + cmd: diff --stat + help: show edit statistics +``` + +它会执行`git diff --stat`。 + +如果被代理的指令是一个单词,`cmd`也可以省略。比如`push`。 +如果要取消异步执行,把`disable_async`设成`true`。比如`difftool`。 + +如果你想让定制的命令跟`gita fetch`等命令一样,可以作用于所有的库, +就把`allow_all`设成`true`。 +举个栗子,`gita comaster [repo-names(s)]`会生成一个新的定制命令,对于这个命令,库名是可选输入。comaster的解释如下: + +```yaml +comaster: + cmd: checkout master + allow_all: true + help: checkout the master branch +``` +另一个自定义功能是针对`gita ll`展示的信息项。 +`gita info`可以展示所有用到的和没用到的信息项,并且可以通过修改`$XDG_CONFIG_HOME/gita/info.yml`支持自定义。举个栗子,默认的信息项显示配置相当于是: + +```yaml +- branch +- commit_msg +``` +为了创建自己的信息项,命名一个目录为`extra_info_items`。 +在`$XDG_CONFIG_HOME/gita/extra_repo_info.py`中,要把信息项的名字作为字符串映射到方法中,该方法将库的路径作为输入参数。举个栗子: + +```python +def get_delim(path: str) -> str: + return '|' + +extra_info_items = {'delim': get_delim} +``` +如果没有遇到问题,你会在`gita info`的输出内容中的`unused`小节中看到这些额外信息项。 + +## 超人模式 + +超人模式可以代理执行任何git命令/别名。它的格式是 + +``` +gita super [repo-name(s) or group-name(s)] +``` + +其中库名或组群名是可有可无的。举几个例子 + +- `gita super checkout master`会把所有库都弄到主库杈上 +- `gita super frontend-repo backend-repo commit -am 'implement a new feature'` + 会对`frontend-repo`和`backend-repo`运行`git commit -am 'implement a new feature'` + +## 先决条件 + +因为用了[f-string](https://www.python.org/dev/peps/pep-0498/) +和[asyncio module](https://docs.python.org/3.6/library/asyncio.html),系统必须要用Python 3.6或以上。 + +暗地里老夫用`subprocess`来代理执行git指令。所以git的版本有可能会影响结果。 +经测试,`1.8.3.1`, `2.17.2`, 和`2.20.1`的结果是一致的。 + +## 安装指南 + +正常人类按装: + +``` +pip3 install -U gita +``` + +神奇码农安装:先下载源码,然后 + +``` +pip3 install -e +``` + +装完之后在命令行下执行`gita`可能还不行。那就把下面这个昵称放到`.bashrc`里。 +``` +alias gita="python3 -m gita" +``` + +Windows用户可能需要额外的设置来支持彩色的命令行, 见[这个帖子](https://stackoverflow.com/questions/51680709/colored-text-output-in-powershell-console-using-ansi-vt100-codes)。 + +## 自动补全 + +下载 +[.gita-completion.bash](https://github.com/nosarthur/gita/blob/master/.gita-completion.bash) +并在`.bashrc`里点它。 + +## 有所作为 + +要想有所作为,你可以 + +- 报告/治理虫子 +- 建议/实现功能 +- 加星/推荐本作 + +在本地跑单元测试可以直接用`pytest`。更多的细节可见 +[design.md](https://github.com/nosarthur/gita/blob/master/doc/design.md)。 + +如果你愿意资助我,请访问[patreon](https://www.patreon.com/nosarthur). + +## 他山之石 + +没用过,听说不错 + +- [myrepos](https://myrepos.branchable.com/) +- [repo](https://source.android.com/setup/develop/repo) diff --git a/doc/design.md b/doc/design.md new file mode 100644 index 0000000..6edf84e --- /dev/null +++ b/doc/design.md @@ -0,0 +1,81 @@ +# design + +This document explains the inner workings of this 200 LOC (excluding tests) project. + +The main idea of `gita` is to run git command/alias in subprocess or +asynchronous subprocess, which enables the following features + +- execute git commands/aliases from any working directory +- execute the same command for multiple repos in batch mode + +In addition, the `gita ll` command runs various `git` commands to collect +information for each repo, and displays the result of all repos side by side. + +## user interface + +There are three types of `gita` sub-commands + +- **bookkeeping**: add/remove repos from `gita`, display repo information +- **delegating**: delegate pre-configured `git` commands or aliases +- **`super`**: delegate arbitrary `git` commands or aliases + +And there are only two `gita` options, i.e., the `-h` for help and `-v` for version. + +The bookkeeping and delegating sub-commands all share the formats + +```shell +gita +gita [repo-name(s)] +``` + +The exceptions are `add`, `ll`, and `super` + +```shell +gita ll +gita add +gita super [repo-name(s)] +``` + +The argument choices are determined by two utility functions + +- ``: `utils.get_repos() -> Dict[str, str]` +- `[repo-name(s)]`: `utils.get_choices() -> List[Union[str, None]]` which allows null input + +## sub-command actions + +The actions of the `gita` sub-commands are defined +in [`__main__.py`](https://github.com/nosarthur/gita/gita/__main__.py). + +All delegating sub-commands call + +```python +f_git_cmd(args: argparse.Namespace) +``` + +to run either `subprocess` or `asyncio` APIs. +`subprocess` is used if there is only one repo input or the sub-command is +not allowed to run asynchronously. Otherwise `asyncio` is used for efficiency. + +The bookkeeping and `super` sub-commands have their own action functions + +```python +f_(args: argparse.Namespace) +``` + +Not surprisingly, the `f_super` function calls `f_git_cmd` in the end. + +## repo status information + +Utility functions to extract repo status information are defined in [utils.py](https://github.com/nosarthur/gita/gita/utils.py). +For example, + +| information | API | note | +| ------------------------------------------------------------------------------ | ------------------------------------------- | --------------------------------------- | +| repo name and path | `get_repos() -> Dict[str, str]` | parse `$XDG_CONFIG_HOME/gita/repo_path` | +| branch name | `get_head(path: str) -> str` | parse `.git/HEAD` | +| commit message | `get_commit_msg() -> str` | run `subprocess` | +| loca/remote relation | `_get_repo_status(path: str) -> Tuple[str]` | run `subprocess` | +| edit status, i.e., unstaged change `*`, staged change `+`, untracked files `_` | `_get_repo_status(path: str) -> Tuple[str]` | run `subprocess` | + +I notice that parsing file is faster than running `subprocess`. +One future improvement could be replacing the `subprocess` calls. diff --git a/doc/screenshot.png b/doc/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d5941d7dcc2cb955018aebd3b7b6b15f44861d0b GIT binary patch literal 225737 zcmc$_Wmr{R_b)76(kUt3Dbld%mM%#NkuGTjq@>xTfOJWhbayD--L>i3G#lP^pX)u> z`@f&ZbH2VG;et8WT64@X#xF*=nu;7IIw|^#7cVds z;>GJ13epl;vIj@x8xK8ki49 zc9mwGH|r>b!`YX9l`AUb>&a-)$wajA$0ABVjZy5qm-a-75wO0dcD+CpSNmcD@?#oK z_c;;l@HuJw{Cvayi~F|%Z?;QO59W_tC57 zJ+$Wk_3r=QT0u0Oxog=~=d%B|?Vxxh?h~p7T9VYsXz+ZY2$W-xkS<_Z7;fy4_L=AM znWrJ_t*=GLT#2^X5hWOfFZ41lW5DU<@=(9Y8dfp}N3!ttN=cI9U`s`G8^247Xq9lP z?;uwb^NA5adbNJiTE|2xxsC1deD2BOr9(zrxQG5m@vF zm7I=pvxok50`uzx^|0obP54=IwnIj|(?+>3^l;%>VPxKVdp#NN&f2DUpRcd>Wb(ep zU_C;E+JZ<=4w|N_JrAU-k5S}QHY}YNvhQEnlU-d8({k?07+sPVL6Ql`kjnK}MEk#CQUnx1s>eg=rSigql`CFHW2+=1 zsT2~r8wj)g6moT+?KC|ld6J0kq~zmFWxO`~rGLI~R~odqm8=at#5CUxu0FdUErQIo zRL-L!w8NGyiD1Zen}5AMkau5YK*spWot$v5a?J;5sjV4aG-);VYy}ufgoqfPHLiSB zM#e+lUyG@Cnbyku@ZIR2sK3sLWOX#)b6=W{TfcP@GP2r-NPF2M zRIIVe*e6U>3d|ZnZLLqGjonEtx1%J??08*CF@@NP;u@bKZ5zgyXDKxb#y~#q_?tAe zh(Z3hR}YfYVUaPN%i&GAU&XcbNYWkng_JE5XZhAQGkl61`L0c6H|1SDNi27xd*%}@ zq)DOUMOsz!c2;)w11k|WhRkf=`W&!@Dmw1|)Tk9Fav9j)7OwfCw&_RjI*c{*7s%t!>y|+$D$%vW0)q}X{Z(Cd9x9 zKRUniAEJacm!JE3_`I%~M7NC?1T*4p#f=3l=vdNQ{aVK8zQ}Yu&)+fc?(CV_sJP!q zHAAF=75)T&xSnmNExMu|y*ioKg+8ox+`VXe#XR5q1&)9xb-QVH=S~hb`K)Tx5gqi2 z^9J(mTKKKUOFp)A`VvcT(TCngi}*rH`=!OzaO{|LX>Ie*ok82I_pkxEhx4N!1@bY` zM6H8XCUji!+WhtF<*=+Sn*<6L zK6SQRQ4%-^`cHatQ(f@ox6^S-Y)bjY^XI$_A)N7im>Q${V@A#{JX1s)m%+NDb9huF zseLzbk`w*ypv^k`+|%#MjQSA`%qlTgbyQ99U6$=zgxM? zyDHEr?p@1?@T(m)@po|p_Y@|w1}C$=YJ2^t2qY@&%~sG~P6stfTzmp7iI8PdLts7?A5yjM)I2^u z8S!h;+f~0zjafS^@}-=+4GmNulVhbl)VGlHdZDrs;?Y+0^3I&+!x2Q<*{vMs&Wxrz zE-e+kT#+8J_|HAVqs>j1UmFZK(KRZ8Z^T)8$PGi7rBeaTKZ#P<-K}_8==!9?&ofvX zBc<9}GpyLg$_&}05ibbrc>r*w!2;c5U(|9QliHGr8ehH^Dm6pnBOVy+##EVeScE`mL zaEjpl-nv+k0(&?JWr*RXn$Myemyd)Lm5R>!rcl;H9G zV9@lq4i5bh50(Jm@9NME$SB#ehZRzJ)ytB0H}A=rEgq)P!EtI$fM;txOjcudm52Kh zo!@VckW`OtY)F7jK-0jFz>J=4`Z= zfFcae>X~Wj%Q3$BRz?x&C-p5}*zCU>hX85@95twc=qJ)ajId#gYSSCyy^zN7r9rY- z5f?4R5EI-XT_`PFWcT@Xx(H{hf2(XxsmVeWx=kHj80@jfx5(BSQ%D;~#gdWChh_rZzj9^xhilp8aL}ue z)pp-?5*wfM6dpeOwB%9zTolZ^k(E$2^)*QHf=A{O8=~mu^V0^WQ|Yij2@6^R^Le#^ ziIYcI@la$!$XxYX zYaIkNHqDwr7!3DUVm!5c&ri0TVPGjj*dxUX3j21o=EeW4ZQTV`!e$Cffa9FC6F!HVV-_wk)vb}5u0iRwZQ|xY&yn^6+ z@UWH6s(?t7XN8r?oLw)c*y5?~aNe?q|NSt7dePV5?^(z5LH)DstA6ddYtcR*=bfR6 zYt>&4Q=`Mc5d>>@`24?1fd>%_A3Wo#2BEWZFzvI}PhPiE$MP%wsott-51}jS9DKf6 zd}HQMm-z_E$e?~hn)=O%(5Y{&RWpW%km0&Z1v?_ z?^oqCd3}KsuP)CKvU|;EGI7f9gB7_+{S*}}i%0%@@US9VS9@wYSg*Bu2kl(c>kc-w z6d==_GKl)+AvL<2Hd;E{|MB<%k}<1XsJ>NcvcRzD`h)#;qNRn>yH7J5Lz_=Wg6jLr z3=U+M5OkGLLY*{RB2Cd{2NV&%i_YH`E>^YbP6EnKg7!I7XK?jV(P>eQz09${^U)hK zC}wgc9nJoblNg{+sCl5_+_B4XfR~TLo91h+>PfK6$@D=1N73b~VVj&5CPWje+j~cE zH{N>*&d>L4ccv=&w%Ve2&Z8`+%XGleZeji{B!mA6Nn^tnEiEMahue8;+<0NVOCU&Z zjMWSL!4l{>SG#yE?v*d8kj@e>V|sv!yWRWVu=!2Z7vnYmeP-N6rE7oCe9-Rf^;gYw zZd3AlwzyV!jEJH0r?_@XH{%I#>t)f8D#x&D$AKYB<^G8Gn!R#a=>m)_<@bx^c-%x| zxKu`*90Q?#*E>s3oW{!$VO(vuVXaKeoTiQss~85-GarAARW5g?+Ipi4nY|K7RJ>qbl-H$)hgeT?@rx6G6C$o=__ z5akVx{}Nr{sGO$-pS)H6vrjalLTLdKgC>R0(w{y7k<5pU1F5>_RhZp-9_%*^QG`^d zqHef*81Ozl6&WCWj23iLkw3XqJLUP3yabu5cPPc{F%7S=oClRvI=h*@CKubkNNr=2 zE0|9>(pg`&|Lt49MtqF$Tl2eCh@%A`t$~(9@BJ0xvH<#<$@a8b{TSJqj~o-&}c z9=H+)^1&~cSI44mIjT=0Ylaa6oGYDiN?kHhbNm%}GE#$n9_u70cevWb%Bf$qYYN?T zX&JyBlRvz*_;~Z$n~*U3`Q|e?)afKjAi}LglyTwHQ3c&fF}=SY9uisDePsAby6kFr zdmQ-Dz`|`}l;{P>lnog4GFhD)5VA#~X*?CCb&!V!t-Ylv~-_qCY{Oc7W9TJ!Lv<0R<610vQmxX-v$^f!4?Kl-N`T z#Ez$eZeiqkJfbKr1 zW?i?>_&o1>P$3_U0W}K868+=#TXgOGKZO=r_9?+pAFekSKaymnviwkc>PYKL^r@(f z^VnE^JkQMgRCvXtlCo#%Xby1xUlzCq-;nvcTv3v%YX>V2rQyn+dQVUKbI)wWBC z0K2vtUmB^J(bFqKhrKGyeKLbNYIFZZhV~auGA{y4(ssz~vL{9K zm2T*ltW_-EOQ>(EOh+S-moN9-a$|A4vWULxZd|P3ZP43Q>up?|%Vvo1;V~|kYn`<6oxp`GKTgA;qM-hH841SDt}p&Lu1SWb+7STsoBOgGZN{n%RF4Nn z8^=V0{rPkoby#*B2nGxukcTOVGt|f_(Wv z?WW>~#mAA@okHa{!O775^;D$c{cwnggMZ5@YF6N1`84Er|GfEfNneTpgOqFYL*!+n zXN%RiFiCVS)w^9z^<#7YDnN+Og{XMX_LT+M?8?v)7YHBWR;+vwaD=#!Sa?6*(AFrf>{Y| zxim-=e{Y3FpnG)gRJ|NxD|X@3KBGUZ)HwczRKw*Fzs-HmCEcO@`KRgc+Ar150C?*j z+58oo`uKb5Fph+beU>-mB+WkHGrfbJ0NLjj#O_e)`wOqVYIEPrc%lC1u~DS=a)Of=7;Y(vmpGI%L!_>dBO79hPQEN zw`5qf0pT&Y<f+Ef$c;Z z;8Ol1HZBBtUQ!^sbQe4(`ZwDnm^DXWiN2fwckg7quhUaLwv(W~&T1w(;C-mgOGMYw zPLH7?RLxDswflQqC;@RHCwSU^xtuU=lW#^T9Fr+6p&%o^0WR6F(PBw~5loSk=dRVJ zbI&*1WqNixIM@zwiV3arbAB+?LTqocM@V#OVq!X*!oJQeXv@Ps&B22eZ8?Hk(5mA! zJg+M7_nZo<8dbH8SUyx)Pmm9%aOr&Us4F5627#tN8S;YgKY(&_MaIALuJj^xQ@!U5nJ1>-8?+7rJ#AOiHTVnWrdM*&W{(-Pe12iqG(=d z-0GXB;`>NU(pkYaLMW}*KnT_b>wU4mTs$GBBZwECN1u14e7dO=p{*zYAU5c+M@8+e z6W?Ee^#}MM>UE%)#C%st3;tNc5Y$W0;$D3^?WIl^DDnjHhkjKI#1qYq|CFs?fJYtL zW?viO$8v$^ZAlAoU1pTJr{BZQrwj}3e&bZkZ7$3xiO=}#OFXH(r(YF)3^5s%V!p>6 zbG!T$LGDA8MsZ3h6m!tO>%c9+kzlUxz{gY@*MH(9biRAiQ*@r-!%Z!u;c0K&=!;!2 z-$BE&iISjtL`fyYP%=P(@#Z3w&cU!_ZoKiM41u2`R}c4*uEC$ z;W?+RRx4`Z0T&bBFL#R|8wb*$Qi42WuX}#{^!2>#3hG;3C*en3Zu`#0-S?N$$H~7 z4C-k|reS{QA@FPd&aAHb(IjgI4>8%f?Fv6W&1vm_zR-W!XKdW?QgC16?TLA^!}@j| zytP5rNN7v5JJZ%S-(TXN>mCh}04D#^)A9;0YD^w?6HfFie|>#U*-y$0A~G$O5FDak z3HUivMb6ijz^ytVTjbN10SWO6?lXH@&d?MkDRP6%eNawxraR3VX#afZydBo!=J&R8 z`F%n(YUy(Ic& z)xQgT3z7d~`yk70iHE~_NH#IPh+H~@RW6HkpDB%u=TlVKeQ}WOg(&wN?{|iKfXOUB zX2?vqmtE48;Z~JGw&9{57vGKw01Ga+SsD=<{QD|TXL6?ehSu#D=`kB<$5*2flHwip zUYJbJWYLvVW_{)H=(X-YaB+Y35ZDJ4S}DP zEf81de-Y`|DGpb!SoCLH*tn()Z`PD0(&hKcV2l}FIMD~h{&S$UYe4EZpGZWLjB*vq zXne1MW-iCLY~=hK=vkLJN?%%=?po#tPNI2+47U)@6j?h23^9A9FJ@q+H>s0om@NNI zilTIchm!$yOJbj}ep2l!Yc-7hL>@Bj#kx9qV~kCN{`T>xTRWY#aVd1y3Mf%k0KZk` z_rykha+OKtH9sEIQoTYana(_>^O{U?0(>p8*{?Z7{FMbI;Y`l_lGK`km!oisKB5e< z)Ikyc4}X0{(tWJLCcD?|-Sv*MQcjtSb{&m$N^i=*!t@XM{CxHReS4hMFOxr#vlX7% zy%ZInn>VV`)HL1T`AVIotJG&cvee^S$FgwvfD3gI+x;rZ>1XQZ+g;*F#==?o&r`El z#yKlZ0@8VlNzcTOhDRjH&uGtXPG}ivkyJSiUeqZvN7tlfP5-K!3ikK?l)PrN_p!iy zYEy7ii*(Ij)k9R3*F})M6<(I*ufu0nIMi@Y6*| zxmrmgK-b@%`?MhNWq`ckzmKG_wS!zwcsN#=u@*VKo?^KazF4KxUAv{Q6*zpeyj@L}1w z32ZB3CMpUcs|XnB2$b1(A6C{~QHszYdTvMcRyE-dU^r?CF=jX<55Duda$qj%h9;)l z*%`Epzl79W>N;=QNMv=1ws=?LB%#<4I}nG9NpWA$Wn?7NifGch3OUDkmXBEUj|CBw zW?%ZK_{E$t5QT^ua#UYO+8#RJsZ^taMu+}%elPeele~wH?hM_$Qv3FH+n#CILuFM! znLHtU{)~$$@n%m!yAdSl>@NP0f3{=2H4tXTmMGa}%TPMwIC%9{Xs`b->F-Pr2UP*; z!zO=5mnsfIWI|Z=jGH>eI)wIm`}c1OO5XAOLkA|1_haWMPI!2mRc{F5OceSbj7- zzuQ0ba5`Jw2{;XI_;2n0f9cnh)_}k*IvEN^0Zk&BZ8CJ(*nexPanJWyY3n#`t3p!$ z#-;wQxv`mO#Gb-QC?gCNL(15_ndx3KsnB3?@!X^ZD?+j1@BLUx=avkBum%o2FYP)I z5uaQiWTivNUMCN|PKfhg^QEl@vxxAME}eHxBv@G=-r^0X6#gF!1TPZ-AsKt)960|Qda*{4w|@_i|34N2xGxJMe9DN$tkw2MZt{qyj^2T9h5i4;pl2EC z%bm8+PE0p{@J!eG@Bah~XM^|vFs7H4ix{9!9*F)qdo7`=QK0pjK}2NzdV~TvQ=_1h zEI_{p^9QW{^5P1Ioip^+P{9x_cwXV}_FE;CO9^Ze*d7)gi@vCYZqfgHQ#k%< zp+fO>_o4OLVoFDHkq5aSUnMGgZcMxthjU7DUOm?xPNDo5%MxutbB@E!1yi-&QKobF zbwS0&5$x>7t^4>n8pw#!dP-41$h~rRS|y7&fN3A zER3;{DLm@6Y^B8mb(_C%>Ngqwotf4*@JVz4IODU`BEsIP zX~b=d?($};Hw#$u5vh~b(-m!yz=6%{E;r?ClTjoFm8zF3SSx-0B$CdnlQ` zT>kU9+AVa=?@Dl@s<@m2m5*l!xMjcf@vZ9(0h|NeYlGTT~$~Pc}nE zuYGyNvar3sFve75QD}Z@Bhu{D$PTzaJ9cNfKm74Yw?Pu>v+n{tTz^OgoCvI!H!xfu zu77sV5dC9jEoYWa!SDUvM=&wW^u*o?Xhl$9Pb(X#kVkQ-4$rcA27lz0d1WHPDj2AdB z9AW7lx$BkH$5NHllD_S(BQ4Tm8Qj(Y>7*f05WOK+A&xi8mB{&Hk%ajU;Rh!_r62r# zkqVO*Wn(&z-lE(1xA!?(Eqy)ZQx(B=QtZKuNuwO-CWAYajmtdqBP;^tT94gX>)Xg^ zQqy3={Xof$0A&tQcAsUQYR-ctQ%!ivN)n<$gK{OU1h4E#jjYjjSkuQd0YWD|LMK7% z@+*o2j_#KQyMEm8smsy(hv3R*hD3bauQrLe-9gnJ(ed({~TshowaMim7pXbpnt7|M};H)-JJ`0Vj~c(eb_ zKS#{WM~#VKyjV-ER9lTTX;VlkH)84C-aoD=1j|UmdYnko@dLCe>zqPccI}xY1dc)! zofbk0O8`q9e?|AQdP^E?I|Em_glz!LyE~}Uw+hQrL<=!wh|t3Yh4#Qjj=#tEW@&1D z(9?tHrLe(0dpH`%<#BAWBuz0F}G|l~STTg7dt#u&sUfo((6(y_pyO zx}s*uM3fx=3PDsn2%v}T$A}K9DD)>fr^>5_h3b?NfqtYJEUD`mhZuZJ0_rd7`wwL3 z6P!TrTej^PHKr`(V#f<5eQV*;g!4#hps#Ld1a3*vwsJWBT1qw63h-0?pMKJSSSg$* z;s8fU)#6c+wOxOm&qt<;lCHUiiY=B{+D0an=F(SW7&w%lBn#DpCY7w^)3mUqqR=S8 zFYVnnm|A`?^wviGt_vIElFV^K>#E!^7AbL{@7~e6UMLXzi63{KfeJpB){7!sc<8EVv_SXy?eAT`YpWtJ8MNR>e<&7U~czlZKnT5E0gk1?ef@d?Vz%tb$a=@OD@h zbCI-L-2@K>TzZ;vp}Q=jtZxghp1c%FZSklrQ7!G(T(Dw_xe3z7drTx{gsSWG7LfJL zyCS#X2(54k9$C^aroFUciaMXdiA>FV5xE;Oajg#BvKhB{*+;9beJCXyiMmL=hQ89D&roLhbIfW&LV#%R%^%;U_>{nim>Q1&LBXXZCabG1x3iBE(q|y4MaN)S80kigZ~B5eKVpc& z@(s&jnp0jQIRIIl{jWb2J9B$(6}xSg22P?M3ArO%E1YjOC;{N^rGB}m;QZu7xNt#I zqrMiY)5_D0ZUcs~ab9VLNU+z_QcKIY!>?Nksw-S#ih$)>ttcf`S%BE9wW&M%o*&WK zn{`2>Gs6#9{R9`4E!*k-jR6Bt7{&pI2y_y&EcMMhk*$Ox+08)Ng0Hf90fxwlGqdKW zzauvXY?!XIb4>uJmCopoZwlrGiUm3?2=1iGC~C|*xjbB6FQ<85Ij=*J0I3RvTqj>5 zwC>W98YE0XiS3mx@S#S5+MhI9(UX*1$Oj4I=dNgN=zv;^*ol2>ZdSP_T0>~7wR}Q+ z>%m}7QGpQot~(~)KyBwoUGbl>?Ri%QP9kLQK05nKm!+mvN>Et`g-VMh!#jj3dqO9q z*wJ)YlJI%x*ST2LT?8?sceu|Q2c^ccNOmRdWLaHy6Qv3~y0_rT-RVU*QuP{mWzlD} zOAKG{#Si&hnDTtP5-i)={Z7L(A!iup^&#wgtG1yED)nSmlCgq>(#Nu_%4Ibhia@2^ zL>s1Qhm9`CFV;RU4)U*B98B5{jTzz#Nv_j`eK)jD07>4DPA7QzCwsC{`q^QV?ozzi z3GExjJJZHykiT>?ccfpJv+AGGPEA%K)G^+|gjR66Q_Hf`gm=h_HN=f>Wp*;<3y4A_cEcmOL2@^fs!(eNQdGyTjE12~%SLqe(0d|kmVO(JS6AIIbN zsKVVCFt9RPf|qt?oSGg>p8*AL2}Nw+XWwU>SCkCbO4J=T1?T`-M1G2FF1#uVZCcxE zGVNlspj#n^?As(0FnY~R2wB@5pGDq63QC#SD$gH`Qgnitw|-Syc(&gx97{;3vwMaer!BJTX7n|12T^(7=J00OZ>htU@JpLFVFOIc@UGlh`zAX*R z`=Pi_XL#NdgER;$+V~JW<{dnql4%lJwm&1eohRtd_iB8VoME>_OAwdRR#I9r zbX`8sVuN_0h%-FL&KNE^tFq8!;*QrsrGn5nxnAY%u)Tg4feW@PGMVcJ-$sZRY`hoO zXq4?9X+V^n5uUtJ*!2DtN}zc?ie2{WTVx?x&b+lCtEhhD0eYR^o4aU} zr$JlVtFw7dd57_Lovin9v|}^AUJ$#u;2`KDOH?X*Ikr*@`ku!-xaD}gw_aE5z4`9l z4hdVsEmIF+dggnHJ$m?X=JwLbC?;!iP1CJH7Gq_>l4vA{-OjKn!wxe&4F`&T&R9tW zGFDpWLo2NH{j?g@pH9?bD`B(WoaRU3^>Byt588-j@ISZIXC1V)`MA*X6jLPVt`M4K z7Qc(0R7&O2Q7{&6C(5vtK55mk!c@@{)@p41ghzheDR}z@xOz=G#YRPK#GwZU3QpI5 z*sa1 j4;SsbA+UmZD~O&{#tTxO`G(>% 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%0ANCzv3Y5OgJe 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�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/=!O_xVcRhK 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 Hk>CFUd`lka literal 0 HcmV?d00001 diff --git a/gita/__init__.py b/gita/__init__.py new file mode 100644 index 0000000..eeb79a3 --- /dev/null +++ b/gita/__init__.py @@ -0,0 +1,3 @@ +import pkg_resources + +__version__ = pkg_resources.get_distribution('gita').version diff --git a/gita/__main__.py b/gita/__main__.py new file mode 100644 index 0000000..ba0d270 --- /dev/null +++ b/gita/__main__.py @@ -0,0 +1,289 @@ +''' +Gita manages multiple git repos. It has two functionalities + + 1. display the status of multiple repos side by side + 2. delegate git commands/aliases from any working directory + +Examples: + gita ls + gita fetch + gita stat myrepo2 + gita super myrepo1 commit -am 'add some cool feature' + +For bash auto completion, download and source +https://github.com/nosarthur/gita/blob/master/.gita-completion.bash +''' + +import os +import argparse +import subprocess +import pkg_resources + +from . import utils, info + + +def f_add(args: argparse.Namespace): + repos = utils.get_repos() + utils.add_repos(repos, args.paths) + + +def f_rename(args: argparse.Namespace): + repos = utils.get_repos() + utils.rename_repo(repos, args.repo[0], args.new_name) + + +def f_info(_): + all_items, to_display = info.get_info_items() + print('In use:', ','.join(to_display)) + unused = set(all_items) - set(to_display) + if unused: + print('Unused:', ' '.join(unused)) + + +def f_ll(args: argparse.Namespace): + """ + Display details of all repos + """ + repos = utils.get_repos() + if args.group: # only display repos in this group + group_repos = utils.get_groups()[args.group] + repos = {k: repos[k] for k in group_repos if k in repos} + for line in utils.describe(repos): + print(line) + + +def f_ls(args: argparse.Namespace): + repos = utils.get_repos() + if args.repo: # one repo, show its path + print(repos[args.repo]) + else: # show names of all repos + print(' '.join(repos)) + + +def f_group(args: argparse.Namespace): + repos = utils.get_repos() + groups = utils.get_groups() + if args.to_group: + gname = input('group name? ') + if gname in groups: + gname_repos = set(groups[gname]) + gname_repos.update(args.to_group) + groups[gname] = sorted(gname_repos) + utils.write_to_groups_file(groups, 'w') + else: + utils.write_to_groups_file({gname: sorted(args.to_group)}, 'a+') + else: + for group, repos in groups.items(): + print(f"{group}: {', '.join(repos)}") + + +def f_ungroup(args: argparse.Namespace): + groups = utils.get_groups() + to_ungroup = set(args.to_ungroup) + to_del = [] + for name, repos in groups.items(): + remaining = set(repos) - to_ungroup + if remaining: + groups[name] = list(sorted(remaining)) + else: + to_del.append(name) + for name in to_del: + del groups[name] + utils.write_to_groups_file(groups, 'w') + + +def f_rm(args: argparse.Namespace): + """ + Unregister repo(s) from gita + """ + path_file = utils.get_config_fname('repo_path') + if os.path.isfile(path_file): + repos = utils.get_repos() + for repo in args.repo: + del repos[repo] + utils.write_to_repo_file(repos, 'w') + + +def f_git_cmd(args: argparse.Namespace): + """ + Delegate git command/alias defined in `args.cmd`. Asynchronous execution is + disabled for commands in the `args.async_blacklist`. + """ + repos = utils.get_repos() + groups = utils.get_groups() + if args.repo: # with user specified repo(s) or group(s) + chosen = {} + for k in args.repo: + if k in repos: + chosen[k] = repos[k] + if k in groups: + for r in groups[k]: + chosen[r] = repos[r] + repos = chosen + cmds = ['git'] + args.cmd + if len(repos) == 1 or cmds[1] in args.async_blacklist: + for path in repos.values(): + print(path) + subprocess.run(cmds, cwd=path) + else: # run concurrent subprocesses + # Async execution cannot deal with multiple repos' user name/password. + # Here we shut off any user input in the async execution, and re-run + # the failed ones synchronously. + errors = utils.exec_async_tasks( + utils.run_async(repo_name, path, cmds) for repo_name, path in repos.items()) + for path in errors: + if path: + print(path) + subprocess.run(cmds, cwd=path) + + +def f_super(args): + """ + Delegate git command/alias defined in `args.man`, which may or may not + contain repo names. + """ + names = [] + repos = utils.get_repos() + groups = utils.get_groups() + for i, word in enumerate(args.man): + if word in repos or word in groups: + names.append(word) + else: + break + args.cmd = args.man[i:] + args.repo = names + f_git_cmd(args) + + +def main(argv=None): + p = argparse.ArgumentParser(prog='gita', + formatter_class=argparse.RawTextHelpFormatter, + description=__doc__) + subparsers = p.add_subparsers(title='sub-commands', + help='additional help with sub-command -h') + + version = pkg_resources.require('gita')[0].version + p.add_argument('-v', + '--version', + action='version', + version=f'%(prog)s {version}') + + # bookkeeping sub-commands + p_add = subparsers.add_parser('add', help='add repo(s)') + p_add.add_argument('paths', nargs='+', help="add repo(s)") + p_add.set_defaults(func=f_add) + + p_rm = subparsers.add_parser('rm', help='remove repo(s)') + p_rm.add_argument('repo', + nargs='+', + choices=utils.get_repos(), + help="remove the chosen repo(s)") + p_rm.set_defaults(func=f_rm) + + p_rename = subparsers.add_parser('rename', help='rename a repo') + p_rename.add_argument( + 'repo', + nargs=1, + choices=utils.get_repos(), + help="rename the chosen repo") + p_rename.add_argument( + 'new_name', + help="new name") + p_rename.set_defaults(func=f_rename) + + p_info = subparsers.add_parser('info', help='show information items of the ll sub-command') + p_info.set_defaults(func=f_info) + + ll_doc = f''' status symbols: + +: staged changes + *: unstaged changes + _: untracked files/folders + + branch colors: + {info.Color.white}white{info.Color.end}: local has no remote + {info.Color.green}green{info.Color.end}: local is the same as remote + {info.Color.red}red{info.Color.end}: local has diverged from remote + {info.Color.purple}purple{info.Color.end}: local is ahead of remote (good for push) + {info.Color.yellow}yellow{info.Color.end}: local is behind remote (good for merge)''' + p_ll = subparsers.add_parser('ll', + help='display summary of all repos', + formatter_class=argparse.RawTextHelpFormatter, + description=ll_doc) + p_ll.add_argument('group', + nargs='?', + choices=utils.get_groups(), + help="show repos in the chosen group") + p_ll.set_defaults(func=f_ll) + + p_ls = subparsers.add_parser( + 'ls', help='display names of all repos, or path of a chosen repo') + p_ls.add_argument('repo', + nargs='?', + choices=utils.get_repos(), + help="show path of the chosen repo") + p_ls.set_defaults(func=f_ls) + + p_group = subparsers.add_parser( + 'group', help='group repos or display names of all groups if no repo is provided') + p_group.add_argument('to_group', + nargs='*', + choices=utils.get_choices(), + help="repo(s) to be grouped") + p_group.set_defaults(func=f_group) + + p_ungroup = subparsers.add_parser( + 'ungroup', help='remove group information for repos', + description="Remove group information on repos") + p_ungroup.add_argument('to_ungroup', + nargs='+', + choices=utils.get_repos(), + help="repo(s) to be ungrouped") + p_ungroup.set_defaults(func=f_ungroup) + + # superman mode + p_super = subparsers.add_parser( + 'super', + help='superman mode: delegate any git command/alias in specified or ' + 'all repo(s).\n' + 'Examples:\n \t gita super myrepo1 commit -am "fix a bug"\n' + '\t gita super repo1 repo2 repo3 checkout new-feature') + p_super.add_argument( + 'man', + nargs=argparse.REMAINDER, + help="execute arbitrary git command/alias for specified or all repos " + "Example: gita super myrepo1 diff --name-only --staged " + "Another: gita super checkout master ") + p_super.set_defaults(func=f_super) + + # sub-commands that fit boilerplate + cmds = utils.get_cmds_from_files() + for name, data in cmds.items(): + help = data.get('help') + cmd = data.get('cmd') or name + if data.get('allow_all'): + choices = utils.get_choices() + nargs = '*' + help += ' for all repos or' + else: + choices = utils.get_repos().keys() | utils.get_groups().keys() + nargs = '+' + help += ' for the chosen repo(s) or group(s)' + sp = subparsers.add_parser(name, help=help) + sp.add_argument('repo', nargs=nargs, choices=choices, help=help) + sp.set_defaults(func=f_git_cmd, cmd=cmd.split()) + + args = p.parse_args(argv) + + args.async_blacklist = { + name + for name, data in cmds.items() if data.get('disable_async') + } + + if 'func' in args: + args.func(args) + else: + p.print_help() # pragma: no cover + + +if __name__ == '__main__': + main() # pragma: no cover diff --git a/gita/cmds.yml b/gita/cmds.yml new file mode 100644 index 0000000..8db932e --- /dev/null +++ b/gita/cmds.yml @@ -0,0 +1,65 @@ +br: + cmd: branch -vv + help: show local branches +clean: + cmd: clean -dfx + help: remove all untracked files/folders +diff: + help: show differences +difftool: + disable_async: true + help: show differences using a tool +fetch: + allow_all: true + help: fetch remote update +last: + cmd: log -1 HEAD + help: show log information of HEAD +log: + disable_async: true + help: show logs +merge: + cmd: merge @{u} + help: merge remote updates +mergetool: + disable_async: true + help: merge updates with a tool +patch: + cmd: format-patch HEAD~ + help: make a patch +pull: + allow_all: true + help: pull remote updates +push: + help: push the local updates +rebase: + help: rebase from master +reflog: + help: show ref logs +remote: + cmd: remote -v + help: show remote settings +reset: + help: reset repo(s) +shortlog: + disable_async: true + help: show short log +show: + disable_async: true + help: show detailed commit information +show-branch: + disable_async: true + help: show detailed branch information +stash: + help: store uncommited changes +stat: + cmd: diff --stat + help: show edit statistics +st: + help: show status +tag: + cmd: tag -n + help: show tags +whatchanged: + disable_async: true + help: show detailed log diff --git a/gita/common.py b/gita/common.py new file mode 100644 index 0000000..61df049 --- /dev/null +++ b/gita/common.py @@ -0,0 +1,7 @@ +import os + +def get_config_dir() -> str: + parent = os.environ.get('XDG_CONFIG_HOME') or os.path.join( + os.path.expanduser('~'), '.config') + root = os.path.join(parent,"gita") + return root diff --git a/gita/info.py b/gita/info.py new file mode 100644 index 0000000..18d20fd --- /dev/null +++ b/gita/info.py @@ -0,0 +1,146 @@ +import os +import sys +import yaml +import subprocess +from typing import Tuple, List, Callable, Dict +from . import common + + +class Color: + """ + Terminal color + """ + red = '\x1b[31m' # local diverges from remote + green = '\x1b[32m' # local == remote + yellow = '\x1b[33m' # local is behind + blue = '\x1b[34m' + purple = '\x1b[35m' # local is ahead + cyan = '\x1b[36m' + white = '\x1b[37m' # no remote branch + end = '\x1b[0m' + + +def get_info_funcs() -> List[Callable[[str], str]]: + """ + Return the functions to generate `gita ll` information. All these functions + take the repo path as input and return the corresponding information as str. + See `get_path`, `get_repo_status`, `get_common_commit` for examples. + """ + info_items, to_display = get_info_items() + return [info_items[k] for k in to_display] + + +def get_info_items() -> Tuple[Dict[str, Callable[[str], str]], List[str]]: + """ + Return the available information items for display in the `gita ll` + sub-command, and the ones to be displayed. + It loads custom information functions and configuration if they exist. + """ + # default settings + info_items = {'branch': get_repo_status, + 'commit_msg': get_commit_msg, + 'path': get_path, } + display_items = ['branch', 'commit_msg'] + + # custom settings + root = common.get_config_dir() + src_fname = os.path.join(root, 'extra_repo_info.py') + yml_fname = os.path.join(root, 'info.yml') + if os.path.isfile(src_fname): + sys.path.append(root) + from extra_repo_info import extra_info_items + info_items.update(extra_info_items) + if os.path.isfile(yml_fname): + with open(yml_fname, 'r') as stream: + display_items = yaml.load(stream, Loader=yaml.FullLoader) + display_items = [x for x in display_items if x in info_items] + return info_items, display_items + + +def get_path(path): + return Color.cyan + path + Color.end + + +def get_head(path: str) -> str: + result = subprocess.run('git rev-parse --abbrev-ref HEAD'.split(), + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + universal_newlines=True, + cwd=path) + return result.stdout.strip() + + +def run_quiet_diff(args: List[str]) -> bool: + """ + Return the return code of git diff `args` in quiet mode + """ + result = subprocess.run( + ['git', 'diff', '--quiet'] + args, + stderr=subprocess.DEVNULL, + ) + return result.returncode + + +def get_common_commit() -> str: + """ + Return the hash of the common commit of the local and upstream branches. + """ + result = subprocess.run('git merge-base @{0} @{u}'.split(), + stdout=subprocess.PIPE, + universal_newlines=True) + return result.stdout.strip() + + +def has_untracked() -> bool: + """ + Return True if untracked file/folder exists + """ + result = subprocess.run('git ls-files -zo --exclude-standard'.split(), + stdout=subprocess.PIPE) + return bool(result.stdout) + + +def get_commit_msg(path: str) -> str: + """ + Return the last commit message. + """ + # `git show-branch --no-name HEAD` is faster than `git show -s --format=%s` + result = subprocess.run('git show-branch --no-name HEAD'.split(), + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + universal_newlines=True, + cwd=path) + return result.stdout.strip() + + +def get_repo_status(path: str) -> str: + head = get_head(path) + dirty, staged, untracked, color = _get_repo_status(path) + return f'{color}{head+" "+dirty+staged+untracked:<10}{Color.end}' + + +def _get_repo_status(path: str) -> Tuple[str]: + """ + Return the status of one repo + """ + os.chdir(path) + dirty = '*' if run_quiet_diff([]) else '' + staged = '+' if run_quiet_diff(['--cached']) else '' + untracked = '_' if has_untracked() else '' + + diff_returncode = run_quiet_diff(['@{u}', '@{0}']) + has_no_remote = diff_returncode == 128 + has_no_diff = diff_returncode == 0 + if has_no_remote: + color = Color.white + elif has_no_diff: + color = Color.green + else: + common_commit = get_common_commit() + outdated = run_quiet_diff(['@{u}', common_commit]) + if outdated: + diverged = run_quiet_diff(['@{0}', common_commit]) + color = Color.red if diverged else Color.yellow + else: # local is ahead of remote + color = Color.purple + return dirty, staged, untracked, color diff --git a/gita/utils.py b/gita/utils.py new file mode 100644 index 0000000..d14484a --- /dev/null +++ b/gita/utils.py @@ -0,0 +1,225 @@ +import os +import yaml +import asyncio +import platform +from functools import lru_cache +from typing import List, Dict, Coroutine, Union + +from . import info +from . import common + + +def get_config_fname(fname: str) -> str: + """ + Return the file name that stores the repo locations. + """ + root = common.get_config_dir() + return os.path.join(root, fname) + + +@lru_cache() +def get_repos() -> Dict[str, str]: + """ + Return a `dict` of repo name to repo absolute path + """ + path_file = get_config_fname('repo_path') + repos = {} + # Each line is a repo path and repo name separated by , + if os.path.isfile(path_file) and os.stat(path_file).st_size > 0: + with open(path_file) as f: + for line in f: + line = line.rstrip() + if not line: # blank line + continue + path, name = line.split(',') + if not is_git(path): + continue + if name not in repos: + repos[name] = path + else: # repo name collision for different paths: include parent path name + par_name = os.path.basename(os.path.dirname(path)) + repos[os.path.join(par_name, name)] = path + return repos + + +@lru_cache() +def get_groups() -> Dict[str, List[str]]: + """ + Return a `dict` of group name to repo names. + """ + fname = get_config_fname('groups.yml') + groups = {} + # Each line is a repo path and repo name separated by , + if os.path.isfile(fname) and os.stat(fname).st_size > 0: + with open(fname, 'r') as f: + groups = yaml.load(f, Loader=yaml.FullLoader) + return groups + + + +def get_choices() -> List[Union[str, None]]: + """ + Return all repo names, group names, and an additional empty list. The empty + list is added as a workaround of + argparse's problem with coexisting nargs='*' and choices. + See https://utcc.utoronto.ca/~cks/space/blog/python/ArgparseNargsChoicesLimitation + and + https://bugs.python.org/issue27227 + """ + choices = list(get_repos()) + choices.extend(get_groups()) + choices.append([]) + return choices + + +def is_git(path: str) -> bool: + """ + Return True if the path is a git repo. + """ + # An alternative is to call `git rev-parse --is-inside-work-tree` + # I don't see why that one is better yet. + # For a regular git repo, .git is a folder, for a worktree repo, .git is a file. + # However, git submodule repo also has .git as a file. + # A more reliable way to differentiable regular and worktree repos is to + # compare the result of `git rev-parse --git-dir` and + # `git rev-parse --git-common-dir` + loc = os.path.join(path, '.git') + # TODO: we can display the worktree repos in a different font. + return os.path.exists(loc) + + +def rename_repo(repos: Dict[str, str], repo: str, new_name: str): + """ + Write new repo name to file + """ + path = repos[repo] + del repos[repo] + repos[new_name] = path + write_to_repo_file(repos, 'w') + + +def write_to_repo_file(repos: Dict[str, str], mode: str): + """ + """ + data = ''.join(f'{path},{name}\n' for name, path in repos.items()) + fname = get_config_fname('repo_path') + os.makedirs(os.path.dirname(fname), exist_ok=True) + with open(fname, mode) as f: + f.write(data) + + +def write_to_groups_file(groups: Dict[str, List[str]], mode: str): + """ + + """ + fname = get_config_fname('groups.yml') + os.makedirs(os.path.dirname(fname), exist_ok=True) + with open(fname, mode) as f: + yaml.dump(groups, f, default_flow_style=None) + + +def add_repos(repos: Dict[str, str], new_paths: List[str]): + """ + Write new repo paths to file + """ + existing_paths = set(repos.values()) + new_paths = set(os.path.abspath(p) for p in new_paths if is_git(p)) + new_paths = new_paths - existing_paths + if new_paths: + print(f"Found {len(new_paths)} new repo(s).") + new_repos = { + os.path.basename(os.path.normpath(path)): path + for path in new_paths} + write_to_repo_file(new_repos, 'a+') + else: + print('No new repos found!') + + +async def run_async(repo_name: str, path: str, cmds: List[str]) -> Union[None, str]: + """ + Run `cmds` asynchronously in `path` directory. Return the `path` if + execution fails. + """ + process = await asyncio.create_subprocess_exec( + *cmds, + stdin=asyncio.subprocess.DEVNULL, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + cwd=path) + stdout, stderr = await process.communicate() + for pipe in (stdout, stderr): + if pipe: + print(format_output(pipe.decode(), f'{repo_name}: ')) + # The existence of stderr is not good indicator since git sometimes write + # to stderr even if the execution is successful, e.g. git fetch + if process.returncode != 0: + return path + + +def format_output(s: str, prefix: str): + """ + Prepends every line in given string with the given prefix. + """ + return ''.join([f'{prefix}{line}' for line in s.splitlines(keepends=True)]) + + +def exec_async_tasks(tasks: List[Coroutine]) -> List[Union[None, str]]: + """ + Execute tasks asynchronously + """ + # TODO: asyncio API is nicer in python 3.7 + if platform.system() == 'Windows': + loop = asyncio.ProactorEventLoop() + asyncio.set_event_loop(loop) + else: + loop = asyncio.get_event_loop() + + try: + errors = loop.run_until_complete(asyncio.gather(*tasks)) + finally: + loop.close() + return errors + + +def describe(repos: Dict[str, str]) -> str: + """ + Return the status of all repos + """ + if repos: + name_width = max(len(n) for n in repos) + 1 + funcs = info.get_info_funcs() + for name in sorted(repos): + path = repos[name] + display_items = ' '.join(f(path) for f in funcs) + yield f'{name:<{name_width}}{display_items}' + + +def get_cmds_from_files() -> Dict[str, Dict[str, str]]: + """ + Parse delegated git commands from default config file + and custom config file. + + Example return + { + 'branch': {'help': 'show local branches'}, + 'clean': {'cmd': 'clean -dfx', + 'help': 'remove all untracked files/folders'}, + } + """ + # default config file + fname = os.path.join(os.path.dirname(__file__), "cmds.yml") + with open(fname, 'r') as stream: + cmds = yaml.load(stream, Loader=yaml.FullLoader) + + # custom config file + root = common.get_config_dir() + fname = os.path.join(root, 'cmds.yml') + custom_cmds = {} + if os.path.isfile(fname) and os.path.getsize(fname): + with open(fname, 'r') as stream: + custom_cmds = yaml.load(stream, Loader=yaml.FullLoader) + + # custom commands shadow default ones + cmds.update(custom_cmds) + return cmds diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3e9e127 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +pytest>=4.4.0 +pytest-cov>=2.6.1 +pytest-xdist>=1.26.0 +setuptools>=40.6.3 +twine>=1.12.1 +pyyaml>=5.1 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..e6e3984 --- /dev/null +++ b/setup.py @@ -0,0 +1,38 @@ +from setuptools import setup + +long_description = None +with open('README.md', encoding='utf-8') as f: + long_description = f.read() + +setup( + name='gita', + packages=['gita'], + version='0.10.9', + license='MIT', + description='Manage multiple git repos', + long_description=long_description, + long_description_content_type='text/markdown', + url='https://github.com/nosarthur/gita', + platforms=['linux', 'osx', 'win32'], + keywords=['git', 'manage multiple repositories'], + author='Dong Zhou', + author_email='zhou.dong@gmail.com', + entry_points={'console_scripts': ['gita = gita.__main__:main']}, + install_requires=['pyyaml>=5.1'], + python_requires='~=3.6', + classifiers=[ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: POSIX", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Topic :: Software Development :: Version Control :: Git", + "Topic :: Terminals", + "Topic :: Utilities", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + ], + include_package_data=True, +) diff --git a/tests/clash_path_file b/tests/clash_path_file new file mode 100644 index 0000000..4abbfca --- /dev/null +++ b/tests/clash_path_file @@ -0,0 +1,3 @@ +/a/bcd/repo1,repo1 +/e/fgh/repo2,repo2 +/root/x/repo1,repo1 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..b3e59ed --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,26 @@ +from pathlib import Path +from unittest.mock import MagicMock + +TEST_DIR = Path(__file__).parents[0] + + +def fullpath(fname: str): + return str(TEST_DIR / fname) + + +PATH_FNAME = fullpath('mock_path_file') +PATH_FNAME_EMPTY = fullpath('empty_path_file') +PATH_FNAME_CLASH = fullpath('clash_path_file') +GROUP_FNAME = fullpath('mock_group_file') + +def async_mock(): + """ + Mock an async function. The calling arguments are saved in a MagicMock. + """ + m = MagicMock() + + async def coro(*args, **kwargs): + return m(*args, **kwargs) + + coro.mock = m + return coro diff --git a/tests/empty_path_file b/tests/empty_path_file new file mode 100644 index 0000000..e69de29 diff --git a/tests/mock_group_file b/tests/mock_group_file new file mode 100644 index 0000000..32f0a64 --- /dev/null +++ b/tests/mock_group_file @@ -0,0 +1,2 @@ +xx: [a, b] +yy: [a, c, d] diff --git a/tests/mock_path_file b/tests/mock_path_file new file mode 100644 index 0000000..2a5f9f9 --- /dev/null +++ b/tests/mock_path_file @@ -0,0 +1,4 @@ +/a/bcd/repo1,repo1 +/a/b/c/repo3,xxx +/e/fgh/repo2,repo2 + diff --git a/tests/test_info.py b/tests/test_info.py new file mode 100644 index 0000000..025aedc --- /dev/null +++ b/tests/test_info.py @@ -0,0 +1,16 @@ +import subprocess +from unittest.mock import patch, MagicMock + +from gita import info + + +@patch('subprocess.run') +def test_run_quiet_diff(mock_run): + mock_return = MagicMock() + mock_run.return_value = mock_return + got = info.run_quiet_diff(['my', 'args']) + mock_run.assert_called_once_with( + ['git', 'diff', '--quiet', 'my', 'args'], + stderr=subprocess.DEVNULL, + ) + assert got == mock_return.returncode diff --git a/tests/test_main.py b/tests/test_main.py new file mode 100644 index 0000000..1946352 --- /dev/null +++ b/tests/test_main.py @@ -0,0 +1,167 @@ +import pytest +from unittest.mock import patch +import argparse +import shlex + +from gita import __main__ +from gita import utils +from conftest import ( + PATH_FNAME, PATH_FNAME_EMPTY, PATH_FNAME_CLASH, GROUP_FNAME, + async_mock +) + + +class TestLsLl: + @patch('gita.utils.get_config_fname') + def testLl(self, mock_path_fname, capfd, tmp_path): + """ functional test """ + # avoid modifying the local configuration + mock_path_fname.return_value = tmp_path / 'path_config.txt' + __main__.main(['add', '.']) + out, err = capfd.readouterr() + assert err == '' + assert 'Found 1 new repo(s).\n' == out + + # in production this is not needed + utils.get_repos.cache_clear() + + __main__.main(['ls']) + out, err = capfd.readouterr() + assert err == '' + assert 'gita\n' == out + + __main__.main(['ll']) + out, err = capfd.readouterr() + assert err == '' + assert 'gita' in out + + __main__.main(['ls', 'gita']) + out, err = capfd.readouterr() + assert err == '' + assert out.strip() == utils.get_repos()['gita'] + + def testLs(self, monkeypatch, capfd): + monkeypatch.setattr(utils, 'get_repos', + lambda: {'repo1': '/a/', 'repo2': '/b/'}) + monkeypatch.setattr(utils, 'describe', lambda x: x) + __main__.main(['ls']) + out, err = capfd.readouterr() + assert err == '' + assert out == "repo1 repo2\n" + __main__.main(['ls', 'repo1']) + out, err = capfd.readouterr() + assert err == '' + assert out == '/a/\n' + + @pytest.mark.parametrize('path_fname, expected', [ + (PATH_FNAME, + "repo1 cmaster dsu\x1b[0m msg\nrepo2 cmaster dsu\x1b[0m msg\nxxx cmaster dsu\x1b[0m msg\n"), + (PATH_FNAME_EMPTY, ""), + (PATH_FNAME_CLASH, + "repo1 cmaster dsu\x1b[0m msg\nrepo2 cmaster dsu\x1b[0m msg\nx/repo1 cmaster dsu\x1b[0m msg\n" + ), + ]) + @patch('gita.utils.is_git', return_value=True) + @patch('gita.info.get_head', return_value="master") + @patch('gita.info._get_repo_status', return_value=("d", "s", "u", "c")) + @patch('gita.info.get_commit_msg', return_value="msg") + @patch('gita.utils.get_config_fname') + def testWithPathFiles(self, mock_path_fname, _0, _1, _2, _3, path_fname, + expected, capfd): + mock_path_fname.return_value = path_fname + utils.get_repos.cache_clear() + __main__.main(['ll']) + out, err = capfd.readouterr() + print(out) + assert err == '' + assert out == expected + + +@patch('os.path.isfile', return_value=True) +@patch('gita.utils.get_config_fname', return_value='some path') +@patch('gita.utils.get_repos', return_value={'repo1': '/a/', 'repo2': '/b/'}) +@patch('gita.utils.write_to_repo_file') +def test_rm(mock_write, *_): + args = argparse.Namespace() + args.repo = ['repo1'] + __main__.f_rm(args) + mock_write.assert_called_once_with({'repo2': '/b/'}, 'w') + + +def test_not_add(): + # this won't write to disk because the repo is not valid + __main__.main(['add', '/home/some/repo/']) + + +@patch('gita.utils.get_repos', return_value={'repo2': '/d/efg'}) +@patch('subprocess.run') +def test_fetch(mock_run, *_): + __main__.main(['fetch']) + mock_run.assert_called_once_with(['git', 'fetch'], cwd='/d/efg') + + +@patch( + 'gita.utils.get_repos', return_value={ + 'repo1': '/a/bc', + 'repo2': '/d/efg' + }) +@patch('gita.utils.run_async', new=async_mock()) +@patch('subprocess.run') +def test_async_fetch(*_): + __main__.main(['fetch']) + mock_run = utils.run_async.mock + assert mock_run.call_count == 2 + cmds = ['git', 'fetch'] + # print(mock_run.call_args_list) + mock_run.assert_any_call('repo1', '/a/bc', cmds) + mock_run.assert_any_call('repo2', '/d/efg', cmds) + + +@pytest.mark.parametrize('input', [ + 'diff --name-only --staged', + "commit -am 'lala kaka'", +]) +@patch('gita.utils.get_repos', return_value={'repo7': 'path7'}) +@patch('subprocess.run') +def test_superman(mock_run, _, input): + mock_run.reset_mock() + args = ['super', 'repo7'] + shlex.split(input) + __main__.main(args) + expected_cmds = ['git'] + shlex.split(input) + mock_run.assert_called_once_with(expected_cmds, cwd='path7') + + +@pytest.mark.parametrize('input, expected', [ + ('a', {'xx': ['b'], 'yy': ['c', 'd']}), + ("c", {'xx': ['a', 'b'], 'yy': ['a', 'd']}), + ("a b", {'yy': ['c', 'd']}), +]) +@patch('gita.utils.get_repos', return_value={'a': '', 'b': '', 'c': '', 'd': ''}) +@patch('gita.utils.get_config_fname', return_value=GROUP_FNAME) +@patch('gita.utils.write_to_groups_file') +def test_ungroup(mock_write, _, __, input, expected): + utils.get_groups.cache_clear() + args = ['ungroup'] + shlex.split(input) + __main__.main(args) + mock_write.assert_called_once_with(expected, 'w') + + +@patch('gita.utils.is_git', return_value=True) +@patch('gita.utils.get_config_fname', return_value=PATH_FNAME) +@patch('gita.utils.rename_repo') +def test_rename(mock_rename, _, __): + utils.get_repos.cache_clear() + args = ['rename', 'repo1', 'abc'] + __main__.main(args) + mock_rename.assert_called_once_with( + {'repo1': '/a/bcd/repo1', 'repo2': '/e/fgh/repo2', + 'xxx': '/a/b/c/repo3'}, + 'repo1', 'abc') + + +@patch('os.path.isfile', return_value=False) +def test_info(mock_isfile, capfd): + __main__.f_info(None) + out, err = capfd.readouterr() + assert 'In use: branch,commit_msg\nUnused: path\n' == out + assert err == '' diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..3128041 --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,118 @@ +import pytest +import asyncio +from unittest.mock import patch, mock_open + +from gita import utils, info +from conftest import ( + PATH_FNAME, PATH_FNAME_EMPTY, PATH_FNAME_CLASH, GROUP_FNAME, +) + + +@pytest.mark.parametrize('test_input, diff_return, expected', [ + ({ + 'abc': '/root/repo/' + }, True, 'abc \x1b[31mrepo *+_ \x1b[0m msg'), + ({ + 'repo': '/root/repo2/' + }, False, 'repo \x1b[32mrepo _ \x1b[0m msg'), +]) +def test_describe(test_input, diff_return, expected, monkeypatch): + monkeypatch.setattr(info, 'get_head', lambda x: 'repo') + monkeypatch.setattr(info, 'run_quiet_diff', lambda _: diff_return) + monkeypatch.setattr(info, 'get_commit_msg', lambda _: "msg") + monkeypatch.setattr(info, 'has_untracked', lambda: True) + monkeypatch.setattr('os.chdir', lambda x: None) + print('expected: ', repr(expected)) + print('got: ', repr(next(utils.describe(test_input)))) + assert expected == next(utils.describe(test_input)) + + +@pytest.mark.parametrize('path_fname, expected', [ + (PATH_FNAME, { + 'repo1': '/a/bcd/repo1', + 'repo2': '/e/fgh/repo2', + 'xxx': '/a/b/c/repo3', + }), + (PATH_FNAME_EMPTY, {}), + (PATH_FNAME_CLASH, { + 'repo1': '/a/bcd/repo1', + 'repo2': '/e/fgh/repo2', + 'x/repo1': '/root/x/repo1' + }), +]) +@patch('gita.utils.is_git', return_value=True) +@patch('gita.utils.get_config_fname') +def test_get_repos(mock_path_fname, _, path_fname, expected): + mock_path_fname.return_value = path_fname + utils.get_repos.cache_clear() + assert utils.get_repos() == expected + + +@pytest.mark.parametrize('group_fname, expected', [ + (GROUP_FNAME, {'xx': ['a', 'b'], 'yy': ['a', 'c', 'd']}), +]) +@patch('gita.utils.get_config_fname') +def test_get_groups(mock_group_fname, group_fname, expected): + mock_group_fname.return_value = group_fname + utils.get_groups.cache_clear() + assert utils.get_groups() == expected + + +@patch('os.path.isfile', return_value=True) +@patch('os.path.getsize', return_value=True) +def test_custom_push_cmd(*_): + with patch('builtins.open', + mock_open(read_data='push:\n cmd: hand\n help: me')): + cmds = utils.get_cmds_from_files() + assert cmds['push'] == {'cmd': 'hand', 'help': 'me'} + + +@pytest.mark.parametrize( + 'path_input, expected', + [ + (['/home/some/repo/'], '/home/some/repo,repo\n'), # add one new + (['/home/some/repo1', '/repo2'], + {'/repo2,repo2\n/home/some/repo1,repo1\n', # add two new + '/home/some/repo1,repo1\n/repo2,repo2\n'}), # add two new + (['/home/some/repo1', '/nos/repo'], + '/home/some/repo1,repo1\n'), # add one old one new + ]) +@patch('os.makedirs') +@patch('gita.utils.is_git', return_value=True) +def test_add_repos(_0, _1, path_input, expected, monkeypatch): + monkeypatch.setenv('XDG_CONFIG_HOME', '/config') + with patch('builtins.open', mock_open()) as mock_file: + utils.add_repos({'repo': '/nos/repo'}, path_input) + mock_file.assert_called_with('/config/gita/repo_path', 'a+') + handle = mock_file() + if type(expected) == str: + handle.write.assert_called_once_with(expected) + else: + handle.write.assert_called_once() + args, kwargs = handle.write.call_args + assert args[0] in expected + assert not kwargs + + +@patch('gita.utils.write_to_repo_file') +def test_rename_repo(mock_write): + utils.rename_repo({'r1': '/a/b', 'r2': '/c/c'}, 'r2', 'xxx') + mock_write.assert_called_once_with({'r1': '/a/b', 'xxx': '/c/c'}, 'w') + + +def test_async_output(capfd): + tasks = [ + utils.run_async('myrepo', '.', [ + 'python3', '-c', + f"print({i});import time; time.sleep({i});print({i})" + ]) for i in range(4) + ] + # I don't fully understand why a new loop is needed here. Without a new + # loop, "pytest" fails but "pytest tests/test_utils.py" works. Maybe pytest + # itself uses asyncio (or maybe pytest-xdist)? + asyncio.set_event_loop(asyncio.new_event_loop()) + utils.exec_async_tasks(tasks) + + out, err = capfd.readouterr() + assert err == '' + assert out == 'myrepo: 0\nmyrepo: 0\n\nmyrepo: 1\nmyrepo: 1\n\nmyrepo: 2\nmyrepo: 2\n\nmyrepo: 3\nmyrepo: 3\n\n'