2013-02-25 16 views
8

Git obsługuje opcję do polecenia branch nazwanego --edit-description, który to jest używany przez "różne" inne polecenia. Jedno polecenie (przynajmniej domyślnie), z którego nie korzysta, to gałąź git (kiedy jest używana do prostej listy lokalnych oddziałów). Czy istnieje sposób na uzyskanie gałęzi git, aby wyświetlić opisy gałęzi (opcja verbose wygląda tak, jakby dodała ostatnie zatwierdzenie w gałęzi)?Opis oddziału drukowania

Żeby było jasne, chciałbym coś takiego następującym

> git branch 
* master  I am the alpha and the omega 
    bugfix1  This is the fix to that thing 
    future  Transition to the new architecture 
+1

zobacz http://stackoverflow.com/questions/2108405/branch-descriptions-in-git – number5

+0

Kto odpowiada na pytanie, czy otrzymuję opisy gałęzi, gdy wydaje się "gałąź git"? Owens? Czy mówisz, że muszę coś zrobić z README? Patrzyłem na to pytanie na samym miejscu, zanim zdecydowałem się opublikować ten quesiton. – bpw1621

+0

@ bpw1621 Zobacz http://stackoverflow.com/questions/2108405/branch-descriptions-in-git#comment13650058_8858853 - Wygląda na to, że nie ma innych wbudowanych jeszcze sposobów, aby pokazać opisy. – poke

Odpowiedz

3

Potwierdzam, nie ma sposobu, aby teraz, aby wyświetlić opis gałęzi git branch.

This thread obejmuje

Nadchodzący v1.7.9 wprowadzi opis oddział, stosowany głównie w procesie integracji . Myślę, że moglibyśmy uczynić go przydatnym dla użytkowników, którzy nie używają w znacznym stopniu oprogramowania typu żądanie-przeciągnięcie/formatowanie. Wyświetlenie krótkiego podsumowania wraz z nazwą oddziału w "git branch" byłoby miłe.

Zgadzam się, że byłoby miło, aby dać użytkownikom dostęp do informacji nawet jeśli oddział kończy się połączyły się gałęzi głównej za was i nigdy pozostawia repozytorium sama.

Jesteś jednak nierozsądny, mówiąc: "Pokazuje krótkie podsumowanie ...".

Obsługa opisu gałęzi polega na umożliwieniu użytkownikom rejestrowania szczegółowych wyjaśnień na temat oddziału o rozmiarach podobnych do tego, co zwykle umieszcza się w komunikacie dziennika zatwierdzenia lub liście przewodnim serii.
Nie było dogodnego miejsca na oddział, który jest (1) z natury poruszającym się celem, podczas gdy jest rozwijany i (2) nie pasuje do tagów i notatek.

Istnieje już dobre miejsce na krótkie podsumowanie i nazywa się "nazwa oddziału". Nazwij swoje oddziały tak, jak nazywasz swoje funkcje.

Sugerowana łatka "git branch --verbose-format" Nie została jeszcze zakończona.

Więc scriptmentioned przez poke pozostaje (z aliasu git) jedynym rozwiązaniem prąd:

#!/bin/perl 

$output= `git branch`; 

foreach my $line (split(/^/, $output)) { 
    my ($is_current, $name) = split(/\s+/, $line); 
    my $description = `git config branch.$name.description`; 

    $description =~ s/\s+$//; 
    printf("%1s %-22s %s\n", $is_current, $name, $description); 
} 
1

Hit to na terminalu. Spowoduje to wyświetlenie gałęzi z opisem, jeśli twój oddział ma jakiś opis.

Etap 1:

vi ~/.bashrc 

Etap 2: Umieścić tę

alias git-describe-branches='for line in $(git branch); do 
    description=$(git config branch.$line.description) 
    if [ -n "$description" ]; then 
     echo "$line  $description" 
    fi 
done' 

Krok 3:

source ~/.bashrc 

Krok 4:

git-describe-branches 

LUB

for line in $(git branch); do 
    description=$(git config branch.$line.description) 
    if [ -n "$description" ]; then 
     echo "$line  $description" 
    fi 
done 

Uwaga:

  1. Run to w git katalogu roboczego.

  2. Pokaże opis, jeśli twój oddział ma opis.

1

Wiem, że minęło wiele lat, odkąd się o to pytano, ale zacząłem używać opisów branżowych i natknąłem się na to, szukając pomysłów na wyświetlacze.

odnośnie do odpowiedzi skryptu bash: Drukuje tylko gałęzie, które mają opis. Chcę naśladować wyjście git branch, ale także z opisami.

dotyczące odpowiedzi skryptu perl: Formatowanie kończy się niepowodzeniem z dłuższymi nazwami gałęzi. Powoduje to również zanikanie w przypadku odłączenia HEAD.

Miałem iść w python i to jest to, co wymyśliłem. Rozwiązuje moje problemy z poprzednimi odpowiedziami.

#!/usr/bin/python 
import subprocess 
import sys 


def git(*args): 
    return subprocess.check_output(['/usr/bin/git'] + list(args)).strip() 


try: 
    branches = git('branch').split('\n') 
except subprocess.CalledProcessError: 
    sys.exit(1) 

longest = len(max(branches, key=len)) 
for branch in branches: 
    active = '*' if branch[0] == '*' else '' 
    branch = branch.lstrip(' *') 
    try: 
     desc = git('config', 'branch.'+branch+'.description') 
    except subprocess.CalledProcessError: 
     print '{:2}{}'.format(active, branch) 
    else: 
     print '{:2}{:{}} {}'.format(active, branch, longest, desc) 

Załączniku A

[user|host ~/git/repo((HEAD detached at origin/master))]% git bd 
* (HEAD detached at origin/master) 
    branch_a 
    delete_this_after_a_little_while_pls_thx_bye long branch description 
    other_branch 
    yay_branches_amirite       PR under review 

wykazują B

[user|host ~/git/repo(other_branch_name)]% git bd 
    branch_a 
    delete_this_after_a_little_while_pls_thx_bye long branch description 
* other_branch 
    yay_branches_amirite       PR under review 

Załącznik C

[user|host ~/non_git_repo]% git bd 
fatal: Not a git repository (or any of the parent directories): .git 
+0

Ciekawa alternatywa dla mojej 4-letniej odpowiedzi. +1 – VonC

+0

dziękuję uprzejmie! – tr3buchet

0

może nadal nie znajduje się dobre rozwiązanie 2017

Wpadłem jednak na inne rozwiązanie. Pierwszy wiersz jest wymagany po zmianie bieżącej gałęzi w celu zaktualizowania pliku BRANCH_DESCRIPTION. Po prostu uruchamia narzędzie do edycji opisów za pomocą "edytora do zrobienia niczego". Następnie możesz po prostu uzyskać opis z pliku .git/BRANCH_DESCRIPTION.

(export GIT_EDITOR=':';git branch --edit-description); 
cat $GITREPOSITORY/.git/BRANCH_DESCRIPTION 

UWAGA:

To nie może być udokumentowane/stabilne zachowanie.

+0

'$ g alias be 'branch --edit-description'; $ g alias bd '! (Eksportuj GIT_EDITOR = cat; git be | grep -v "#") "Działa. Twoje zdrowie – DSPC

0

Wziąłem inspirację z Sahil Gulati i uczynił to:

alias git-describe-branches='git branch | while read line; do 
    description=$(git config branch.$(echo "$line" | sed "s/\* //g").description) 
    echo "$line  $description" 
done' 

Przykład:

$ git-describe-branches 
bugfixdatum  
feat32  
feat53  
feat56  
* feat57  Projektlista 
feat65  
feat72  
feat75  Prevent replacing lager with empty inventering 
master  
referens  

Drukuje również oddziały bez opisu, a sed polecenie jest ponieważ obecny oddział potrzebują specjalnego traktowania ze względu na Gwiazdka.