web-dev-qa-db-fra.com

Comment ouvrez-vous SourceTree à partir de la ligne de commande?

Existe-t-il un moyen rapide et facile d'ouvrir un référentiel git dans SourceTree à partir de la ligne de commande?

Je fais beaucoup de travail git depuis Terminal, mais parfois il n'y a pas de remplacement pour une bonne vue/diff d'historique. J'adorerais pouvoir ouvrir sans utiliser de signets.

65
loeschg

L'installation des outils de ligne de commande SourceTree vous fournira la commande stree. Cela vous permettra d'ouvrir le répertoire actuel dans SourceTree.

sourcetree commandline tools

Vous pouvez également spécifier un chemin d'accès particulier à un dépôt

stree ~/my-repo-in-another-folder

Si l'installation d'outils de ligne de commande n'est pas une option pour une raison quelconque, vous pouvez également effectuer les opérations suivantes:

open -a SourceTree path-to-file

et peut-être configurer un alias en .bashrc ou .zshrc

alias sourcetree='open -a SourceTree'

Pour ceux qui utilisent SourceTree 3

alias sourcetree='open -a SourceTree\ 3'
93
loeschg

La réponse de loeschg peut ne pas fonctionner; certaines personnes obtiennent une erreur se référant à leurs journaux système et ne peuvent pas installer les outils de ligne de commande. Il y a un problème ouvert à ce sujet.

ne solution de contournement se trouve ici. Utilisation:

ln -s /Applications/SourceTree.app/Contents/Resources/stree /usr/local/bin/

Cela va créer un lien symbolique vers le binaire stree et le mettre dans /usr/local/bin. Assurez-vous que le répertoire se trouve sur votre chemin: which stree devrait se traduire par /usr/local/bin/stree. Si ce n'est pas le cas, ajoutez-le manuellement à votre PATH ou utilisez echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile, qui le fait pour vous (redémarrez votre Shell pour recharger la variable PATH).

Sur la page du problème mentionné ci-dessus, une autre solution de contournement que je n'ai pas testée a été publiée: alias stree='/Applications/SourceTree.app/Contents/Resources/stree'. Si vous l'utilisez, veuillez indiquer dans les commentaires si et comment cela fonctionne et pourquoi vous le préférez au lien symbolique.

Pour les deux méthodes, le chemin d'accès à stree dans SourceTree.app doit bien sûr correspondre à l'emplacement où vous avez installé SourceTree.app.

Maintenant, stree est installé et est accessible à partir de n'importe quel répertoire. Le moyen le plus court d'ouvrir SourceTree lorsque le répertoire de travail de votre Shell est le répertoire racine d'un référentiel est stree ..

34
Erik

Pour ceux d'entre vous sous Windows, vous pouvez ajouter un fichier de commandes nommé stree.bat dans un dossier de votre variable d'environnement PATH. (J'ai un C:\batch dossier qui se trouve dans mon CHEMIN où je stocke tous mes fichiers de commandes utilitaires.) Mettez ce qui suit dans votre fichier de commandes:

@echo off
start "" "C:\Program Files (x86)\Atlassian\SourceTree\SourceTree.exe"

Vous pouvez maintenant accéder à n'importe quel référentiel Git ou Mercurial et exécuter cette commande qui ouvrira le référentiel dans SourceTree.

9
Sumner Evans

Une autre solution Windows pour ceux qui utilisent Git sur la ligne de commande Bash (msys).

Ajoutez deux fonctions à votre profil Bash:

# Courtesy: http://stackoverflow.com/questions/12015348/msys-path-conversion-or-cygpath-for-msys
function towinpath {
    { cd $1 && pwd -W; } | sed 's|/|\\|g'
}

function stree {
    if [ -z $1 ]; then
        stree_path=$(towinpath pwd)
    else
        stree_path=$(towinpath $1)
    fi

    echo "Starting SourceTree in $stree_path"

    /c/Program\ Files\ \(x86\)/Atlassian/SourceTree/SourceTree.exe -f $stree_path status
}

Rechargez votre Shell.

Vous pouvez maintenant utiliser:

$ towinpath /c/Temp

Et cela fera écho c:\Temp.

Ou vous pouvez ouvrir SourceTree:

$ stree .

Et il ouvrira ce référentiel dans SourceTree par défaut au panneau d'état.

5
Greg Burghardt

Si vous avez installé cygwin, vous pouvez l'utiliser comme votre stree.bat. Ce fichier de commandes utilise cygpath pour résoudre . à son chemin absolu, vous pouvez donc faire stree .

@echo off
FOR /F "tokens=* USEBACKQ" %%F IN (`cygpath -w -a %1`) DO (
SET STREE_OPEN_PATH=%%F
)
%USERPROFILE%\AppData\Local\SourceTree\SourceTree.exe -f "%STREE_OPEN_PATH%"
1
Yan Sern

Les fenêtres

S'adaptant à partir de plusieurs réponses ici pour Windows, ces scripts vous permettront d'exécuter SourceTree à partir de la ligne de commande (testé sur SourceTree 3.0.1.7/Windows 10).

Scripts dans un répertoire PATH

J'ai placé ces deux scripts dans un dossier qui se trouve dans mon CHEMIN système. Vous n'aurez pas à modifier votre profil bash pour ce script.

Git Bash pour Windows

Créez un fichier nommé stree (touch stree) dans votre répertoire lié PATH et exécutez chmod u+x stree sur ce fichier.

#!/bin/sh

function towinpath {
    { cd $1 && pwd -W; } | sed 's|/|\\|g'
}

if [ -z $1 ]; then
    stree_path=$(towinpath pwd)
else
    stree_path=$(towinpath $1)
fi

$LOCALAPPDATA/SourceTree/SourceTree.exe -f $stree_path log &

Vous pouvez remplacer "log" dans la dernière ligne par "status" si vous préférez la vue changes/working directory de votre référentiel dans SourceTree.

Invite de commandes ou PowerShell

Créez un fichier nommé stree.cmd dans votre répertoire lié PATH.

@echo off
start "" "%LOCALAPPDATA%\SourceTree\SourceTree.exe"

Notez que cela n'ouvrira pas réellement le répertoire en tant que référentiel.

N'hésitez pas à améliorer les scripts, en particulier celui de l'invite de commandes.

0
Dheeraj Chakilam