# Copyright 2015 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import os import cliapp class GitClone(object): def __init__(self): self.dirname = None self.subdir = None self.url = None def set_dirname(self, dirname): self.dirname = dirname def set_subdir(self, subdir): self.subdir = subdir def set_url(self, url): self.url = url def clone_from_url(self): cliapp.runcmd(['git', 'clone', self.url, self.dirname]) def update_from_url(self): cliapp.runcmd(['git', 'remote', 'update'], cwd=self.dirname) def sync_from_url(self): if os.path.exists(self.dirname): self.update_from_url() else: self.clone_from_url() def checkout(self, branch): cliapp.runcmd(['git', 'checkout', branch], cwd=self.dirname) cliapp.runcmd(['git', 'pull', 'origin', branch], cwd=self.dirname) def get_HEAD_commit(self): output = cliapp.runcmd(['git', 'rev-parse', 'HEAD'], cwd=self.dirname) return output.strip()