Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package git-who for openSUSE:Factory checked 
in at 2026-01-26 11:06:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/git-who (Old)
 and      /work/SRC/openSUSE:Factory/.git-who.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "git-who"

Mon Jan 26 11:06:48 2026 rev:3 rq:1329127 version:1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/git-who/git-who.changes  2025-08-06 
14:34:34.783268913 +0200
+++ /work/SRC/openSUSE:Factory/.git-who.new.1928/git-who.changes        
2026-01-26 11:07:37.327278130 +0100
@@ -1,0 +2,10 @@
+Mon Jan 26 06:36:40 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.3:
+  * add NO_COLOR env variable to avoid ansi escape codes
+  * Add separate DEVELOPMENT.md file.
+  * Update README.md w/ logo
+  * add logo in assets
+  * Update README.md
+
+-------------------------------------------------------------------

Old:
----
  git-who-1.2.tar.gz

New:
----
  git-who-1.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ git-who.spec ++++++
--- /var/tmp/diff_new_pack.n7rwUN/_old  2026-01-26 11:07:37.943303839 +0100
+++ /var/tmp/diff_new_pack.n7rwUN/_new  2026-01-26 11:07:37.943303839 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           git-who
-Version:        1.2
+Version:        1.3
 Release:        0
 Summary:        Git blame for file trees
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.n7rwUN/_old  2026-01-26 11:07:37.975305174 +0100
+++ /var/tmp/diff_new_pack.n7rwUN/_new  2026-01-26 11:07:37.979305341 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/sinclairtarget/git-who</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.2</param>
+    <param name="revision">v1.3</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.n7rwUN/_old  2026-01-26 11:07:38.007306510 +0100
+++ /var/tmp/diff_new_pack.n7rwUN/_new  2026-01-26 11:07:38.011306677 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/sinclairtarget/git-who</param>
-              <param 
name="changesrevision">9ad01eb363ff2617b1e9da941ec708acc20a6967</param></service></servicedata>
+              <param 
name="changesrevision">aa656b041068cc7f83ceeba17fc430bd38fdca9f</param></service></servicedata>
 (No newline at EOF)
 

