Skip to content

Instantly share code, notes, and snippets.

@timsutton
Last active August 29, 2015 13:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timsutton/9473707 to your computer and use it in GitHub Desktop.
Save timsutton/9473707 to your computer and use it in GitHub Desktop.
DeployStudio diffing

What paths within the DeployStudio components would be useful to keep track of changes in?

DeployStudio's mpkg is a bundle-style distribution package that contains several packages. All the various shell scripts and configuration files seem to exist within the DeployStudio Admin app bundle at:

DeployStudioServer_vX.Y.Z.mpkg/Contents/Packages/deploystudioAdmin.pkg

Here are several useful top-level paths that could be useful to track:

DeployStudio Admin.app/Contents/Applications/DeployStudio Assistant.app

Contains the sys_builder script and its components used to build NBIs. Frequently updated for fix NBI-related issues.

DeployStudio Admin.app/Contents/Plugins

Source of scripts used for all DeployStudio workflow tasks.

DeployStudio Admin.app/Contents/Frameworks/DSCore.framework/Versions/A/Resources

Some other core components shared between Admin and Runtime.

Without any kind of file type filtering these will include things like image resources, etc. but these are unlikely to change frequently and so will not clutter up diffs too significantly. We'd be sure that we wouldn't accidentally filter out files that would be useful to see changes (or new files created), and while it's certain this would also include binary files, these could be also be useful to have at hand for comparison.

Are there any other paths we should track?

@n8felton
Copy link

Any plans to scrap the change log and include it in the commit messages, or perhaps build a changelog.txt file that gets appended with every release? Also, do you plan to run this on nightly builds as well as stable builds? I've been trying to compile all the changes between 1.6.3 and 1.6.4 because the stable build change logs do not always include all the changes that come out in the nightly builds.

@n8felton
Copy link

Maybe add Info.plist to .gitignore? We probably don't care enough about the CFBundleVersion changing in 27 different Info.plist files.

@timsutton
Copy link
Author

Including their release notes somehow would be useful - like you did in the commit message - but I only want to do it if it can be automated, and currently this would be probably best done by parsing the XML feed, matching the NB string to the version downloaded, etc. This is enough work that I'd rather not do in Bash. So, doable, but wouldn't be high on my priority list, but if someone were willing to provide code for that in Python I might consider porting the script to Python.

@timsutton
Copy link
Author

Info.plist I'm not sure - it's possible that when the 10.6 prefpane broke in a recent NB build, that this had to do with the built SDK version, which is part of a normal Info.plist that would some be pertinent info.

I agree the changing bundle versions are a bunch of noise, but on the other hand they're pretty easy to filter out visually because they all follow the same pattern.

In general, I'm feeling more in favor of not pre-emptively filtering out files. Info.plists could also be included in configuration files that are part of task scripts or vendored frameworks (like when sysbuilder included the OpenGL framework from an early 10.8 version to work around some issue, this is useful version info to have).

@timsutton
Copy link
Author

And yes, the plan would be to run this on nightly builds - stable builds are very rare.

In its current state, the run script can take arbitrary versions in addition to the latest stable or nightly, making it easy to trigger a complete rebuild of the Git repo and tags for all installers available on the DS downloads index.

@n8felton
Copy link

It looks like we're going to have to scrape the page for the complete release notes. The RSS feed appears to only contain fragments of the complete release notes. I've been needing a small project to learn some python with, so I'll give this a shot.

@timsutton
Copy link
Author

God forbid they should put release notes somewhere in a form that's easily parseable, like a text file.

@timsutton
Copy link
Author

I just updated it to track the entire DeployStudio Admin.app - this adds a few more changes per version, but relative to all other changes it's mostly only a few more. I'd guess that other core frameworks besides DSCore change much less frequency.

https://github.com/timsutton/DeployStudioDiffs/releases

@n8felton
Copy link

So even scraping the release notes is not going to be pretty... not every release note page follows the same style; e.g. "What's New" is sometimes "style_2" and sometimes "style_3". Short of doing full blown regex on the whole page, there isn't going to be an easy way to automate gathering the release notes.

@timsutton
Copy link
Author

Inconsistent styles are probably thanks to the fact that they're still using iWeb to generate these pages:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="Generator" content="iWeb 3.0.4" />
<meta name="iWeb-Build" content="local-build-20140309" />

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment