我已将git存储库中的大文件迁移到git-lfs。该存储库包含自定义python库的源代码。我可以通过pip安装它:
pip install git+https://gitserver.com/myrepo.git@branch
当前(迁移后),显然,在lfs中存储的大文件没有安装(只有链接)。我已经在环境中安装了PyPI的git-lfs软件包,但没有帮助。
有什么方法可以告诉pip在克隆仓库时获取git-lfs文件?
答案 0 :(得分:0)
如果正确设置了每个用户或系统配置设置,则Git在克隆使用Git LFS的存储库时将自动调用Git LFS。
最简单的方法是运行class liftComponent extends React.Component {
constructor(props){
super(props);
}
componentDidMount(){
setInterval(function(){
handlerPosition()
}, 1000);
}
render() {}
}
const mapStateToProps = state => ({
currentLevel: state
})
const mapDispatchToProps = (dispatch) => ({
handlerPosition: (currentLevel) => dispatch(handlerPosition),
})
export default connect(mapStateToProps,mapDispatchToProps)(liftComponent);
,它将修改您的git lfs install --skip-repo
以包含正确的条目。您可以通过运行.gitconfig
并确保最后显示的三个git lfs env
选项为非空来验证配置是否正确。
设置完成后,每次使用Git LFS克隆新存储库时,LFS文件都会自动获取并填写。如果您已有存储库,则可以使用git config
签出文件手动。
答案 1 :(得分:0)
我遇到了相同的问题,我有几个包含LFS文件的内部python软件包。他们每个人都有自己的requirements.txt
和setup.py
文件,其中一个文件基于pip,不能很好地处理git lfs
,另一个文件则基于setuptools
。
我的requirements.txt
如下:
pip_package1==0.1
pip_package2==0.2
pip_package3==0.3
git+ssh://git@{url}:{port}/{repo}.git@{branch}
在setup.py
中,一种解决方案是捕获任何git+ssh
,不要让它们进入setup
函数,而是通过pip强制安装:
def install_requires():
reqdir = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(reqdir, 'requirements.txt'), encoding='utf-8') as f:
all_packages = f.readlines()
packages = [
package
for package in all_packages
if 'git+ssh' not in package
]
manual_pip_packages = [
package
for package in all_packages
if 'git+ssh' in package
]
for package in manual_pip_packages:
subprocess.call([sys.executable, '-m', 'pip', 'install', package])
return packages
然后是pip
/ git lfs
兼容性。我了解的是git repo上的pip install
会先git clone
然后是python setup.py [something]
,所以我在包含lfs文件的软件包中的每个setup.py
中添加了git pull
假设相关的setup.py
位于git存储库中。
def pull_first():
"""This script is in a git directory that can be pulled."""
cwd = os.getcwd()
gitdir = os.path.dirname(os.path.realpath(__file__))
os.chdir(gitdir)
g = git.cmd.Git(gitdir)
try:
g.execute(['git', 'lfs', 'pull'])
except git.exc.GitCommandError:
raise RuntimeError("Make sure git-lfs is installed!")
os.chdir(cwd)
这样我就有了setup.py
:
from setuptools import setup, find_packages
import os
import subprocess
import sys
try:
import git
except ModuleNotFoundError:
subprocess.call([sys.executable, '-m', 'pip', 'install', 'gitpython'])
import git
def install_requires():
...
def pull_first():
...
pull_first()
setup(name=...,
version=...,
description=...,
long_description=...,
url=...,
author=...,
license=...,
packages=find_packages(),
python_requires=">=3.0",
install_requires=install_requires())