++++++ git-who-1.2.tar.gz -> git-who-1.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/DEVELOPMENT.md 
new/git-who-1.3/DEVELOPMENT.md
--- old/git-who-1.2/DEVELOPMENT.md      1970-01-01 01:00:00.000000000 +0100
+++ new/git-who-1.3/DEVELOPMENT.md      2025-09-17 15:53:47.000000000 +0200
@@ -0,0 +1,26 @@
+# DEVELOPMENT
+## Test Repository Submodule
+Some of the automated tests for `git-who` need to run against a Git repository.
+Test repositories are attached to this repository as submodules.
+
+If you want to run the automated tests, you will first need to set up the
+submodules:
+
+```
+$ git submodule update --init
+```
+
+## Automated Tests
+The unit and integration tests, written in Go, can be run using:
+
+```
+$ rake test
+```
+
+## Functional Tests
+There are some end-to-end/functional tests written in Ruby. These require the
+`minitest` gem. You can run them using:
+
+```
+$ rake test:functional
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/README.md new/git-who-1.3/README.md
--- old/git-who-1.2/README.md   2025-07-30 22:17:59.000000000 +0200
+++ new/git-who-1.3/README.md   2025-09-17 15:53:47.000000000 +0200
@@ -1,5 +1,4 @@
-# git-who
- ![Vanity screenshot](./screenshots/vanity.png)
+![logo](./assets/gitwho_logo.svg)
 
 `git-who` is a command-line tool for answering that eternal question:
 
@@ -10,6 +9,10 @@
 codebase. You can think of `git-who` sort of like `git blame` but for file
 trees rather than individual files.
 
+
+![demo](https://github.com/user-attachments/assets/c0281f57-374b-4b3a-a21d-8d0262c3e46b)
+
+
 ## Demo
 This README contains comprehensive documentation. For an overview, see [Who
 Will Maintain Vim? A Demo of Git
@@ -591,14 +594,10 @@
 instead of being attributed to three or four different people with slightly
 different names?
 
-Git already has a solution for his problem called [Git
+Git already has a solution for this problem called [Git
 mailmap](https://git-scm.com/docs/gitmailmap). If a `.mailmap` file is present
 in a Git repository, `git who` will respect it.
 
-Note that `git who` will _not_ consult your Git configuration to find your
-mailmap file if you have configured a different location for it other than the
-conventional `.mailmap` at the root of your repository.
-
 ## Git Blame Ignore Revs
 If you have a `.git-blame-ignore-revs` file at the root of your repository,
 `git who` will skip all commits named in that file. The format of the file
@@ -657,9 +656,9 @@
 The number of **commits** shown for each author is the number of unique commits
 found while walking the commit log. When supplying a path argument to `git
 who`, the commits walked include only commits modifying the given path(s).
-Here, the rules described under the HISTORY SIMPLIFICATION section of Git log
-apply—branches in the commit history that do not modify the given path(s) are
-pruned away.
+Here, the rules described under the HISTORY SIMPLIFICATION section of the Git 
log
+man page apply—branches in the commit history that do not modify the given 
path(s)
+are pruned away.
 
 The number of **files** shown for each author is the number of unique files
 modified in commits by that author. If a file is renamed, it will count twice.
@@ -710,29 +709,7 @@
 `git who` answers, "Who made the most modifications to this file / this file
 tree?"
 
-## DEVELOPMENT
-### Test Repository Submodule
-Some of the automated tests for `git-who` need to run against a Git repository.
-Test repositories are attached to this repository as submodules.
-
-If you want to run the automated tests, you will first need to set up the
-submodules:
-
-```
-$ git submodule update --init
-```
-
-### Automated Tests
-The unit and integration tests, written in Go, can be run using:
-
-```
-$ rake test
-```
-
-### Functional Tests
-There are some end-to-end/functional tests written in Ruby. These require the
-`minitest` gem. You can run them using:
-
-```
-$ rake test:functional
-```
+## Logo
+The logo was designed by [AdrienDSlone](https://github.com/AdrienDSlone) and is
+available under [this Creative
+Commons license](https://creativecommons.org/licenses/by-sa/4.0/).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/assets/gitwho_logo.svg 
new/git-who-1.3/assets/gitwho_logo.svg
--- old/git-who-1.2/assets/gitwho_logo.svg      1970-01-01 01:00:00.000000000 
+0100
+++ new/git-who-1.3/assets/gitwho_logo.svg      2025-09-17 15:53:47.000000000 
+0200
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="304mm"
+   height="100mm"
+   viewBox="0 0 304 99.999997"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
+   sodipodi:docname="gitwho_logo_v1.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:dc="http://purl.org/dc/elements/1.1/";>
+  <title
+     id="title40">git-who-logo-v1</title>
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     showguides="false"
+     inkscape:zoom="0.5"
+     inkscape:cx="478"
+     inkscape:cy="653"
+     inkscape:window-width="1920"
+     inkscape:window-height="1051"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1-5"
+     showgrid="false">
+    <sodipodi:guide
+       position="252.83413,79.440224"
+       orientation="0,-1"
+       id="guide2"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="21.610244,46.492639"
+       orientation="1,0"
+       id="guide3"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="282.63827,39.013542"
+       orientation="1,0"
+       id="guide4"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="197.37915,33.56079"
+       orientation="0,-1"
+       id="guide5"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="168.14271,61.635417"
+       orientation="0,-1"
+       id="guide8"
+       inkscape:locked="false" />
+    <inkscape:grid
+       id="grid24"
+       units="mm"
+       originx="0"
+       originy="0"
+       spacingx="1"
+       spacingy="0.99999999"
+       empcolor="#0099e5"
+       empopacity="0.30196078"
+       color="#0099e5"
+       opacity="0.14901961"
+       empspacing="5"
+       enabled="true"
+       visible="false" />
+    <sodipodi:guide
+       position="151.37301,73.739282"
+       orientation="0,-1"
+       id="guide40"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="226.65658,51.076312"
+       orientation="1,0"
+       id="guide41"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="209.96421,48.369372"
+       orientation="1,0"
+       id="guide42"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="36.524678,23.584376"
+       orientation="0,-1"
+       id="guide43"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="53.494205,99.999994"
+       orientation="0,-1"
+       id="guide44"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="0,99.999994"
+       orientation="1,0"
+       id="guide45"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="0,-3.2664882e-07"
+       orientation="0,-1"
+       id="guide46"
+       inkscape:locked="false" />
+    <sodipodi:guide
+       position="304,0"
+       orientation="1,0"
+       id="guide47"
+       inkscape:locked="false" />
+  </sodipodi:namedview>
+  <defs
+     id="defs1" />
+  <g
+     inkscape:label="git-who-logo"
+     inkscape:groupmode="layer"
+     id="layer1-5"
+     transform="matrix(0.72702277,0,0,0.72702277,186.13214,78.047861)">
+    <path
+       id="rect1"
+       
style="display:inline;fill:#55d400;stroke-width:0.129255;-inkscape-stroke:none"
+       d="m 94.1928,-78.949156 c -2.169439,0.0028 -4.337717,0.836366 
-5.997973,2.500782 l -29.968669,30.043292 c -3.320512,3.328831 
-3.313566,8.682217 0.01527,12.002731 l 24.923857,24.8619506 6.990993,-6.9562226 
a 4.2731974,4.2731974 0 0 1 -0.189106,-1.253359 4.2731974,4.2731974 0 0 1 
4.268034,-4.278211 4.2731974,4.2731974 0 0 1 4.278208,4.268035 
4.2731974,4.2731974 0 0 1 -4.268033,4.278207 4.2731974,4.2731974 0 0 1 
-1.266926,-0.190798 l -6.968922,6.9689642 2.275209,2.2701216 c 
3.328836,3.3205173 8.682218,3.3135677 12.002738,-0.015264 l 
29.96781,-30.0432898 c 3.32051,-3.328832 3.31442,-8.682214 -0.0144,-12.002731 l 
-26.66228,-26.595282 -5.254274,5.266986 a 4.2731981,4.2731981 0 0 1 
0.188257,1.250816 4.2731981,4.2731981 0 0 1 -0.19165,1.272014 l 
10.930857,10.903711 a 4.2731981,4.2731981 0 0 1 1.24148,-0.186563 
4.2731981,4.2731981 0 0 1 4.27821,4.268034 4.2731981,4.2731981 0 0 1 
-4.26804,4.279058 4.2731981,4.2731981 0 0 1 -1.30933,-0.204371 l 
-10.90455,10.846049 a 4.3643426,4.273162 8
 9.999999 0 1 0.233203,1.414481 4.3643426,4.273162 89.999999 0 1 
-4.268038,4.369792 4.3643426,4.273162 89.999999 0 1 -4.278206,-4.358772 
4.3643426,4.273162 89.999999 0 1 4.267184,-4.369794 4.3643426,4.273162 
89.999999 0 1 1.255055,0.190801 l 10.910482,-10.920668 a 4.2731981,4.2731981 0 
0 1 -0.18402,-1.235576 4.2731981,4.2731981 0 0 1 0.19756,-1.289821 L 
95.492801,-62.482505 a 4.2731981,4.2731981 0 0 1 -1.247421,0.18826 
4.2731981,4.2731981 0 0 1 -1.251664,-0.185715 l -10.879118,10.907104 a 
4.2731981,4.2731981 0 0 1 0.18741,1.244877 4.2731981,4.2731981 0 0 1 
-4.268033,4.27821 4.2731981,4.2731981 0 0 1 -4.27821,-4.267184 
4.2731981,4.2731981 0 0 1 4.268032,-4.279058 4.2731981,4.2731981 0 0 1 
1.288977,0.197585 h 8.48e-4 l 10.852802,-10.876601 a 4.2731981,4.2731981 0 0 1 
-0.20013,-1.287281 4.2731981,4.2731981 0 0 1 4.268032,-4.27821 
4.2731981,4.2731981 0 0 1 1.288977,0.197588 l 5.242387,-5.253426 
-0.56901,-0.567318 c -1.664418,-1.660257 -3.834473,-2.488231 
-6.003911,-2.485518 z"
+       inkscape:label="questionMark" />
+    <text
+       xml:space="preserve"
+       
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:74.9857px;line-height:1.25;font-family:Aleo;-inkscape-font-specification:Aleo;text-align:start;text-decoration-color:#000000;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#55d400;fill-opacity:1;stroke-width:2.68049;-inkscape-stroke:none"
+       x="-227.19514"
+       y="-15.967382"
+       id="text1"
+       inkscape:label="git-who"><tspan
+         sodipodi:role="line"
+         id="tspan1"
+         
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Aleo;-inkscape-font-specification:Aleo;fill:#55d400;fill-opacity:1;stroke-width:2.68049"
+         x="-227.19514"
+         y="-15.967382">git-who</tspan></text>
+  </g>
+  <metadata
+     id="metadata40">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/"; />
+        <dc:title>git-who-logo-v1</dc:title>
+        <dc:date>20250822</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>AdrienDSlone</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:description>Thanks to the font Aleo by Alessio Laiso : 
https://github.com/AlessioLaiso/aleo
+Copyright 2018 The Aleo Project Authors
+This Font Software is licensed under the SIL Open Font License, Version 1.1 
</dc:description>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/4.0/";>
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction"; />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution"; />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Notice"; />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Attribution"; />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#ShareAlike"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/internal/pretty/ansi.go 
new/git-who-1.3/internal/pretty/ansi.go
--- old/git-who-1.2/internal/pretty/ansi.go     2025-07-30 22:17:59.000000000 
+0200
+++ new/git-who-1.3/internal/pretty/ansi.go     2025-09-17 15:53:47.000000000 
+0200
@@ -1,13 +1,72 @@
 // ANSI escape codes
 package pretty
 
-const Reset string = "\x1b[0m"
+var colorEnabled = true
 
-const Green string = "\x1b[32m"
-const Red string = "\x1b[31m"
-const DefaultColor string = "\x1b[39m"
+// SetColorEnabled controls whether ANSI color codes are output
+func SetColorEnabled(enabled bool) {
+       colorEnabled = enabled
+}
 
-const Dim string = "\x1b[2m"
-const Invert string = "\x1b[7m"
+// GetColorEnabled returns whether ANSI color codes are currently enabled
+func GetColorEnabled() bool {
+       return colorEnabled
+}
 
+const resetCode string = "\x1b[0m"
+const greenCode string = "\x1b[32m"
+const redCode string = "\x1b[31m"
+const defaultColorCode string = "\x1b[39m"
+const dimCode string = "\x1b[2m"
+const invertCode string = "\x1b[7m"
+
+// Reset returns the reset ANSI code if colors are enabled, empty string 
otherwise
+func Reset() string {
+       if colorEnabled {
+               return resetCode
+       }
+       return ""
+}
+
+// Green returns the green ANSI code if colors are enabled, empty string 
otherwise
+func Green() string {
+       if colorEnabled {
+               return greenCode
+       }
+       return ""
+}
+
+// Red returns the red ANSI code if colors are enabled, empty string otherwise
+func Red() string {
+       if colorEnabled {
+               return redCode
+       }
+       return ""
+}
+
+// DefaultColor returns the default color ANSI code if colors are enabled, 
empty string otherwise
+func DefaultColor() string {
+       if colorEnabled {
+               return defaultColorCode
+       }
+       return ""
+}
+
+// Dim returns the dim ANSI code if colors are enabled, empty string otherwise
+func Dim() string {
+       if colorEnabled {
+               return dimCode
+       }
+       return ""
+}
+
+// Invert returns the invert ANSI code if colors are enabled, empty string 
otherwise
+func Invert() string {
+       if colorEnabled {
+               return invertCode
+       }
+       return ""
+}
+
+// EraseLine always returns the erase line code as it's used for progress 
indicators
 const EraseLine string = "\x1b[2K"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/internal/subcommands/hist.go 
new/git-who-1.3/internal/subcommands/hist.go
--- old/git-who-1.2/internal/subcommands/hist.go        2025-07-30 
22:17:59.000000000 +0200
+++ new/git-who-1.3/internal/subcommands/hist.go        2025-09-17 
15:53:47.000000000 +0200
@@ -184,10 +184,10 @@
                                "%s ┤ %s%s%-*s%s  %s\n",
                                bucket.Name,
                                valueBar,
-                               pretty.Dim,
+                               pretty.Dim(),
                                barWidth-clampedValue,
                                totalBar,
-                               pretty.Reset,
+                               pretty.Reset(),
                                tallyPart,
                        )
 
@@ -213,12 +213,12 @@
        case tally.LinesMode:
                metric = fmt.Sprintf(
                        "(%s%s%s / %s%s%s)",
-                       pretty.Green,
+                       pretty.Green(),
                        format.Number(t.LinesAdded),
-                       pretty.DefaultColor,
-                       pretty.Red,
+                       pretty.DefaultColor(),
+                       pretty.Red(),
                        format.Number(t.LinesRemoved),
-                       pretty.DefaultColor,
+                       pretty.DefaultColor(),
                )
        default:
                panic("unrecognized tally mode in switch")
@@ -234,10 +234,10 @@
        if fade {
                return fmt.Sprintf(
                        "%s%s %s%s",
-                       pretty.Dim,
+                       pretty.Dim(),
                        author,
                        metric,
-                       pretty.Reset,
+                       pretty.Reset(),
                )
        } else {
                return fmt.Sprintf("%s %s", author, metric)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/internal/subcommands/table.go 
new/git-who-1.3/internal/subcommands/table.go
--- old/git-who-1.2/internal/subcommands/table.go       2025-07-30 
22:17:59.000000000 +0200
+++ new/git-who-1.3/internal/subcommands/table.go       2025-09-17 
15:53:47.000000000 +0200
@@ -314,17 +314,17 @@
        for i, t := range tallies {
                alternating := ""
                if totalRows > maxBeforeColorAlternating && i%2 == 1 {
-                       alternating = pretty.Invert
+                       alternating = pretty.Invert()
                }
 
                lines := fmt.Sprintf(
                        "%s%7s%s / %s%7s%s",
-                       pretty.Green,
+                       pretty.Green(),
                        format.Number(t.LinesAdded),
-                       pretty.DefaultColor,
-                       pretty.Red,
+                       pretty.DefaultColor(),
+                       pretty.Red(),
                        format.Number(t.LinesRemoved),
-                       pretty.DefaultColor,
+                       pretty.DefaultColor(),
                )
 
                if mode == tally.LinesMode || mode == tally.FilesMode {
@@ -336,7 +336,7 @@
                                format.Number(t.Commits),
                                format.Number(t.FileCount),
                                lines,
-                               pretty.Reset,
+                               pretty.Reset(),
                        )
                } else if mode == tally.FirstModifiedMode {
                        fmt.Printf(
@@ -345,7 +345,7 @@
                                formatAuthor(t, showEmail, colwidth-22),
                                format.RelativeTime(progStart, 
t.FirstCommitTime),
                                format.Number(t.Commits),
-                               pretty.Reset,
+                               pretty.Reset(),
                        )
                } else {
                        fmt.Printf(
@@ -354,7 +354,7 @@
                                formatAuthor(t, showEmail, colwidth-22),
                                format.RelativeTime(progStart, 
t.LastCommitTime),
                                format.Number(t.Commits),
-                               pretty.Reset,
+                               pretty.Reset(),
                        )
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/internal/subcommands/tree.go 
new/git-who-1.3/internal/subcommands/tree.go
--- old/git-who-1.2/internal/subcommands/tree.go        2025-07-30 
22:17:59.000000000 +0200
+++ new/git-who-1.3/internal/subcommands/tree.go        2025-09-17 
15:53:47.000000000 +0200
@@ -315,12 +315,12 @@
        case tally.LinesMode:
                return fmt.Sprintf(
                        "(%s%s%s / %s%s%s)",
-                       pretty.Green,
+                       pretty.Green(),
                        format.Number(t.LinesAdded),
-                       pretty.DefaultColor,
-                       pretty.Red,
+                       pretty.DefaultColor(),
+                       pretty.Red(),
                        format.Number(t.LinesRemoved),
-                       pretty.DefaultColor,
+                       pretty.DefaultColor(),
                )
        case tally.LastModifiedMode:
                return fmt.Sprintf(
@@ -356,7 +356,7 @@
 
                var path string
                if line.dimPath {
-                       path = fmt.Sprintf("%s%s%s", pretty.Dim, line.path, 
pretty.Reset)
+                       path = fmt.Sprintf("%s%s%s", pretty.Dim(), line.path, 
pretty.Reset())
                } else {
                        path = line.path
                }
@@ -382,9 +382,9 @@
                                "%s%s%s%s%s%s %s\n",
                                line.indent,
                                path,
-                               pretty.Dim,
+                               pretty.Dim(),
                                separator,
-                               pretty.Reset,
+                               pretty.Reset(),
                                author,
                                line.metric,
                        )
@@ -393,11 +393,11 @@
                                "%s%s%s%s%s %s%s\n",
                                line.indent,
                                path,
-                               pretty.Dim,
+                               pretty.Dim(),
                                separator,
                                author,
                                line.metric,
-                               pretty.Reset,
+                               pretty.Reset(),
                        )
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-who-1.2/main.go new/git-who-1.3/main.go
--- old/git-who-1.2/main.go     2025-07-30 22:17:59.000000000 +0200
+++ new/git-who-1.3/main.go     2025-09-17 15:53:47.000000000 +0200
@@ -9,6 +9,7 @@
        "strings"
 
        "github.com/sinclairtarget/git-who/internal/git"
+       "github.com/sinclairtarget/git-who/internal/pretty"
        "github.com/sinclairtarget/git-who/internal/subcommands"
        "github.com/sinclairtarget/git-who/internal/tally"
        "github.com/sinclairtarget/git-who/internal/utils/flagutils"
@@ -40,6 +41,7 @@
 
        versionFlag := mainFlagSet.Bool("version", false, "Print version and 
exit")
        verboseFlag := mainFlagSet.Bool("v", false, "Enables debug logging")
+       colorFlag := mainFlagSet.Bool("color", false, "Force enable ANSI color 
output (overrides NO_COLOR env var)")
 
        mainFlagSet.Usage = func() {
                fmt.Println("Usage: git-who [-v] [subcommand] [subcommand 
options...]")
@@ -71,7 +73,7 @@
 loop:
        for subcmdIndex < len(os.Args) {
                switch os.Args[subcmdIndex] {
-               case "-version", "--version", "-v", "--v", "-h", "--help":
+               case "-version", "--version", "-v", "--v", "-h", "--help", 
"-color", "--color":
                        subcmdIndex += 1
                default:
                        break loop
@@ -85,6 +87,14 @@
                return
        }
 
+       // Handle color settings according to NO_COLOR spec
+       // Priority: --color flag > NO_COLOR env var > default (enabled)
+       if *colorFlag {
+               pretty.SetColorEnabled(true)
+       } else if noColor, exists := os.LookupEnv("NO_COLOR"); exists && 
noColor != "" {
+               pretty.SetColorEnabled(false)
+       }
+
        if *verboseFlag {
                configureLogging(slog.LevelDebug)
                logger().Debug("log level set to DEBUG")

++++++ vendor.tar.gz ++++++

Reply via email to