Obter git branch de várias pastas / repositórios

4

Eu tenho uma pasta com vários repositórios dentro. Existe alguma maneira de executar git branch ou o comando git dentro de cada pasta?

$ ls
project1            project2                project3            project4

E eu gostaria de ter algum tipo de saída como a seguinte

$ command
project1 [master]
project2 [dev]
project3 [master]
project4 [master]
    
por Luigi T. 06.02.2015 / 17:52

1 resposta

2

Tente isso. $1 deve ser o diretório pai contendo todos os seus repositórios (ou use "." para o diretório atual):

#!/bin/bash

function git_branches()
{
    if [[ -z "$1" ]]; then
        echo "Usage: $FUNCNAME <dir>" >&2
        return 1
    fi

    if [[ ! -d "$1" ]]; then
        echo "Invalid dir specified: '${1}'"
        return 1
    fi

    # Subshell so we don't end up in a different dir than where we started.
    (
        cd "$1"
        for sub in *; do
            [[ -d "${sub}/.git" ]] || continue
            echo "$sub [$(cd "$sub"; git  branch | grep '^\*' | cut -d' ' -f2)]"
        done
    )
}

Você pode criar um script próprio (mas substitua $FUNCNAME por $0 ) ou mantenha-o dentro de uma função e use-o em seus scripts.

    
por 03.05.2015 / 16:14