¿Cómo se abre SourceTree desde la línea de comandos?

82

¿Existe una manera rápida y fácil de abrir un repositorio de git en SourceTree desde la línea de comandos?

Hago mucho trabajo de git desde Terminal, pero a veces no hay reemplazo para una buena vista / diferencia del historial. Me encantaría poder abrir sin usar marcadores.

Loeschg
fuente

Respuestas:

110

La instalación de las herramientas de línea de comandos de SourceTree le proporcionará el streecomando. Esto le permitirá abrir el directorio actual en SourceTree.

herramientas de línea de comandos de sourcetree

También puede especificar una ruta particular a un repositorio

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

Si instalar herramientas de línea de comandos no es una opción por cualquier motivo, también puede hacer lo siguiente:

open -a SourceTree path-to-file

y tal vez configurar un alias en .bashrc o .zshrc

alias sourcetree='open -a SourceTree'

Para aquellos que usan SourceTree 3

alias sourcetree='open -a SourceTree\ 3'
Loeschg
fuente
9
Puede hacer que su alias de sourcetree abra el repositorio de git que se encuentra en el directorio de trabajo actual cambiándolo a alias sourcetree='open -a SourceTree ./'. También los usuarios de Mac pueden desear colocar el alias en.bash_profile
Leigh McCulloch
37

Es posible que la respuesta de loeschg no funcione; algunas personas obtienen un error al referirse a los registros del sistema y no pueden instalar las herramientas de línea de comandos. Hay un tema abierto sobre esto.

Aquí encontrará una solución. Utilizar:

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

Esto creará un enlace simbólico al streebinario y lo colocará /usr/local/bin. Asegúrese de que el directorio esté en su ruta: which streedebería resultar en /usr/local/bin/stree. Si no es así, agréguelo a su PATHmanual o use echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile, que lo hace por usted (reinicie su shell para recargar la PATHvariable).

En la página de la cuestión mencionada, otra solución que no tomaron la prueba fue publicada: alias stree='/Applications/SourceTree.app/Contents/Resources/stree'. Si lo usa, informe en los comentarios si y cómo funciona y por qué lo prefiere en lugar del enlace simbólico.

Para ambos métodos, la ruta a streein SourceTree.appdebe coincidir, por supuesto, con la ubicación donde lo instaló SourceTree.app.

Ahora streeestá instalado y se puede acceder a él desde cualquier directorio. La forma más corta de abrir SourceTree cuando el directorio de trabajo de su shell es el directorio raíz de un repositorio es stree ..

Erik
fuente
Prefiero el aliasmétodo porque se siente menos "permanente" y más "portátil" que crear un enlace simbólico en un directorio que ya está relativamente lleno y se siente como si estuviera siendo administrado automáticamente para mí. A Homebrew le gusta enlazar simbólicamente cosas desde su Cellar allí. Además, SourceTree ha estado haciendo cambios recientemente en su interfaz de usuario que no aprecio, así que comencé a mantener varias versiones, por si acaso. El uso de alias me da una mayor flexibilidad en cuanto a qué versión me gustaría apuntar en bash.
Illya Moskvin
1
También recibí este error. Lo que funcionó para mí: simplemente actualice SourceTree a v3.0.1 (Sourcetree -> Buscar actualizaciones ...). Después de actualizarlo, la instalación de herramientas de línea de comandos funcionaba bien. : D (mi Sourcetree todavía estaba en v2.7.6 cuando recibí el error)
Buju
9

Para aquellos de ustedes en Windows, pueden agregar un archivo por lotes llamado stree.bata una carpeta en su Variable de entorno PATH. (Tengo una C:\batchcarpeta que está en mi RUTA donde almaceno todos mis archivos por lotes de utilidades). Coloque lo siguiente en su archivo por lotes:

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

Ahora puede ir a cualquier repositorio de Git o Mercurial y ejecutar este comando que abrirá el repositorio en SourceTree.

Sumner Evans
fuente
3
FYI: En mi máquina el árbol de fuentes NO está instalado en Archivos de programa, está en C: \ Users \ <user> \ AppData \ Local \ SourceTree. ¿Probablemente porque ahora están usando el instalador Squirrel?
Kevin Berridge
5

Otra solución de Windows para quienes usan Git en la línea de comandos de Bash (msys).

Agregue dos funciones a su Bash .profile:

# 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
}

Recarga tu caparazón.

Ahora puedes usar:

$ towinpath /c/Temp

Y se hará eco c:\Temp.

O puede abrir SourceTree:

$ stree .

Y abrirá este repositorio en SourceTree de forma predeterminada en el panel Estado.

Greg Burghardt
fuente
¡Genial gracias! También hay una función Cygwin cygpath, donde puedes hacer algo parecido function towinpath { cygpath -w $(cd $1 && pwd); }. Esto manejará de manera más robusta cosas como las rutas UNC.
eacousineau
2

Si tiene cygwin instalado, puede usarlo como su stree.bat. Este archivo por lotes se utiliza cygpathpara resolver .su ruta absoluta, por lo que puede hacerstree .

@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%"
Yan Sern
fuente
-1

Ventanas

Adaptándose de múltiples respuestas aquí para Windows, estos scripts le permitirán ejecutar SourceTree desde la línea de comando (probado en SourceTree 3.0.1.7 / Windows 10).

Scripts en un directorio PATH

He colocado estos dos scripts en una carpeta que está en la RUTA de mi sistema. No tendrá que modificar su perfil de bash para este script.

Git Bash para Windows

Cree un archivo llamado stree( touch stree) en su directorio vinculado PATH y ejecútelo chmod u+x streeen este archivo.

#!/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 &

Puede reemplazar "log" en la última línea con "status" si prefiere la vista del directorio de cambios / trabajo de su repositorio en SourceTree.

Símbolo del sistema o Powershell

Cree un archivo con el nombre stree.cmden su directorio vinculado PATH.

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

Tenga en cuenta que esto en realidad no abrirá el directorio como repositorio.

No dude en mejorar los scripts, especialmente el del símbolo del sistema.

Dheeraj Chakilam
fuente