From 671318c3a84657acc8b97cf59871489065264ece Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 11 Mar 2011 10:47:25 -0500 Subject: [PATCH 1/2] Revert "Simplest fix to bug2402: do not include SVN versions" This reverts commit a1073ee956021ead19d30c2151510dbaced416a8. Apparently, we totally misunderstood how the debian packages were using microrevisions. Better fix that! --- changes/bug2402 | 4 ---- src/or/config.c | 11 ++++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) delete mode 100644 changes/bug2402 diff --git a/changes/bug2402 b/changes/bug2402 deleted file mode 100644 index f16f6773e7..0000000000 --- a/changes/bug2402 +++ /dev/null @@ -1,4 +0,0 @@ - o Minor bugfixes (build) - - Do not include Git version tags as though they were SVN tags when - generating a tarball from inside a repository that has switched between - branches. Bugfix on 0.2.1.15-rc; fixes bug 2402. diff --git a/src/or/config.c b/src/or/config.c index 209a92d159..8397b231a3 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -827,7 +827,16 @@ static char *_version = NULL; const char * get_version(void) { - return VERSION; + if (_version == NULL) { + if (strlen(tor_svn_revision)) { + size_t len = strlen(VERSION)+strlen(tor_svn_revision)+8; + _version = tor_malloc(len); + tor_snprintf(_version, len, "%s (r%s)", VERSION, tor_svn_revision); + } else { + _version = tor_strdup(VERSION); + } + } + return _version; } /** Release additional memory allocated in options From 02d93caa09656b1ef73838608258afad5c090105 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 25 Jan 2011 14:01:04 -0500 Subject: [PATCH 2/2] Backport: Generate version tags using Git, not (broken) svn revisions. Partial backport of daa0326aaaa85a760be94ee2360cfa61a9fb5be2 . Resolves bug 2402. Bugfix on 0.2.1.15 (for the part where we switched to git) and on 0.2.1.30 (for the part where we dumped micro-revisions.) --- changes/bug2402_redux | 6 +++++ src/or/Makefile.am | 60 ++++++++++--------------------------------- src/or/config.c | 4 +-- src/or/router.c | 2 -- 4 files changed, 21 insertions(+), 51 deletions(-) create mode 100644 changes/bug2402_redux diff --git a/changes/bug2402_redux b/changes/bug2402_redux new file mode 100644 index 0000000000..84be04a021 --- /dev/null +++ b/changes/bug2402_redux @@ -0,0 +1,6 @@ + o Minor bugfixes + - Use micro-revision numbers in 0.2.1.x instead: apparently, they + were more used than we had known. (Bugfix on 0.2.1.30). + - Instead of generating our micro-version numbers using SVN revisions, + use git revisions instead. Bugfix on 0.2.1.15-rc; fixes bug 2402. + diff --git a/src/or/Makefile.am b/src/or/Makefile.am index ad2476ff15..51c1b0fb06 100644 --- a/src/or/Makefile.am +++ b/src/or/Makefile.am @@ -55,53 +55,19 @@ noinst_HEADERS = or.h eventdns.h eventdns_tor.h micro-revision.i tor_main.o: micro-revision.i micro-revision.i: FORCE - @svkdir=$$SVKROOT; \ - if test "x$$svkdir" = x ; then \ - svkdir=$$HOME/.svk; \ - fi; \ - if test -d ../../.git && test -x "`which git 2>&1;true`" ; then \ - if test -d ../../.git/svn && test -x "`which git-svn 2>&1;true`" ; then \ - git-svn info ../../README | \ - sed -n 's/^Revision: \([0-9][0-9]*\).*/"\1"/p' \ - > micro-revision.tmp \ - || true; \ - fi; \ - elif test -d ../../.svn && test -x "`which svn 2>&1;true`" ; then \ - svn info ../.. | \ - sed -n 's/^Revision: \([0-9][0-9]*\).*/"\1"/p' > micro-revision.tmp \ - || true; \ - elif test -x "`which svk 2>&1;true`" && test -d $$svkdir/local; then \ - location=../..; \ - rev=x; \ - while test x$$rev = xx; do \ - x=`svk info $$location | \ - sed -n 's/^Mirrored From:.*, Rev\. \([0-9][0-9]*\)/\1/p'`; \ - if test x$$x != x; then \ - rev=$$x; \ - break; \ - else \ - loc=`svk info $$location | \ - sed -n 's/^Copied From: \(.*\), Rev\. [0-9][0-9]*/\1/p' | \ - head -1`; \ - if test x$$loc = x; then \ - break; \ - else \ - location=/$$loc; \ - fi; \ - fi; \ - done; \ - if test x$$rev != xx; then \ - echo \"$$rev\" > micro-revision.tmp; \ - fi; \ - fi; \ - if test ! -f micro-revision.tmp ; then \ - if test ! -f micro-revision.i ; then \ - echo '""' > micro-revision.i; \ - fi; \ - elif test ! -f micro-revision.i || \ - test x"`cat micro-revision.tmp`" != x"`cat micro-revision.i`"; then \ - mv micro-revision.tmp micro-revision.i; \ - fi; true + @rm -f micro-revision.tmp; \ + if test -d ../../.git && test -x "`which git 2>&1;true`"; then \ + HASH="`git rev-parse --short=16 HEAD`"; \ + echo \"$$HASH\" > micro-revision.tmp; \ + fi; \ + if test ! -f micro-revision.tmp ; then \ + if test ! -f micro-revision.i ; then \ + echo '""' > micro-revision.i; \ + fi; \ + elif test ! -f micro-revision.i || \ + test x"`cat micro-revision.tmp`" != x"`cat micro-revision.i`"; then \ + mv micro-revision.tmp micro-revision.i; \ + fi; true #Dummy target to ensure that micro-revision.i _always_ gets built. FORCE: diff --git a/src/or/config.c b/src/or/config.c index 8397b231a3..9cd8149ce8 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -829,9 +829,9 @@ get_version(void) { if (_version == NULL) { if (strlen(tor_svn_revision)) { - size_t len = strlen(VERSION)+strlen(tor_svn_revision)+8; + size_t len = strlen(VERSION)+strlen(tor_svn_revision)+16; _version = tor_malloc(len); - tor_snprintf(_version, len, "%s (r%s)", VERSION, tor_svn_revision); + tor_snprintf(_version, len, "%s (git-%s)", VERSION, tor_svn_revision); } else { _version = tor_strdup(VERSION); } diff --git a/src/or/router.c b/src/or/router.c index 75f592d9e6..4ce4f852a6 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1586,8 +1586,6 @@ router_guess_address_from_dir_headers(uint32_t *guess) return -1; } -extern const char tor_svn_revision[]; /* from tor_main.c */ - /** Set platform (max length len) to a NUL-terminated short * string describing the version of Tor and the operating system we're * currently running on.