Я использую zsh и zsh-git-prompt, и он отлично работает. Когда я нахожусь в папке, которая является хранилищем git, я получаю уведомление о состоянии git:

thomas@linux-fopt ~Path/to/Git/repo(localDevelop|✚2)% 

Это значит , что я на ветке localDevelop и изменил два файла.

Теперь я был бы очень признателен за получение такого обзора для всех папок в текущей папке, в которой я нахожусь, что-то вроде:

$ lsGit
  FolderA (master|+1)     (<- is a git repo)
  FolderB (develop|+2)    (<- is a git repo)
  FolderC                 (<- is not a git repo)

Файлы внутри текущей папки следует игнорировать, должны отображаться только папки.

Есть ли способ реализовать это с помощью Zsh?

1 ответ1

1

Это достаточно хорошо?

user@host:~$ cat git-ls.zsh
#!/bin/zsh

source ~/zsh-git-prompt/zshrc.sh

for d in *; do
  if [[ -d "$d" && -e "$d/.git" ]]; then
    echo "$d $(cd "$d" && git_super_status | sed -r 's/(%G|%\{|%\})//g')"
  else
    echo "$d"
  fi
done

user@host:~/dev/external$ ~/git-ls.zsh
1-example-file
ansible (devel|✚2…)
asciinema.org (master|✔)
boltons (master|✔)
caffeine (master|✔)
casperjs (:4225d4c|✔)
Chronicle-Queue (master|✔)
citus (master|✔)
citus-docker (master|✔)
coreutils (master|✔)
cpython
ctop (keyerror_cpuacct_stat|…)
^C

Изменить: если вам нет дела до файлов, посмотрите первую редакцию этого поста.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .