2013-02-25 4 views
8

Git поддерживает опцию команды branch, называемой --edit-description, которую она заявляет, используется «различными» другими командами. Одна команда (по крайней мере по умолчанию), в которой она не используется, является ветвью git (при простое перечисление локальных ветвей). Есть ли способ получить ветвь git для отображения описаний ветвей (вариант verbose выглядит так, как будто он добавляет последнее коммит на ветке)?Описание отрасли печати

Чтобы было ясно, я хотел бы что-то вроде следующего

> 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

см. Это http://stackoverflow.com/questions/2108405/branch-descriptions-in-git – number5

+0

Кто ответит, я получаю описания филиалов, когда я выпускаю «git branch»? Owens? Или вы говорите, что мне нужно что-то сделать с README? Я рассматривал этот вопрос прямо перед тем, как решил опубликовать этот quesiton. – bpw1621

+0

@ bpw1621 См. Http://stackoverflow.com/questions/2108405/branch-descriptions-in-git#comment13650058_8858853 - По-видимому, нет другого встроенного способа, но пока не показывать описания. – poke

ответ

3

Я подтверждаю, что нет никакого способа, сейчас, чтобы отобразить описание отрасли с git branch.

This thread включает

Предстоящий v1.7.9 представит описание филиала, в основном используется в процессе интеграции. Я думаю, что мы могли бы сделать его полезным для пользователей, у которых не используют широкоформатный шаблон request-pull/format-patch. Показывать краткое резюме вместе с именем филиала в «git branch» было бы неплохо.

Я согласен, что было бы неплохо, чтобы предоставить пользователям доступ к информации, даже если ветвь заканчивается присоединяемых к главной ветви вами и никогда не покидает ваше хранилище само по себе.

Вы, однако, ошибаетесь, чтобы сказать «Показывать краткое резюме вдоль ...».

Поддержка описания ветви - предоставить пользователям место для записи подробных пояснений о ветке, похожих по размеру на то, что вы обычно размещаете в сообщении журнала о фиксации или сопроводительном письме серии.
Не было подходящего места для этой ветки, которая является (1) неотъемлемо движущейся мишенью во время ее разработки и (2) не подходит для тегов и заметок.

Здесь уже есть хорошее место для краткого резюме, которое называется «название ветки». Назовите свои ветви так же, как вы называете свои функции.

Предлагаемый патч «git branch --verbose-format» еще не завершен.

Так scriptmentioned по poke, остается (с мерзавца псевдоним) только текущее решение:

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

Хит этого на терминале. При этом будут показаны ветви с описанием, если у вашего филиала есть описание.

Шаг 1:

vi ~/.bashrc 

Шаг 2: Поместите этот

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' 

Шаг 3:

source ~/.bashrc 

Шаг 4:

git-describe-branches 

ИЛИ

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

Примечание:

  1. Выполнить это в рабочем каталоге мерзавца.

  2. Показать описание, если ваша ветка имеет описание.

1

Я знаю, что прошло столько лет с тех пор, как это было задано, но я только начал использовать описания отраслей и наткнулся на это, ища идеи отображения.

относительно bash script answer: Он печатает только ветви, которые имеют описание. Я хочу подражать git branch выводам, но с описаниями.

относительно perl script answer: Форматирование не работает с более длинными именами ветвей. Он также выводит жужжание, если вы находитесь в отдельном состоянии HEAD.

У меня был выход на питон, и это то, что я придумал. Он решает мои проблемы с предыдущими ответами.

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

демонстрируют

[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 

В выставке

[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 

демонстрируют С

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

Интересная альтернатива моему 4-летнему ответу. +1 – VonC

+0

благодарим вас любезно! – tr3buchet

0

Я до сих пор не найти хорошее решение в 2017.

Я придумал еще одно решение. Первая строка требуется после изменения текущей ветви, чтобы обновить файл BRANCH_DESCRIPTION. Он просто запускает инструмент редактирования-описания с помощью «ничего не делать». Затем вы можете просто получить описание из файла .git/BRANCH_DESCRIPTION.

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

Примечание:

Это не может быть документированы/стабильное поведение.

+0

'$ g alias be 'branch --edit-description'; $ g alias bd '! (Экспорт GIT_EDITOR = cat; git be | grep -v "#")' работает. ура – DSPC

0

Я черпал вдохновение из Сахил Gulati и сделал это:

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

Пример:

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

Это также печатает ветви без описания и СЭД команда, потому что текущая ветвь необходимо специальное лечение из-за символ звездочки.

Смежные вопросы