Crates.io | git-find |
lib.rs | git-find |
version | 0.5.0 |
source | src |
created_at | 2018-05-12 22:11:59.550893 |
updated_at | 2021-01-11 17:40:56.927039 |
description | A tool (cli & lib) to find local git repositories. |
homepage | https://github.com/davidB/git-find |
repository | https://github.com/davidB/git-find |
max_upload_size | |
id | 65116 |
size | 63,209 |
A tool (cli & lib) to find and broadcast commands on local git repositories.
Because I need a tool to list and to reorg my local git repositories.
$> git find -h
git-find 0.5.0
davidB
A tool (cli & lib) to find local git repositories.
USAGE:
git-find [FLAGS] [OPTIONS] [DIR]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v, --verbose Verbose mode (-v, -vv, -vvv, etc.) print on stderr
OPTIONS:
-t, --tmpl <format> format of the output print on stdout [default: {{with .working_paths}}{{if
.conflicted}}C{{else}} {{end}}{{if .modified}}M{{else}}{{if .added}}M{{else}}{{if
.deleted}}M{{else}}{{if .renamed}}M{{else}} {{end}}{{end}}{{end}}{{end}}{{if
.untracked}}U{{else}} {{end}}{{end}} {{ .path.file_name }} {{ .path.full }} {{with
.remotes.origin}} {{ .name }} {{.url_full}} {{end}}]
ARGS:
<DIR> root directory of the search [default: .]
sample output with default template (M : Modification uncommitted, U: Untracked)
$> git-find .
sbt-scalabuff /home/dwayne/src/github.com/sbt/sbt-scalabuff origin https://github.com/sbt/sbt-scalabuff.git
MU ML /home/dwayne/src/github.com/samynk/ML origin https://github.com/samynk/ML.git
BlenderSourceTools /home/dwayne/src/github.com/Artfunkel/BlenderSourceTools origin git@github.com:Artfunkel/BlenderSourceTools.git
three.js /home/dwayne/src/github.com/mrdoob/three.js origin git@github.com:mrdoob/three.js.git
MU Yadef /home/dwayne/src/github.com/zzuegg/Yadef origin git@github.com:zzuegg/Yadef.git
MU dmonkey /home/dwayne/src/github.com/kwando/dmonkey origin https://github.com/kwando/dmonkey.git
MU getdown /home/dwayne/src/github.com/threerings/getdown origin https://github.com/threerings/getdown.git
dart-protoc-plugin /home/dwayne/src/github.com/dart-lang/dart-protoc-plugin origin git@github.com:dart-lang/dart-protoc-plugin.git
M vdrones /home/dwayne/src/github.com/davidB/vdrones origin git@github.com:davidB/vdrones.git
shader_editor /home/dwayne/src/github.com/davidB/shader_editor origin git@github.com:davidB/shader_editor.git
scala-maven-plugin /home/dwayne/src/github.com/davidB/scala-maven-plugin origin git@github.com:davidB/scala-maven-plugin.git
simpleaudio /home/dwayne/src/github.com/davidB/simpleaudio origin git@github.com:davidB/simpleaudio.git
MU ld31_p0cm0n /home/dwayne/src/github.com/davidB/ld31_p0cm0n origin git@github.com:davidB/ld31_p0cm0n.git
livereload-jvm /home/dwayne/src/github.com/davidB/livereload-jvm origin git@github.com:davidB/livereload-jvm.git
dart-protobuf /home/dwayne/src/github.com/davidB/dart-protobuf origin git@github.com:davidB/dart-protobuf.git
U jme3_skel /home/dwayne/src/github.com/davidB/jme3_skel origin git@github.com:davidB/jme3_skel.git
asset_pack /home/dwayne/src/github.com/davidB/asset_pack origin git@github.com:davidB/asset_pack.git
git-find /home/dwayne/src/github.com/davidB/git-find origin git@github.com:davidB/git-find.git
jme3_ext_assettools /home/dwayne/src/github.com/davidB/jme3_ext_assettools origin git@github.com:davidB/jme3_ext_assettools.git
...
broadcast git status
to every repositories
git find -t 'cd {{ .path.full }}; echo "\n\n----\n$PWD"; git status' | sh
clean git repository (to free space)
git find -t 'cd {{ .path.full }} && git clean -d -X -f' | sh
The template format is a subset of golang text/template.
!! Experimental: values could change with future release !!
# run it directly
git find -t '...' | sh
# generate a script and run it later (maybe after review)
git find -t '...' > myscript.sh
sh myscript.sh
to list local repository
{{ .path.file_name }}\t{{ .path.full }}
to list local repository with origin url
{{ .path.file_name }}\t{{ .path.full }}\t{{with .remotes.origin}} {{ .name }} {{.url_full}} {{.url_host}} {{.url_path}} {{end}}
to create a sh script to "git fetch" on every repository
cd {{ .path.full }}; echo "\n\n---------------------------------------------\n$PWD"; git fetch
to create a sh script to move git repository under $HOME/src (same layout as go workspace)
echo "\n\n---------------------------------------------\n"
PRJ_SRC="{{ .path.full }}"
{{if .remotes.origin}}
PRJ_DST="$HOME/src/{{ .remotes.origin.url_host }}/{{ .remotes.origin.url_path}}"
{{else}}
PRJ_DST=$HOME/src/_local_/{{ .path.file_name}}
{{end}}
if [ ! -d "$PRJ_DST" ] ; then
read -p "move $PRJ_SRC to $PRJ_DST ?" answer
case $answer in
[yY]* )
mkdir -p $(dirname "$PRJ_DST")
mv "$PRJ_SRC" "$PRJ_DST"
;;
* ) ;;
esac
fi
to list repo with some info (the default template of version 0.4.1)
{{with .working_paths}}{{if .conflicted}}C{{else}} {{end}}{{if .modified}}M{{else}}{{if .added}}M{{else}}{{if .deleted}}M{{else}}{{if .renamed}}M{{else}} {{end}}{{end}}{{end}}{{end}}{{if .untracked}}U{{else}} {{end}}{{end}}\t{{ .path.file_name }}\t{{ .path.full }}\t{{with .remotes.origin}} {{ .name }} {{.url_full}} {{end}}
With Rust's package manager cargo, you can install via:
cargo install git-find
Note that rust version 1.26.0 or later is required.
!! Experimental !!
The release page includes precompiled binaries for Linux, macOS and Windows.
tar -xzvf git-find_0.3.2-x86_64-unknown-linux-gnu.tar.gz
chmod a+x git-find
mv git-find $HOME/bin
rm git-find_0.2.2-linux.tar.gz
git clone https://github.com/davidB/git-find
# Build
cd git-find
cargo build
# Run unit tests and integration tests
cargo test
# Install
cargo install
Some tools to help management of multi repository But not the same features, else no need to re-do.