A reviewboard egy egyszerű, de használható eszköz (ha az ember készít hozzá egy jó review allocator programot, de erről majd máskor). A használat során arra törekedtünk, hogy egy commitot több ember is megnézzen, ezt viszont a reviewboard valamiért nem annyira támogatja.
Mint a mellékelt képen is látszik, a reviewboard a ship-it-et egy zöld pipával jelöli. Ha valaki azt mondja a review-re, hogy Ship it, akkor a pipa megjelenik. Ellenben ha több reviewer van egy ticketen, ez nem a legszerencsésebb dolog.
Nekünk az elvárt működés valami ilyesmi lett volna:
Ehhez az alábbi módosításra van szükség:
Első lépésben meg kell keresni menni a reviewboard egg csomagját, ahol a forrás fájlok is (.py) találhatóak. Ez operációs rendszer, python verzió függő, de az alábbi helyen érdemes keresni:
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0.18-py2.7.egg
Az oszlopok definíciója a reviewboard\datagrids\columns.py fájlban van. A ShipIt column-ot előállító kódot meglepő módon ShipItColumn-nak hívják. A kapcsolódó forráskód így néz ki:
class ShipItColumn(Column): """Shows the "Ship It" count for a review request.""" def __init__(self, *args, **kwargs): super(ShipItColumn, self).__init__( image_class='rb-icon rb-icon-shipit', image_alt=_('Ship It!'), detailed_label = _('Ship It!'), db_field='shipit_count', sortable=True, shrink=True, *args, **kwargs) def render_data(self, state, review_request): if review_request.issue_open_count > 0: return ('<span class="issue-count">' ' <span class="issue-icon">!</span> %s' '</span>' % review_request.issue_open_count) elif review_request.shipit_count > 0: return '<span class="shipit-count">' \ ' <div class="rb-icon rb-icon-shipit-checkmark"' \ ' title="%s"></div> %s' \ '</span>' % \ (self.image_alt, review_request.shipit_count) else: return ''
A minket érdeklő rész, leginkább az if második fele: review_request.shipit_count > 0:
Itt kezelik azt a részt, ha a ticketen 0-nál több ship it van… Ezt jobb lenne korrektül kezelni, az alábbi módon:
elif review_request.shipit_count > 0: peoplecount=review_request.target_people.count() shipicount=review_request.shipit_count additionalclasstext='' if shipicount>=peoplecount: additionalclasstext=' rb-icon-shipit-checkmark' return '<span class="shipit-count">' \ ' <div class="rb-icon %s"' \ ' title="%s"></div> %s/%d' \ '</span>' % \ (additionalclasstext, self.image_alt, shipicount, peoplecount)
A fájl szerkesztésénél figyelni kell a szóközökre, ugyanis a python fájlok nagyon nem szeretik a tab-okat, és a szóközök nem csak a formázásra szolgálnak…
A módosítások után, amennyiben van lefordított columns.py fájl (columns.pyc), akkor azt töröljük. Ha valaki szeretné, lefordíthatja újra az alábbi script-el:
#!/usr/bin/env python import py_compile py_compile.compile("columns.py")