Explorar o código

user-requested version tag gets precedence in apt-get source -t dist pkg=version requests

Michael Vogt %!s(int64=12) %!d(string=hai) anos
pai
achega
65dcff55dc
Modificáronse 2 ficheiros con 9 adicións e 4 borrados
  1. 4 4
      cmdline/apt-get.cc
  2. 5 0
      test/integration/test-apt-get-source

+ 4 - 4
cmdline/apt-get.cc

@@ -198,7 +198,7 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
 			       pkgSrcRecords &SrcRecs,string &Src,
 			       CacheFile &CacheFile)
 {
-   string VerTag;
+  string VerTag, UserRequestedVerTag;
    string RelTag = _config->Find("APT::Default-Release");
    string TmpSrc = Name;
    pkgDepCache *Cache = CacheFile.GetDepCache();
@@ -209,7 +209,7 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
       if (TmpSrc[found] == '/')
 	 RelTag = TmpSrc.substr(found+1);
       else
-	 VerTag = TmpSrc.substr(found+1);
+	 VerTag = UserRequestedVerTag = TmpSrc.substr(found+1);
       TmpSrc = TmpSrc.substr(0,found);
    }
 
@@ -331,7 +331,7 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
 	 const string Ver = Parse->Version();
 
          // See if we need to look for a specific release tag
-         if (RelTag != "")
+         if (RelTag != "" && UserRequestedVerTag == "")
          {
             const string Rel = GetReleaseForSourceRecord(SrcList, Parse);
 
@@ -360,7 +360,7 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
          if (VerTag.empty() == false && (VerTag == Ver))
 	    break;
       }
-      if (Version != "" && RelTag != "")
+      if (UserRequestedVerTag == "" && Version != "" && RelTag != "")
          ioprintf(c1out, "Selected version '%s' (%s) for %s\n", 
                   Version.c_str(), RelTag.c_str(), Src.c_str());
 

+ 5 - 0
test/integration/test-apt-get-source

@@ -65,3 +65,8 @@ testequal "$HEADER
 E: Ignore unavailable version '9.9-not-there' of package 'foo'
 E: Unable to find a source package for foo" aptget source -q --print-uris foo=9.9-not-there
 
+# version and release
+testequal "$HEADER
+Need to get 0 B of source archives.
+'file://${APTARCHIVE}/foo_0.0.1.dsc' foo_0.0.1.dsc 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e
+'file://${APTARCHIVE}/foo_0.0.1.tar.gz' foo_0.0.1.tar.gz 0 MD5Sum:d41d8cd98f00b204e9800998ecf8427e" aptget source -q --print-uris -t unstable foo=0.0.1