]> granicus.if.org Git - cgit/commitdiff
ui-snapshot.c: Prepend "V" when guessing ref names
authorLukas Fleischer <cgit@cryptocrack.de>
Wed, 10 Apr 2013 11:04:03 +0000 (13:04 +0200)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 10 Apr 2013 12:49:31 +0000 (14:49 +0200)
In cgit_print_snapshot_links() we strip leading "v" and "V", while we
currently only prepend a lower case "v" when parsing a snapshot file
name. This results in broken snapshot links for tags that start with an
upper case "V". Avoid this by prepending a "V" as a fallback.

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
ui-snapshot.c

index 8e76977cf42d737cc8500395262a1e4ff94d27e7..42b7489d5b4048248b9223cfc14a437fabdeba09 100644 (file)
@@ -140,8 +140,8 @@ static int make_snapshot(const struct cgit_snapshot_format *format,
  * repo_basename(), we strip the basename and any following '-' and '_'
  * characters ("cgit-0.7.2" -> "0.7.2") and check the resulting name once
  * more. If this still isn't a valid commit object name, we check if pre-
- * pending a 'v' to the remaining snapshot name ("0.7.2" -> "v0.7.2") gives
- * us something valid.
+ * pending a 'v' or a 'V' to the remaining snapshot name ("0.7.2" ->
+ * "v0.7.2") gives us something valid.
  */
 static const char *get_ref_from_filename(const char *url, const char *filename,
                                         const struct cgit_snapshot_format *format)
@@ -173,6 +173,10 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
        if (get_sha1(snapshot.buf, sha1) == 0)
                goto out;
 
+       strbuf_splice(&snapshot, 0, 1, "V", 1);
+       if (get_sha1(snapshot.buf, sha1) == 0)
+               goto out;
+
        result = 0;
        strbuf_release(&snapshot);