Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 47 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,41 @@
# SUMMARY
# TemplatesToGithub

This plugin facilitates the movement of custom templatesets in Movable Type 4 between instances with the benefit of easy insertion into a code repository system.
# Summary

This plugin facilitates the movement of custom template sets in Movable Type between instances with the benefit of easy insertion into a git-based code repository system.

The export script exports the instance's full set of templates, including the Global Templates, into a directory of text files, organized per blog per template type, with an info.txt file providing as the index. The export script does not modify an MT instance's templates at all; it only reads from the database.
# Naming Conventions

The import script only modifies live content with the --apply_changes flag. Without that flag, the script prints status messages and any potential errors with the intended import. The import script does not preserve template_id's between environments; it keys off of blog name, template name, and output file.
## Significance of the name TemplatesToGithub

The assumption made in the naming of this plugin is that most developers using git will use use the Software-as-a-Service provider of distributed version control and source code management known as [GitHub](https://github.com), which is owned by Microsoft, as their cloud git repository.

This plugin only provides command-line tools; it does not extend any user-facing or editorial functionality of Movable Type.


# USAGE
But this plugin does not require use of Github. Developers could manage git repositories to which templates are contributed locally, or could manage those git repositories via a corporate or institutional git repository, or an alternative cloud service to GitHub.

## Terminology
STAGING: The MT instance that has the templates you're going to export
LIVE: The MT instance where you'll import STAGING's templates

PRODUCTION: The MT instance where you'll import STAGING's templates

# Usage

This plugin includes command-line tools, that are used in conjunction with the plugin itself, to implement the import and export of text files representing each template; neither the plugin nor the associated command-line tools extend any user-facing or editorial functionality within the Movable Type content management system.

The export script exports the instance's full set of templates, including the Global Templates, into a directory of text files, organized per blog per template type, with a templates.manifest file (formerly known as info.txt) providing as the index. The export script does not modify an MT instance's templates at all; it only reads from the database.

The import script only modifies live content with the --apply_changes flag. Without that flag, the script prints status messages and any potential errors with the intended import. The import script does not preserve template_id's between environments; it keys off of blog name, template name, and output file.

## Process
1. Deploy the TemplatesToGithub plugin and the github_export_templates.pl and github_import_templates.pl tools to both ALPHA and BETA.

2. Run the export script on the LIVE instance as a backup.
It is extremely important on multi-developer projects that everyone who may commit template code to the Github repository understands and uses the following workflow. If this process is adopted, all commits involving changes to template text files must be made from a complete set of directories created or updated using github_export_templates.pl. If execution of github_export_templates.pl is omitted on either the PRODUCTION or STAGING server, this may result in templates.manifest becoming out of sync with the template text files.

1. Deploy the TemplatesToGithub plugin and the github_export_templates.pl and github_import_templates.pl tools to both PRODUCTION and STAGING.

2. Run the export script on the PRODUCTION instance as a backup.

perl tools/github_export_templates --output_dir=/full/path/to/output/dir
perl tools/github_export_templates.pl --output_dir=/full/path/to/output/dir


3. Check the resulting LIVE files (in that /full/path/to/output/dir path) into your favorite code repository in its own branch.
3. Check the resulting PRODUCTION files (in that /full/path/to/output/dir path) into your favorite code repository in its own branch.

4. Run the export script on the STAGING instance. Same command as Step #2 but in the Staging environment.

Expand All @@ -36,17 +45,37 @@ This plugin only provides command-line tools; it does not extend any user-facing

7. When you're ready to make those staging template live, you can do any amount of branch merging or tagging; whatever suits your process.

8. TEST OUT an import of templates into the LIVE environment with the following command:
8. TEST OUT an import of templates into the PRODUCTION environment with the following command:


perl tools/github_import_templates.pl --input_dir=/full/path/to/staging/templates

9. Resolve any errors that happen in Step 8; repeat Step 8 until the script finishes successfully. Errors will be displayed if a template archive existed on STAGING but not LIVE, if a blog existed on STAGING but not LIVE; if a template cannot be found, etc.
9. Resolve any errors that happen in Step 8; repeat Step 8 until the script finishes successfully. Errors will be displayed if a template archive existed on STAGING but not PRODUCTION, if a blog existed on STAGING but not PRODUCTION; if a template cannot be found, etc.

10. Execute the template import into the LIVE environment:
10. Execute the template import into the PRODUCTION environment:


perl tools/github_import_templates.pl --input_dir=/full/path/to/staging/templates --apply_changes


11. Revert to the LIVE templates (exported in Step 2) in case of emergency.
11. Revert to the PRODUCTION templates (exported in Step 2) in case of emergency.

# Support

For technical support of this theme, contact After6 Services at support@after6services.com or customer.service@after6services.com.

# License

# Authorship

The TemplatesToGithub Plugin and associated command line tools were originally developed by Natalie Podrazik. This project was adopted by After6 Services LLC, with small code and documentation changes by Dave Aiello.

# Copyright

Copyright © 2011, Natalie Podrazik.

Copyright © 2012-2021, After6 Services LLC. All rights reserved.

AMovable Type is a registered trademark of Six Apart Limited.

Trademarks, product names, company names, or logos used in connection with this repository are the property of their respective owners and references do not imply any endorsement, sponsorship, or affiliation with After6 Services LLC unless otherwise specified.
4 changes: 0 additions & 4 deletions plugin/TemplatesToGithub/config.yaml

This file was deleted.

6 changes: 6 additions & 0 deletions plugins/TemplatesToGithub/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
id: TemplatesToGithub
name: TemplatesToGithub
description: 'This plugin provides supplemental library for command-line exporting and importing of MT templates to github.com repositories.'
author_name: 'After6 Services LLC'
author_link: 'http://after6services.com'
version: 1.1
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,4 @@ sub debug {
print STDERR "$msg" if DEBUG;
}

1;
1;
10 changes: 5 additions & 5 deletions tools/github_export_templates.pl
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
$output_dir = TemplatesToGithub::Util::create_directory($output_dir);

# clear info file it if exists.
unlink("$output_dir/info.txt");
unlink("$output_dir/templates.manifest");

# for each blog, dump their templates.
my $blog_iter = MT::Blog->load_iter();
Expand All @@ -46,17 +46,17 @@
$blog->id,
$blog->name,
$output_dir,
"info.txt"));
"templates.manifest"));
}

# repeat for the global templates.
push(@final_summary, export_blog_templates(
0,
TemplatesToGithub::Util->GLOBAL_BLOG_NAME,
$output_dir,
"info.txt"));
"templates.manifest"));

#open (OUTPUTINFO, ">>$output_dir/info.txt");
#open (OUTPUTINFO, ">>$output_dir/templates.manifest");
#print OUTPUTINFO encode_json(\@final_summary) . "\n";
#close OUTPUTINFO;

Expand Down Expand Up @@ -169,4 +169,4 @@ sub export_blog_templates {



1;
1;
2 changes: 1 addition & 1 deletion tools/github_import_templates.pl
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ sub import_blog_templates {
my %template_change_counter = TemplatesToGithub::Util->TEMPLATE_TYPES;

# suck in imported templates
open (INPUT, "< $input_dir/info.txt");
open (INPUT, "< $input_dir/templates.manifest");
my $whole_file = "";
my $line = <INPUT>;
while ($line) {
Expand Down