Add development code for pushing CMS changes to github

This commit is contained in:
Calen Pennington
2012-07-03 19:06:07 -04:00
parent cf2691301e
commit b0ff3053b9
4 changed files with 59 additions and 5 deletions

View File

@@ -1,6 +1,9 @@
from git import Repo
from contentstore import import_from_xml
from fs.osfs import OSFS
import os
from xmodule.modulestore import Location
from django.conf import settings
def import_from_github(repo_settings):
@@ -13,17 +16,28 @@ def import_from_github(repo_settings):
org: name of the
"""
repo_path = repo_settings['path']
if not os.path.isdir(repo_path):
Repo.clone_from(repo_settings['origin'], repo_path)
git_repo = Repo(repo_path)
origin = git_repo.remotes.origin
origin.fetch()
# Do a hard reset to the remote branch so that we have a clean import
git_repo.heads[repo_settings['branch']].checkout()
git_repo.git.checkout(repo_settings['branch'])
git_repo.head.reset('origin/%s' % repo_settings['branch'], index=True, working_tree=True)
return git_repo.head.commit.hexsha, import_from_xml(repo_settings['org'], repo_settings['course'], repo_path)
def repo_path_from_location(location):
location = Location(location)
for name, repo in settings.REPOS.items():
if repo['org'] == location.org and repo['course'] == location.course:
return repo['path']
def export_to_github(course, repo_path, commit_message):
fs = OSFS(repo_path)
xml = course.export_to_xml(fs)
@@ -37,4 +51,5 @@ def export_to_github(course, repo_path, commit_message):
git_repo.git.commit(m=commit_message)
origin = git_repo.remotes.origin
origin.push()
if settings.MITX_FEATURES['GITHUB_PUSH']:
origin.push()