Stai visualizzando una vecchia versione di questo article. Visualizza la versione più recente.

E' stato svolto molto lavoro (in particolare da Sergei) su diversi plugin di bzr che non è stato accettato nei rami di bzr:

  • bzr-email
    • Mostra i commenti per file sulle mail dei commit
    • Mostra i nomi delle funzioni per ogni sezione di diff
  • bzr-gtk
    • Aggiunge un campo 'bugs fixed' in bzr gcommit
    • Mostra i nomi delle funzioni per ogni sezione di diff
    • bzr log --perfile mostra i commenti per file

E' noto che i plugin funzionano con bzr 2.1 e successivi.

Per abilitarli, occorre fare qualcosa di questo genere:

cd ~/.bazaar/plugins
bzr branch lp:~maria-captains/bzr-email/serg/ email
bzr branch lp:~maria-captains/bzr-gtk/serg gtk

In alternativa, i plugin possono essere installati globalmente:

cd /usr/local/bzr-plugins
bzr branch lp:~maria-captains/bzr-email/serg/ email
bzr branch lp:~maria-captains/bzr-gtk/serg gtk
cd ~/.bazaar/plugins
ln -s /usr/local/bzr-plugins/* .

Configurare i plugin (per ottenere il massimo)

Aggiungere un file ~/.bazaar/bazaar.conf:

[[DEFAULT]]
post_commit_mailer = /usr/sbin/sendmail
post_commit_diffoptions = -utB -F ^[[:alpha:]$_].*[^:]$
post_commit_log_format = perfile
gdiff-diffoptions = -u -F ^[[:alpha:]$_].*[^:]
per_file_commits = on
bugs_fixed = on

[ALIASES]
diff = "diff --diff-options='-F ^[[:alpha:]$_].*[^:]$'"
show = log -v -p --perfile -n0

Far sì che bzr includa i nomi delle funzioni nei diff

Per avere i nomi delle funzioni (come diff -p) in quasi tutti i diff, si può usare il seguente plugin:

#!/usr/bin/env python

"""diff -p everywhere"""

version_info = (0, 0, 3)

from bzrlib import diff
from bzrlib.trace import mutter

old_init = diff.DiffText.__init__

def new_init(self, old_tree, new_tree, to_file, path_encoding='utf-8',
    old_label='', new_label='', differ=diff.internal_diff):

  if differ == diff.internal_diff:
    def diff_file(old_filename, oldlines, new_filename, newlines, to_file,
                  allow_binary=False, sequence_matcher=None, path_encoding='utf8'):
        try:
          filename= old_filename[0:old_filename.rindex('\t')]
          re = old_tree.iter_search_rules([filename], ['diff_show_function_regex'])
          diff.external_diff(old_filename, oldlines, new_filename,
              newlines, to_file, ['-F', re.next()[0][1]])
        except (ValueError, IndexError):
          mutter("Failed to use diff_p for %s" % old_filename)
          diff.internal_diff(old_filename, oldlines, new_filename, newlines,
              to_file, allow_binary, sequence_matcher, path_encoding)
    differ = diff_file

  old_init(self, old_tree, new_tree, to_file, path_encoding,
      old_label, new_label, differ)

diff.DiffText.__init__ = new_init

Questo codice va copiato nel file ~/.bazaar/plugins/diff_p/__init__.py. Poi si possono configurare la le espressioni regolari della funzione diff (per diff -F) per tipo di file, utilizzando il file di regole standard di bzr. Si veda bzr help rules. Come utile punto di partenza, si copi quanto segue nel file ~/.bazaar/rules:

[name *.py]
diff_show_function_regex = ^[[:space:]]*\(def\|class\)[[:space:]]\+

[name *]
diff_show_function_regex = ^[[:alpha:]$_].*[^:]$

Commenti

Sto caricando i commenti......