<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pd&#x2F;Git development best practices?]]></title><description><![CDATA[<p>Hi all, I'd be curious to hear from anyone who uses Git for version tracking of their Pd projects. I'm a Git noob... just getting started with setting up a local Git repo on my computer (no need for Github in my case), and I have a couple of questions:</p>
<p>-Is there <em>any</em> risk of Git causing issues if I run my Pd patches directly from a Git repo? Is it better to use a separate development repo/directory &amp; then copy the latest version to a separate, non-tracked directory for actual Pd use in concert?</p>
<p>-Is there a way in Git to associate evolving versions of all dependencies in various locations? In my case:</p>
<ul>
<li>Pd performance patch directory (with subdirectories containing abstractions)</li>
<li>~/Library/Pd (my externals directory)</li>
</ul>
<p>I suppose I could create a new repo, copy all of my files into it to begin version control, do all of my development there, and then copy/overwrite all files back to their original locations when I want to move from development to performance, but there's got to be a better/safer/neater way to do it all without shuffling files all over the place manually.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices</link><generator>RSS for Node</generator><lastBuildDate>Sat, 16 May 2026 18:19:13 GMT</lastBuildDate><atom:link href="http://forum.pdpatchrepo.info/topic/11921.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Feb 2019 04:55:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pd&#x2F;Git development best practices? on Sun, 24 Feb 2019 04:55:41 GMT]]></title><description><![CDATA[<p>Hi all, I'd be curious to hear from anyone who uses Git for version tracking of their Pd projects. I'm a Git noob... just getting started with setting up a local Git repo on my computer (no need for Github in my case), and I have a couple of questions:</p>
<p>-Is there <em>any</em> risk of Git causing issues if I run my Pd patches directly from a Git repo? Is it better to use a separate development repo/directory &amp; then copy the latest version to a separate, non-tracked directory for actual Pd use in concert?</p>
<p>-Is there a way in Git to associate evolving versions of all dependencies in various locations? In my case:</p>
<ul>
<li>Pd performance patch directory (with subdirectories containing abstractions)</li>
<li>~/Library/Pd (my externals directory)</li>
</ul>
<p>I suppose I could create a new repo, copy all of my files into it to begin version control, do all of my development there, and then copy/overwrite all files back to their original locations when I want to move from development to performance, but there's got to be a better/safer/neater way to do it all without shuffling files all over the place manually.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices</guid><dc:creator><![CDATA[beep.beep]]></dc:creator><pubDate>Sun, 24 Feb 2019 04:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to Pd&#x2F;Git development best practices? on Sun, 24 Feb 2019 05:43:04 GMT]]></title><description><![CDATA[<p>You should be able to run the patches from your git repo. The only issue would be if you want to keep state which you create while running your patch separate from the git history of your project.</p>
<p>For example, suppose you've got &quot;foo.pd&quot; in your project, and when you run it it creates some temporary files &quot;foo.txt&quot; and &quot;foo.wav&quot; in your current directory. It's possible you could accidentally add and commit foo.txt and foo.wav to your git repository. To prevent that you could either copy the project to some other location to run it, or add temp files/extensions to ,gitignore in your repo.</p>
<p>The other thing is that you should make sure you write clear commit messages in Git. Pd patches aren't easy to read, so you'll depend on those messages if you end up having to revert to a previous state.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/2</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/2</guid><dc:creator><![CDATA[jancsika]]></dc:creator><pubDate>Sun, 24 Feb 2019 05:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Pd&#x2F;Git development best practices? on Sun, 24 Feb 2019 18:34:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/jancsika">@jancsika</a> Thanks for your insights! That makes sense to be selective about which project files are tracked. I have a couple of subdirectories for saving more-or-less temporary txt &amp; wav files, so perhaps I will .gitignore those. (I haven't tested, but I had considered the nightmare possibility that writing a huge wav file to the tracked repo would cause Git to gobble up resources/memory by trying to see changes in the file... but perhaps there are protections or file size limits for such scenarios?)</p>
<p>And thanks also for the notion of writing descriptive commit messages, I can definitely understand the need for clarity, as I wouldn't be able to discern much more than a basic edit in looking at changes in Pd code. Although, as an aside, that thought does make me wonder what would be involved in creating a visual &quot;diff&quot; view of canvases within Pd's gui (or even a more complete built-in Git integration!). Easy for me to speculate, of course, I'm sure it'd be a ridiculous amount of work under the hood for questionable gains.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/3</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/3</guid><dc:creator><![CDATA[beep.beep]]></dc:creator><pubDate>Sun, 24 Feb 2019 18:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pd&#x2F;Git development best practices? on Sun, 24 Feb 2019 21:45:23 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/beep-beep">@beep.beep</a> It's not impossible.</p>
<p>For example, suppose you open a patch rev1.pd. For each mouse motion, keypress, etc. in the GUI you save a message to a file called diff.pd. (Each message prepended with pd-rev1.pd in this example.) When you're done you save the file as rev2.pd.</p>
<p>Assuming there are no subpatches, you've now got two ways to view your revisions:</p>
<ol>
<li><code>diff rev1.pd rev2.pd</code></li>
<li>Open rev1.pd, then open diff.pd</li>
</ol>
<p>Now, you could have also prepended a delay in ms for each message in diff.pd that corresponds to the time elapsed from the moment you started revising rev1.pd to become rev2.pd. If you send those message through <code>[qlist]</code> then you can &quot;play&quot; your diff to watch the changes be applied to arrive at rev2.pd.</p>
<p>So it's not impossible to do. But it would be hard to generalize this to complex patches. Pd currently just uses the memory address of each canvas in the running instance to send messages. Those change each time you run Pd so it's not a robust solution.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/4</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/4</guid><dc:creator><![CDATA[jancsika]]></dc:creator><pubDate>Sun, 24 Feb 2019 21:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to Pd&#x2F;Git development best practices? on Mon, 25 Feb 2019 04:07:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-a" href="http://forum.pdpatchrepo.info/user/jancsika">@jancsika</a> Brilliant!</p>
<p>Yes, I see how the situation becomes complicated very quickly—my original mental image was of a single Pd canvas with black (unchanged), green (new/modified), and red (deleted) Pd objects, perhaps with view filters to compare versions. But indeed, the question of how to handle canvas resizing, subpatch/abstraction changes, etc. within a single window sounds like a messy one to answer.</p>
<p>Also, the notion of recording <em>every</em> canvas edit poses a useful question to me: what level of detail do I really want/need to save as I develop a project? There have certainly been times when I wanted quick access to an old version of a part of my patch, but if I were to comb through a sequence of hundreds of individual edits to find the right state, I could see this ultimately being more work than simply redoing the work anew. I assume this is the idea behind “commits” in Git, which represent meaningful milestones, so for now I’ll keep studying up &amp; see if I can get a good workflow going that way.</p>
]]></description><link>http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/5</link><guid isPermaLink="true">http://forum.pdpatchrepo.info/topic/11921/pd-git-development-best-practices/5</guid><dc:creator><![CDATA[beep.beep]]></dc:creator><pubDate>Mon, 25 Feb 2019 04:07:43 GMT</pubDate></item></channel></rss>