<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Working with Package Revisions on Porch Documentation</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/</link><description>Recent content in Working with Package Revisions on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/docs/4_tutorials_and_how-tos/working_with_package_revisions/index.xml" rel="self" type="application/rss+xml"/><item><title>Creating Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/creating-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/creating-packages/</guid><description>&lt;h2 id="tutorial-overview"&gt;Tutorial Overview&lt;/h2&gt;&lt;p&gt;You will learn how to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Initialize a new package revision&lt;/li&gt;
&lt;li&gt;Pull the package revision locally&lt;/li&gt;
&lt;li&gt;Modify the package revision contents&lt;/li&gt;
&lt;li&gt;Push changes back to Porch&lt;/li&gt;
&lt;li&gt;Propose the package revision for review&lt;/li&gt;
&lt;li&gt;Approve or reject the package revision&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;The tutorial assumes a porch repository is initialized with the &amp;ldquo;porch-test&amp;rdquo; name.
We recommended to use this for simpler copy-pasting of commands otherwise replace any &amp;ldquo;porch-test&amp;rdquo; value with your repository&amp;rsquo;s name in the below commands.&lt;/p&gt;</description></item><item><title>Getting Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/inspecting-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/inspecting-packages/</guid><description>&lt;hr&gt;
&lt;h2 id="basic-operations"&gt;Basic Operations&lt;/h2&gt;&lt;p&gt;These operations cover the fundamental commands for viewing and inspecting package revisions in Porch.&lt;/p&gt;
&lt;h3 id="getting-all-package-revisions"&gt;Getting All Package Revisions&lt;/h3&gt;&lt;p&gt;Get all package revisions across all repositories in a namespace:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;porchctl rpkg get --namespace default
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command queries Porch for all PackageRevisions in the specified namespace and displays a summary table with key information. It shows PackageRevisions from all registered repositories in that namespace.&lt;/p&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;&lt;code&gt;porchctl rpkg list&lt;/code&gt; is an alias for &lt;code&gt;porchctl rpkg get&lt;/code&gt; and can be used interchangeably:&lt;/p&gt;</description></item><item><title>Copying Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/copying-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/copying-packages/</guid><description>&lt;h2 id="tutorial-overview"&gt;Tutorial Overview&lt;/h2&gt;&lt;p&gt;You will learn how to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find a PackageRevision to copy&lt;/li&gt;
&lt;li&gt;Copy a PackageRevision to create a new revision&lt;/li&gt;
&lt;li&gt;Modify the copied PackageRevision&lt;/li&gt;
&lt;li&gt;Propose and approve the new revision&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;The tutorial assumes a porch repository is initialized with the &amp;ldquo;porch-test&amp;rdquo; name.
We recommended to use this for simpler copy pasting of commands otherwise replace any &amp;ldquo;porch-test&amp;rdquo; value with your repository&amp;rsquo;s name in the below commands.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="key-concepts"&gt;Key Concepts&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Copy&lt;/strong&gt;: Creates a new independent PackageRevision within the same repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source PackageRevision&lt;/strong&gt;: The original PackageRevision being copied&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target PackageRevision&lt;/strong&gt;: The new PackageRevision created by the copy operation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workspace&lt;/strong&gt;: Must be unique within the package for the target&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Same-repository operation&lt;/strong&gt;: Copy only works within a single repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immutability&lt;/strong&gt;: Published PackageRevisions cannot be modified, only copied&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clone vs Copy&lt;/strong&gt;: Use clone for cross-repository operations, copy for same-repository versions&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="understanding-copy-operations"&gt;Understanding Copy Operations&lt;/h2&gt;&lt;p&gt;Copying creates a new PackageRevision based on an existing one &lt;strong&gt;within the same repository&lt;/strong&gt;. The copied PackageRevision is completely &lt;strong&gt;independent with no upstream link&lt;/strong&gt; to the source.&lt;/p&gt;</description></item><item><title>Cloning Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/cloning-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/cloning-packages/</guid><description>&lt;h2 id="tutorial-overview"&gt;Tutorial Overview&lt;/h2&gt;&lt;p&gt;You will learn how to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find a PackageRevision to clone&lt;/li&gt;
&lt;li&gt;Clone a PackageRevision to a different repository&lt;/li&gt;
&lt;li&gt;Modify the cloned PackageRevision&lt;/li&gt;
&lt;li&gt;Propose and approve the new revision&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;Please note the tutorial assumes repositories are initialized with the &amp;ldquo;blueprints&amp;rdquo; and &amp;ldquo;deployments&amp;rdquo; names.
We recommended to use these for simpler copy pasting of commands otherwise replace these values with your repository names in the below commands.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="understanding-clone-operations"&gt;Understanding Clone Operations&lt;/h2&gt;&lt;p&gt;Cloning creates a new PackageRevision based on an existing one and works &lt;strong&gt;across different repositories&lt;/strong&gt;. The cloned PackageRevision maintains an &lt;strong&gt;upstream reference&lt;/strong&gt; to its source, allowing it to receive updates.&lt;/p&gt;</description></item><item><title>Upgrading Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/upgrading-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/upgrading-packages/</guid><description>&lt;p&gt;The package upgrade feature in Porch is a powerful mechanism for keeping deployed packages (downstream) up-to-date with their source blueprints (upstream). This guide walks through the entire workflow, from creating packages to performing an upgrade, with a special focus on the different upgrade scenarios and merge strategies.&lt;/p&gt;
&lt;p&gt;For detailed command reference, see the 
&lt;a href="/docs/7_cli_api/porchctl/"&gt;porchctl CLI guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="key-concepts"&gt;Key Concepts&lt;/h2&gt;&lt;p&gt;To understand the upgrade process, it&amp;rsquo;s essential to be familiar with the three states of a package during a merge operation:&lt;/p&gt;</description></item><item><title>Deleting Package Revisions</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/deleting-packages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/deleting-packages/</guid><description>&lt;h2 id="tutorial-overview"&gt;Tutorial Overview&lt;/h2&gt;&lt;p&gt;You will learn how to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Delete Draft and Proposed PackageRevisions directly&lt;/li&gt;
&lt;li&gt;Propose Published PackageRevisions for deletion&lt;/li&gt;
&lt;li&gt;Approve or reject deletion proposals&lt;/li&gt;
&lt;li&gt;Understand the deletion workflow and safety mechanisms&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;This tutorial assumes a porch repository is initialized with the &amp;ldquo;porch-test&amp;rdquo; name.
Replace any &amp;ldquo;porch-test&amp;rdquo; value with your repository&amp;rsquo;s name in the commands below.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="understanding-packagerevision-deletion"&gt;Understanding PackageRevision Deletion&lt;/h2&gt;&lt;p&gt;PackageRevision deletion in Porch follows different workflows depending on the lifecycle state:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Direct Deletion:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Working with Subpackages</title><link>/docs/4_tutorials_and_how-tos/working_with_package_revisions/working-with-subpackages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/4_tutorials_and_how-tos/working_with_package_revisions/working-with-subpackages/</guid><description>&lt;p&gt;Independent subpackages allow you to compose a single package from multiple upstream sources, where each subpackage
can be cloned and upgraded independently. This guide walks through the complete workflow of adding an independent
subpackage to an existing package and then upgrading it when a new upstream version becomes available.&lt;/p&gt;
&lt;p&gt;For the conceptual overview, see 
&lt;a href="/docs/2_concepts/subpackages/"&gt;Subpackages&lt;/a&gt;.
For detailed command reference, see the 
&lt;a href="/docs/7_cli_api/porchctl/"&gt;porchctl CLI guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="key-concepts"&gt;Key Concepts&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Independent subpackage&lt;/strong&gt;: A kpt package nested in a subdirectory of a parent package that maintains its own
upstream tracking via its &lt;code&gt;Kptfile&lt;/code&gt;. See 
&lt;a href="https://kpt.dev/book/03-packages" target="_blank"&gt;the kpt package documentation&lt;/a&gt; for
a full description of independent subpackages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parent package revision&lt;/strong&gt;: The Draft package revision into which subpackages are cloned or upgraded.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subpackage directory&lt;/strong&gt;: The relative path within the parent package where the subpackage resides.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unlike a regular clone (which creates a new package revision), a subpackage clone adds content into an existing
Draft package revision. Similarly, a subpackage upgrade modifies the parent package revision in-place rather than
creating a new one.&lt;/p&gt;</description></item></channel></rss>