git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC/PATCH 4/3] Simplify naming (versioning) of non-release tig tarball and rpm file

From
Jakub Narebski <jnareb@gmail.com>
Date
Jun 2, 2007, 17:52 UTC
Message-ID
<200706021952.28426.jnareb@gmail.com>
In-Reply-To
<20070531131615.GA27044@diku.dk>

Use the tag part of git-describe output, with `tig-' prefix stripped off, as version number. Use number of commits since given tag as release number, using 0 if we are at tagged version, and adding '.dirty' suffix if working directory is dirty. Do not use 'g<sha 1>' part of git-describe output.

For example, when git-describe output was tig-0.7-8-g26d0386, before this commit tarball was named tig-0.7.8.g26d0386.tar.gz and rpm was named tig-0.7.8.g26d0386-1.src.rpm (for dirty tree tarball was tig-0.7.8.g26d0386.dirty.tar.gz), now tarball is named tig-0.7-8.tar.gz and rpm is named tig-0.7-8.src.rpm (for dirty tree tarball is tig-0.7-8.dirty.tar.gz).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
This is proposal to simplify naming of non-release tarballs and rpm file,
both for tig and also for git itself. Instead of using whole git-describe
output as version number in tarball/rpm name (BTW. it would be nice to
have command line switch to git-describe which would return old output,
without number of commits since given tag) use tag part as version number,
and number of commits since (plus optional marking dirty) as release
number.
What do you think about this?
 Makefile    |   13 ++++++++++---
 tig.spec.in |    2 +-
 2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index b49d7f8..1e67586 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,13 @@ ifdef DIST_VERSION
 VERSION	= $(DIST_VERSION)
 endif
 
-RPM_VERSION = $(subst -,.,$(VERSION))
+# $(GITDESC) looks like either x.y, or like x.y-z-g<sha1>
+SPLIT_VERSION := $(shell echo $(GITDESC) | \
+                   sed -e 's/^\(.*\)-\([0-9]\+\)-\(g[0-9a-f]\+\)$$/\1 \2 \3/g')
+RPM_VERSION = $(subst -,.,$(word 1,$(SPLIT_VERSION)))
+RPM_RELEASE = $(strip \
+              $(subst -,.,$(if $(word 2,$(SPLIT_VERSION)),\
+                               $(word 2,$(SPLIT_VERSION)),0)$(WTDIRTY)))
 
 LDLIBS	= -lcurses
 CFLAGS	= -Wall -O2 '-DVERSION="$(VERSION)"'
@@ -26,7 +32,7 @@ PROGS	= tig
 MANDOC	= tig.1 tigrc.5
 HTMLDOC	= tig.1.html tigrc.5.html manual.html README.html
 ALLDOC	= $(MANDOC) $(HTMLDOC) manual.html-chunked manual.pdf
-TARNAME	= tig-$(RPM_VERSION)
+TARNAME	= tig-$(RPM_VERSION)-$(RPM_RELEASE)
 
 all: $(PROGS)
 all-debug: $(PROGS)
@@ -104,7 +110,8 @@ release-dist: release-doc
 	install-doc-man install-doc-html clean spell-check dist rpm
 
 tig.spec: tig.spec.in
-	sed -e 's/@@VERSION@@/$(RPM_VERSION)/g' < $< > $@
+	sed -e 's/@@VERSION@@/$(RPM_VERSION)/g' \
+	    -e 's/@@RELEASE@@/$(RPM_RELEASE)/g' < $< > $@
 
 tig: tig.c
 
diff --git a/tig.spec.in b/tig.spec.in
index 2385fb8..8606b23 100644
--- a/tig.spec.in
+++ b/tig.spec.in
@@ -4,7 +4,7 @@
 Summary: 	Tig: text-mode interface for git
 Name: 		tig
 Version: 	@@VERSION@@
-Release: 	1%{?dist}
+Release: 	@@RELEASE@@%{?dist}
 License: 	GPL
 Group: 		Development/Tools
 Vendor: 	Jonas Fonseca <fonseca@diku.dk>
-- 
1.5.2
Previous: Jonas FonsecaNext: Jonas Fonseca
Message 10 of 12 in “Infrastructure for tig rpm builds.”
  1. Infrastructure for tig rpm builds.Jakub Narebski, May 28, 2007
  2. Jonas FonsecaMay 29, 2007
  3. Jakub NarebskiMay 29, 2007
  4. Jonas FonsecaMay 31, 2007
  5. 1/3 Remove PDF version of manual from being build and installedJakub Narebski, Jun 1, 2007
  6. Jonas FonsecaJun 2, 2007
  7. 2/3 Include documentation sources for rpmbuild with '--without docs'Jakub Narebski, Jun 1, 2007
  8. 3/3 Refresh VERSION file when building distribution tarball in "make dist"Jakub Narebski, Jun 1, 2007
  9. Jonas FonsecaJun 2, 2007
  10. 4/3 Simplify naming (versioning) of non-release tig tarball and rpm fileJakub Narebski, Jun 2, 2007
  11. Jonas FonsecaJun 3, 2007
  12. Jakub NarebskiJun 3, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.