The contents of any file identified by a file path or file pattern is hashed to produce a dynamic cache key. This is useful when your project has file(s) that uniquely identify what is being cached. For example, files like package-lock.json, yarn.lock, Gemfile.lock, or Pipfile.lock are commonly referenced in a cache key since they all represent a unique set of dependencies.
In this example, the cache key contains three parts: a static string (\"yarn\"), the OS the job is running on since this cache is unique per operating system, and the hash of the yarn.lock file that uniquely identifies the set of dependencies in the cache.
In this example, the cache task attempts to find if the key exists in the cache. If the key doesn't exist in the cache, it tries to use the first restore key yarn $(Agent.OS).This will attempt to search for all keys that either exactly match that key or has that key as a prefix. A prefix hit can happen if there was a different yarn.lock hash segment.For example, if the following key yarn $(Agent.OS) old-yarn.lock was in the cache where the old yarn.lock yielded a different hash than yarn.lock, the restore key will yield a partial hit.If there's a miss on the first restore key, it will then use the next restore key yarn which will try to find any key that starts with yarn. For prefix hits, the result will yield the most recently created cache key as the result.
If you use PackageReferences to manage NuGet dependencies directly within your project file and have a packages.lock.json file, you can enable caching by setting the NUGET_PACKAGES environment variable to a path under $(UserProfile) and caching this directory. See Package reference in project files for more details on how to lock dependencies.If you want to use multiple packages.lock.json, you can still use the following example without making any changes. The content of all the packages.lock.json files will be hashed and if one of the files is changed, a new cache key will be generated.
35 year citybiker, had 20 locks in daily practice, THIS IS THE VERY BEST EVER. And, as icing on the cake: it is also the best looking lock I ever had. Big respect for the makers. I mean really BIG. German lockmakers like A%#S don't come even close to this quality and design.
The lock looks great, it's very easy to carry around and gives you that sense of \"My bike is safe\" which may others don't. It could be an \"Extra piece\" longer (that's because 4 stars and not five) in order to better fit mountain bikes as well. but i finally found a way to secure my bike \"On the go\" riding around the city
A pseudo-version is a specially formattedpre-release version that encodesinformation about a specific revision in a version control repository. Forexample, v0.0.0-20191109021931-daa7c04131f5 is a pseudo-version.
A module is defined by a UTF-8 encoded text file named go.mod in its rootdirectory. The go.mod file is line-oriented. Each line holds a singledirective, made up of a keyword followed by arguments. For example:
A module can be marked as deprecated in a block of comments containing thestring Deprecated: (case-sensitive) at the beginning of a paragraph. Thedeprecation message starts after the colon and runs to the end of the paragraph.The comments may appear immediately before the module directive or afterwardon the same line.
retract directives may be written with either a single version (like v1.0.0)or with a closed interval of versions with an upper and lower bound, delimited by[ and ] (like [v1.1.0, v1.2.0]). A single version is equivalent to aninterval where the upper and lower bound are the same. Like other directives,multiple retract directives may be grouped together in a block delimited by( at the end of a line and ) on its own line.
Successful HTTP responses must have the status code 200 (OK). Redirects (3xx)are followed. Responses with status codes 4xx and 5xx are treated as errors.The error codes 404 (Not Found) and 410 (Gone) indicate that therequested module or version is not available on the proxy, but it may be foundelsewhere. Error responses should have content type text/plain withcharset either utf-8 or us-ascii.
To avoid ambiguity when serving from case-insensitive file systems,the $module and $version elements are case-encoded by replacing everyuppercase letter with an exclamation mark followed by the correspondinglower-case letter. This allows modules example.com/M and example.com/m toboth be stored on disk, since the former is encoded as example.com/!m.
The go command may download module source code and metadata from a moduleproxy. The GOPROXY environmentvariable may be used to configure which proxies thego command may connect to and whether it may communicate directly withversion control systems. Downloaded module data is saved in the modulecache. The go command will only contact a proxy when itneeds information not already in the cache.
In order to load a package, the go command needs the source code for themodule that provides it. Module source code is distributed in .zip files whichare extracted into the module cache. If a module .zip is not in the cache,the go command will download it using a $module/@v/$version.zip request.
When the go command requests the latest version of a module, it first sends arequest for $module/@v/list. If the list is empty or none of the returnedversions can be used, it sends a request for $module/@latest. Once a versionis chosen, the go command sends a $module/@v/$version.info request formetadata. It may then send $module/@v/$version.mod and$module/@v/$version.zip requests to load the go.mod file and source code.
The go command follows redirects but otherwise ignores response statuscodes, so the server may respond with a 404 or any other error status. TheGOINSECURE environment variable may be set to allow fallback and redirects tounencrypted HTTP for specific modules.
To balance the functionality and security concerns, the go command by defaultwill only use git and hg to download code from public servers. It will useany known version control system to download code from privateservers, defined as those hosting packages matching the GOPRIVATE environmentvariable. The rationale behind allowing only Git andMercurial is that these two systems have had the most attention to issues ofbeing run as clients of untrusted servers. In contrast, Bazaar, Fossil, andSubversion have primarily been used in trusted, authenticated environments andare not as well scrutinized as attack surfaces.
The version control command restrictions only apply when using direct versioncontrol access to download code. When downloading modules from a proxy, the gocommand uses the GOPROXY protocol instead, which isalways permitted. By default, the go command uses the Go module mirror(proxy.golang.org) for public modules and onlyfalls back to version control for private modules or when the mirror refuses toserve a public package (typically for legal reasons). Therefore, clients canstill access public code served from Bazaar, Fossil, or Subversion repositoriesby default, because those downloads use the Go module mirror, which takes on thesecurity risk of running the version control commands using a custom sandbox.
With this setting, code with a module or import path beginning withgithub.com/ can only use git; paths on evil.com cannot use any versioncontrol command, and all other paths (* matches everything) can useonly git or hg.
If there is a trusted proxy serving only privatemodules, GONOPROXY should not be set, but caremust be taken to ensure the proxy responds with the correct status codes. Forexample, consider the following configuration:
The go command first requests this module from proxy.corp.example.com. Ifthat proxy responds with 404 (Not Found) or 410 (Gone), the go command willfall back to proxy.golang.org, transmitting the secret-product path in therequest URL. If the private proxy responds with any other error code, the gocommand prints the error and will not fall back to other sources.
The table below explains the purpose of most files in the module cache. Sometransient files (lock files, temporary directories) are omitted. For each path,$module is a module path, and $version is a version. Paths ending withslashes (/) are directories. Capital letters in module paths and versions areescaped using exclamation points (Azure is escaped as !azure) to avoidconflicts on case-insensitive file systems.
To avoid ambiguity when serving from case-insensitive file systems,the $module and $version elements arecase-encodedby replacing every uppercase letter with an exclamation mark followed by thecorresponding lower-case letter. This allows modules example.com/M andexample.com/m to both be stored on disk, since the former is encoded asexample.com/!m.
pseudo-version: A version that encodes a revision identifier (such as a Gitcommit hash) and a timestamp from a version control system. For example,v0.0.0-20191109021931-daa7c04131f5. Used for compatibility with non-modulerepositories and in other situations when a taggedversion is not available.
Version 1.25:Fixed lock rando seeds sometimes placing the Lighter for Jill in invalid locations causing soft-locksVersion 1.24:Fixed lock rando seeds sometimes not allowing access to Outside Balcony causing soft-locksVersion 1.23:Fixed Pillar Room not appearing in the door randomizerReduced the number of Slot Count errors in the seed generator
Version 1.21:Fixed giant mistake with previous update that broke lock, enemy and door rando, whoops!Added *path to victory* to the cheat sheet to help people figure out where they are stuck
Version 1.2:Added fuse unit and items from Main Laboratory Entrance, Passage to Heliport and Cell to randomizerFixed soft-lock where red gemstone and old keys were not spawning in viable positions
Version 1.1b:Moved out of beta, had to rewrite a lot of the lock rando code due to an error with backups :(Version 1.098:Fixed soft-lock in lock rando where Tea Room -> Northern Corridor door was being one-way locked in the wrong directionVersion 1.097:Fixed soft-lock in lock rando regarding the door connecting C Corridor to East Wing StairwayAdded Pillar Room (where you find Richard) to door rando 59ce067264