Add development code for pushing CMS changes to github
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user