Skip to content
Snippets Groups Projects

Cleanup apiutils module a bit and move git related functions to another module

Merged Alexander Schlemmer requested to merge f-git-utils into dev
3 files
+ 114
44
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 84
0
 
# -*- 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()
Loading