Record file mode in the manifest, 0000 unless asked (closes #161)
check / check (push) Failing after 8s
check / check (push) Failing after 8s
MFFilePath gains mode (field 304): a file's permission bits, 0777 at most, or 0000, meaning none recorded. gen and freshen record real modes only with --include-permissions (ScannerOptions.IncludePermissions); the builder keeps only mode.Perm(), so setuid, setgid and sticky are never written. list -l and export show the mode in octal. check reports MODE_MISMATCH for a recorded mode other than 0000 the file lacks. fetch refuses a manifest with a mode above 0777 before requesting any file, sets each recorded mode on the files it writes, and downloads again a present file whose mode differs. The decoding-cost bound counts a file entry at 176 bytes, up from 160. Model: opus-5-5
This commit is contained in:
+20
-6
@@ -21,12 +21,14 @@ const (
|
||||
cmdFreshen = "freshen"
|
||||
cmdExport = "export"
|
||||
cmdFetch = "fetch"
|
||||
cmdList = "list"
|
||||
cmdVersion = "version"
|
||||
|
||||
flagProgress = "progress"
|
||||
flagTimeout = "timeout"
|
||||
flagDest = "dest"
|
||||
flagRequireSignature = "require-signature"
|
||||
flagProgress = "progress"
|
||||
flagTimeout = "timeout"
|
||||
flagDest = "dest"
|
||||
flagRequireSignature = "require-signature"
|
||||
flagIncludePermissions = "include-permissions"
|
||||
|
||||
manifestArgsUsage = "[manifest file]"
|
||||
|
||||
@@ -167,6 +169,16 @@ func requireSignatureFlag() *cli.StringFlag {
|
||||
}
|
||||
}
|
||||
|
||||
// includePermissionsFlag returns the --include-permissions flag taken by the
|
||||
// generate and freshen subcommands.
|
||||
func includePermissionsFlag() *cli.BoolFlag {
|
||||
return &cli.BoolFlag{
|
||||
Name: flagIncludePermissions,
|
||||
Usage: "Record each file's permission bits in manifest " +
|
||||
"(recorded as 0000 by default)",
|
||||
}
|
||||
}
|
||||
|
||||
func (mfa *CLIApp) generateCommand() *cli.Command {
|
||||
return &cli.Command{
|
||||
Name: cmdGenerate,
|
||||
@@ -224,6 +236,7 @@ func (mfa *CLIApp) generateCommand() *cli.Command {
|
||||
Usage: "Include createdAt timestamp in manifest " +
|
||||
"(omitted by default for determinism)",
|
||||
},
|
||||
includePermissionsFlag(),
|
||||
),
|
||||
}
|
||||
}
|
||||
@@ -307,6 +320,7 @@ func (mfa *CLIApp) freshenCommand() *cli.Command {
|
||||
Usage: "Include createdAt timestamp in manifest " +
|
||||
"(omitted by default for determinism)",
|
||||
},
|
||||
includePermissionsFlag(),
|
||||
),
|
||||
}
|
||||
}
|
||||
@@ -340,7 +354,7 @@ func (mfa *CLIApp) versionCommand() *cli.Command {
|
||||
|
||||
func (mfa *CLIApp) listCommand() *cli.Command {
|
||||
return &cli.Command{
|
||||
Name: "list",
|
||||
Name: cmdList,
|
||||
Aliases: []string{"ls"},
|
||||
Usage: "List files in manifest",
|
||||
ArgsUsage: manifestArgsUsage,
|
||||
@@ -350,7 +364,7 @@ func (mfa *CLIApp) listCommand() *cli.Command {
|
||||
&cli.BoolFlag{
|
||||
Name: "long",
|
||||
Aliases: []string{"l"},
|
||||
Usage: "Show size and mtime",
|
||||
Usage: "Show mode, size and mtime",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "print0",
|
||||
|
||||
Reference in New Issue
Block a user