.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "App::Pinto::Command::pull 3pm" .TH App::Pinto::Command::pull 3pm "2022-10-16" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" App::Pinto::Command::pull \- pull archives from upstream repositories .SH "VERSION" .IX Header "VERSION" version 0.14 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& pinto \-\-root=REPOSITORY_ROOT pull [OPTIONS] TARGET ... .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This command locates packages in your upstream repositories and then pulls the distributions providing those packages into your repository and registers them on a stack. Then it recursively locates and pulls all the distributions that are necessary to satisfy their prerequisites. You can also request to directly pull particular distributions. .PP When locating packages, Pinto first looks at the packages that already exist in the local repository, then Pinto looks at the packages that are available on the upstream repositories. .SH "COMMAND ARGUMENTS" .IX Header "COMMAND ARGUMENTS" Arguments are the targets that you want to pull. Targets can be specified as packages (with or without a version specification) or as distributions. Targets can be expressed in a number of ways, so please see \*(L"\s-1TARGETS\*(R"\s0 below for more information. .PP You can also pipe arguments to this command over \s-1STDIN.\s0 In that case, blank lines and lines that look like comments (i.e. starting with \*(L"#\*(R" or ';') will be ignored. .SH "COMMAND OPTIONS" .IX Header "COMMAND OPTIONS" .IP "\-\-cascade" 4 .IX Item "--cascade" !! \s-1THIS OPTION IS EXPERIMENTAL\s0 !! .Sp When searching for a package (or one of its prerequisites), always take the latest satisfactory version of the package found amongst \fBall\fR the upstream repositories, rather than just taking the \fBfirst\fR satisfactory version that is found. Remember that Pinto only searches the upstream repositories when the local repository does not already contain a satisfactory version of the package. .IP "\-\-diff\-style=STYLE" 4 .IX Item "--diff-style=STYLE" Controls the style of the diff reports. \s-1STYLE\s0 must be either \f(CW\*(C`concise\*(C'\fR or \&\f(CW\*(C`detailed\*(C'\fR. Concise reports show only one record for each distribution added or deleted. Detailed reports show one record for every package added or deleted. .Sp The default style is \f(CW\*(C`concise\*(C'\fR. However, the default style can changed by setting the \f(CW\*(C`PINTO_DIFF_STYLE\*(C'\fR environment variable to your preferred \s-1STYLE.\s0 This variable affects the default style for diff reports generated by all other commands too. .IP "\-\-dry\-run" 4 .IX Item "--dry-run" Go through all the motions, but do not actually commit any changes to the repository. At the conclusion, a diff showing the changes that would have been made will be displayed. Use this option to see how upgrades would potentially impact the stack. .IP "\-\-no\-fail" 4 .IX Item "--no-fail" !! \s-1THIS OPTION IS EXPERIMENTAL\s0 !! .Sp Normally, failure to pull a target (or its prerequisites) causes the command to immediately abort and rollback the changes to the repository. But if \f(CW\*(C`\-\-no\-fail\*(C'\fR is set, then only the changes caused by the failed target (and its prerequisites) will be rolled back and the command will continue processing the remaining targets. .Sp This option is useful if you want to throw a list of targets into a repository and see which ones are problematic. Once you've fixed the broken ones, you can throw the whole list at the repository again. .IP "\-\-message=TEXT" 4 .IX Item "--message=TEXT" .PD 0 .IP "\-m \s-1TEXT\s0" 4 .IX Item "-m TEXT" .PD Use \s-1TEXT\s0 as the revision history log message. If you do not use the \&\f(CW\*(C`\-\-message\*(C'\fR option or the \f(CW\*(C`\-\-use\-default\-message\*(C'\fR option, then you will be prompted to enter the message via your text editor. Use the \f(CW\*(C`PINTO_EDITOR\*(C'\fR or \f(CW\*(C`EDITOR\*(C'\fR or \f(CW\*(C`VISUAL\*(C'\fR environment variables to control which editor is used. A log message is not required whenever the \f(CW\*(C`\-\-dry\-run\*(C'\fR option is set, or if the action did not yield any changes to the repository. .IP "\-\-pin" 4 .IX Item "--pin" Pins the packages to the stack, so they cannot be changed until you unpin them. Only the packages in the requested targets will be pinned \*(-- packages in prerequisites will not be pinned. However, you may pin them separately with the pin command if you so desire. .IP "\-\-recurse" 4 .IX Item "--recurse" .PD 0 .IP "\-\-no\-recurse" 4 .IX Item "--no-recurse" .PD Recursively pull any distributions required to satisfy prerequisites for the targets. The default value for this option can be configured in the \fIpinto.ini\fR configuration file for the repository (it is usually set to 1). To disable recursion, use \f(CW\*(C`\-\-no\-recurse\*(C'\fR. .IP "\-\-skip\-missing\-prerequisite=PACKAGE" 4 .IX Item "--skip-missing-prerequisite=PACKAGE" .PD 0 .IP "\-k \s-1PACKAGE\s0" 4 .IX Item "-k PACKAGE" .PD !! \s-1THIS OPTION IS EXPERIMENTAL\s0 !! .Sp Skip any prerequisite with name \s-1PACKAGE\s0 if a satisfactory version cannot be found. However, a warning will be given whenever this occurrs. This option only has effect when recursively fetching prerequisites for the targets (See also the \f(CW\*(C`\-\-recurse\*(C'\fR option). This option can be repeated. .IP "\-\-skip\-all\-missing\-prerequisites" 4 .IX Item "--skip-all-missing-prerequisites" .PD 0 .IP "\-K" 4 .IX Item "-K" .PD !! \s-1THIS OPTION IS EXPERIMENTAL\s0 !! .Sp Skips all missing prerequisites if a satisfactory version cannot be found. However, a warning will be given whenever this occurrs. This option will silently override the \f(CW\*(C`\-\-skip\-missing\-prerequisite\*(C'\fR option and only has effect when recursively fetching prerequisites for the targets (See also the \&\f(CW\*(C`\-\-recurse\*(C'\fR option). .IP "\-\-stack=NAME" 4 .IX Item "--stack=NAME" .PD 0 .IP "\-s \s-1NAME\s0" 4 .IX Item "-s NAME" .PD Puts all the packages onto the stack with the given \s-1NAME.\s0 Defaults to the name of whichever stack is currently marked as the default stack. Use the stacks command to see the stacks in the repository. .IP "\-\-use\-default\-message" 4 .IX Item "--use-default-message" .PD 0 .IP "\-M" 4 .IX Item "-M" .PD Use the default value for the revision history log message. Pinto will generate a semi-informative log message just based on the command and its arguments. If you set an explicit message with \f(CW\*(C`\-\-message\*(C'\fR, the \f(CW\*(C`\-\-use\- default\-message\*(C'\fR option will be silently ignored. .IP "\-\-with\-development\-prerequisites" 4 .IX Item "--with-development-prerequisites" .PD 0 .IP "\-\-wd" 4 .IX Item "--wd" .PD Also pull development prerequisites so you'll have everything you need to work on those distributions, in the event that you need to patch them in the future. Be aware that most distributions do not actually declare their development prerequisites. .SH "TARGETS" .IX Header "TARGETS" Targets are a compact notation that identifies the things you want to pull into your repository. Targets come in two flavors: package targets and distribution targets. .SS "Package Targets" .IX Subsection "Package Targets" A package target consists of a package name and (optionally) a version specification. Here are some examples: .PP .Vb 4 \& Foo::Bar # Any version of Foo::Bar \& Foo::Bar~1.2 # Foo::Bar version 1.2 or higher \& Foo::Bar==1.2 # Only version 1.2 of Foo::Bar \& Foo::Bar<1,2!=1.3,<=1.9 # Complex version range .Ve .PP Package names are case-sensitive, and the version specification must follow the format used by CPAN::Meta::Requirements. All whitespace within the target will be discarded. If your version specification contains any special shell characters, take care to quote or escape them in your command. .PP In all cases, pinto queries the local repository and then each upstream repository in order, and pulls the first distribution it can find that provides a package which satisfies the version specification. .SS "Distribution Targets" .IX Subsection "Distribution Targets" A distribution target consists of an author \s-1ID,\s0 zero or more subdirectories, and the distribution name and version number. This corresponds to the actual path where the distribution archive lives in the repository or \s-1CPAN\s0 mirror. Here are some examples. .PP .Vb 2 \& SHAKESPEARE/King\-Lear\-1.2.tar.gz # A specific distribution \& SHAKESPEARE/tragedies/Hamlet\-4.2.tar.gz # Same, but with a subdirectory .Ve .PP The author \s-1ID\s0 will always be forced to uppercase, but the reset of the path is case-sensitive. .SS "Caveats" .IX Subsection "Caveats" \&\s-1PAUSE\s0 has no strict rules on how packages are versioned. It is quite common to see a package with the same verison number (or no version at all) in many releases of a distribution. So when you specify a package target with a precise version or version range, what you actually get is the latest distribution (chronologically) that has a package which satisfies the target. Most of the time this works out fine because you usally pull the \*(L"main module\*(R" of the distribution and authors always increment that version in each release. .PP Since most \s-1CPAN\s0 mirrors only report the latest version of a package they have, they often cannot satisfy package targets that have a precise version specification. However, the mirror at is special and can locate a precise version of any package. .PP Package targets always resolve to production releases, unless you specify a precise developer release version (e.g. \f(CW\*(C`Foo::Bar==1.03_01\*(C'\fR). But since most \&\s-1CPAN\s0 mirrors do not index developer releases, this only works when using the mirror at . However, you can usually pull a developer release from any mirror by using a distribution target. Remember that developer releases are those with an underscore in the version number. .PP For repositories created with Pinto version 0.098 or later, the first upstream source is \f(CW\*(C`http://cpan.stratopan.com\*(C'\fR (unless you configure it otherwise). For repositories created with older versions, you can manually add \&\f(CW\*(C`http://cpan.stratopan.com\*(C'\fR to the \f(CW\*(C`sources\*(C'\fR parameter in the configuration file located at \fI.pinto/config/pinto.ini\fR within the repository. .SH "AUTHOR" .IX Header "AUTHOR" Jeffrey Ryan Thalhammer .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.