def test_push(self): task = self._create_task(init_repos=True) db_task = Task.objects.get(pk=task["id"]) db_git = GitData() db_git.url = GIT_URL db_git.format = EXPORT_FORMAT db_git.path = "annotation.zip" db_git.sync_date = timezone.now() cvat_git = TestGit(db_git, db_task, self.user) cvat_git.set_rep() cvat_git.create_master_branch() self.add_file(cvat_git.get_cwd(), "file.txt") cvat_git.push(self.user, "", "", db_task, db_task.updated_date) self.assertFalse(cvat_git.get_rep().is_dirty())
def initial_create(tid, git_path, export_format, lfs, user): try: db_task = Task.objects.get(pk=tid) path_pattern = r"\[(.+)\]" path_search = re.search(path_pattern, git_path) path = None if path_search is not None: path = path_search.group(1) git_path = git_path[0:git_path.find(path) - 1].strip() path = os.path.join('/', path.strip()) else: anno_file = re.sub(r'[\\/*?:"<>|\s]', '_', db_task.name)[:100] path = '/annotation/{}.zip'.format(anno_file) path = path[1:] _split = os.path.splitext(path) if len(_split) < 2 or _split[1] not in [".xml", ".zip"]: raise Exception("Only .xml and .zip formats are supported") format_name = format_for(export_format, db_task.mode) db_git = GitData() db_git.url = git_path db_git.path = path db_git.format = format_name db_git.task = db_task db_git.lfs = lfs try: _git = Git(db_git, db_task, db_task.owner) _git.init_repos() db_git.save() except git.exc.GitCommandError as ex: _have_no_access_exception(ex) except Exception as ex: slogger.task[tid].exception( 'exception occurred during git initial_create', exc_info=True) raise ex