Skip to content
Snippets Groups Projects
Commit 5b87b596 authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

MAINT: moved git-related functions to a separate module and refactored the names

parent 86311b39
No related branches found
No related tags found
2 merge requests!107ENH: add entity getters and cached functions,!104Cleanup apiutils module a bit and move git related functions to another module
Pipeline #36404 failed
......@@ -42,6 +42,8 @@ from caosdb.common.models import (Container, Entity, File, Property, Query,
get_config, SPECIAL_ATTRIBUTES)
from caosdb.exceptions import CaosDBException
from utils.git_utils import get_origin_url_in, get_diff_in, get_branch_in, get_commit_in
logger = logging.getLogger(__name__)
......@@ -148,51 +150,35 @@ def retrieve_entities_with_ids(entities):
def getOriginUrlIn(folder):
"""return the Fetch URL of the git repository in the given folder."""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "remote", "show", "origin"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
urlString = "Fetch URL:"
for line in t.readlines():
if urlString in line:
return line[line.find(urlString) + len(urlString):].strip()
return None
warnings.warn("""
This function is deprecated and will be removed with the next release.
Please use the module caosdb.utils.git_utils for a
similar functionality.""", DeprecationWarning)
return get_origin_url_in(folder)
def getDiffIn(folder, save_dir=None):
"""returns the name of a file where the out put of "git diff" in the given
folder is stored."""
with tempfile.NamedTemporaryFile(delete=False, mode="w", dir=save_dir) as t:
call(["git", "diff"], stdout=t, cwd=folder)
return t.name
warnings.warn("""
This function is deprecated and will be removed with the next release.
Please use the module caosdb.utils.git_utils for a
similar functionality.""", DeprecationWarning)
return get_diff_in(folder, save_dir)
def getBranchIn(folder):
"""returns the current branch of the git repository in the given folder.
The command "git branch" is called in the given folder and the
output is returned
"""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "rev-parse", "--abbrev-ref", "HEAD"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
return t.readline().strip()
warnings.warn("""
This function is deprecated and will be removed with the next release.
Please use the module caosdb.utils.git_utils for a
similar functionality.""", DeprecationWarning)
return get_branch_in(folder)
def getCommitIn(folder):
"""returns the commit hash in of the git repository in the given folder.
The command "git log -1 --format=%h" is called in the given folder
and the output is returned
"""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "log", "-1", "--format=%h"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
return t.readline().strip()
warnings.warn("""
This function is deprecated and will be removed with the next release.
Please use the module caosdb.utils.git_utils for a
similar functionality.""", DeprecationWarning)
return get_commit_in(folder)
def compare_entities(old_entity: Entity, new_entity: Entity, compare_referenced_records: bool = False):
......
# -*- coding: utf-8 -*-
#
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2018 Research Group Biomedical Physics,
# Max-Planck-Institute for Dynamics and Self-Organization Göttingen
# Copyright (C) 2020 Timm Fitschen <t.fitschen@indiscale.com>
# Copyright (C) 2020-2022 IndiScale GmbH <info@indiscale.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# ** end header
#
"""git-utils: Some functions for retrieving information about git repositories.
"""
import logging
import tempfile
from subprocess import call
logger = logging.getLogger(__name__)
def get_origin_url_in(folder: str):
"""return the Fetch URL of the git repository in the given folder."""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "remote", "show", "origin"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
urlString = "Fetch URL:"
for line in t.readlines():
if urlString in line:
return line[line.find(urlString) + len(urlString):].strip()
return None
def get_diff_in(folder: str, save_dir=None):
"""returns the name of a file where the out put of "git diff" in the given
folder is stored."""
with tempfile.NamedTemporaryFile(delete=False, mode="w", dir=save_dir) as t:
call(["git", "diff"], stdout=t, cwd=folder)
return t.name
def get_branch_in(folder: str):
"""returns the current branch of the git repository in the given folder.
The command "git branch" is called in the given folder and the
output is returned
"""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "rev-parse", "--abbrev-ref", "HEAD"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
return t.readline().strip()
def get_commit_in(folder: str):
"""returns the commit hash in of the git repository in the given folder.
The command "git log -1 --format=%h" is called in the given folder
and the output is returned
"""
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
call(["git", "log", "-1", "--format=%h"], stdout=t, cwd=folder)
with open(t.name, "r") as t:
return t.readline().strip()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment