2 votos

¿Cómo se obtienen con git todos los repos de una carpeta?

Mantengo todos los repositorios en los que trabajo en una carpeta en mi máquina ~/Code y quiero que se ejecute un script. git fetch && git status contra cada uno de los repos en esa carpeta.

Imagino que, si es posible, podría ser algo parecido a este pseudocódigo:

cd ~/Code
    && for each subfolder in ~/Documents (git fetch && git status)
    && echo "here’s the repos with updated remotes:\n"
    && echo reportReposWithRemoteChanges

He intentado Torre que no parece ofrecer esto. También he probado Escritorio de GitHub que proporciona un soporte irregular para resaltar algunos repositorios locales cuyos remotos tienen actualizaciones.

3voto

awy Puntos 500

La gente puede responder git comandos que lo hace, pero mirando a su intención hacia GUI, aquí está mi respuesta. Yo uso SourceTree . También ofrece la posibilidad de añadir scripts como funciones personalizadas. fetch da estas opciones. También tiene un buen soporte para los submódulos.

enter image description here

Esta es una acción personalizada que utilizo. Acabo de recoger el código de la condición de desbordamiento de pila. Pero git también saldría si hay cambios conflictivos.

cd "/Users/me/project/"
if git diff-index --quiet HEAD --; then
    # No changes
    echo "no changes"
else
    # Changes
    echo "changes"
    exit
fi

if [[ -z $(git status -s) ]]
then
    # No changes
    echo "no changes1"
else
    # Changes
    echo "changes1"
    exit
fi

git checkout master
make update
echo "made update"
git checkout feature
git rebase master
echo "rebased"
exit

3voto

SuperDuck Puntos 1026

Suponiendo una estructura de carpetas como la siguiente:

"~/Code"
├── "README.md"
├── "file-0.txt"
├── "repo-1"
│   ├── ".git"
│   ├── ".gitignore"
│   ├── "README.md"
│   ├── "file-1.txt"
│   └── "file-2.txt"
├── "repo-2"
│   ├── ".git"
│   ├── ".gitignore"
│   ├── "file-3.txt"
│   └── "file-4.txt"
└── "repo-3"
    ├── ".git"
    └── "file-5.txt"

Puedes usar el siguiente Bash script:

#!/bin/bash

ORIG_DIR="$PWD"
REPOS_DIR="$HOME/Code"

cd "$REPOS_DIR"

for repo in */; do
    echo "$repo:"
    cd "$repo"
    git fetch
    git status
    cd ..
done

cd "$ORIG_DIR"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X