|
|
|
""" |
|
Check Git status and configuration for Hugging Face Space deployment. |
|
This script helps troubleshoot git issues when deploying to Hugging Face Spaces. |
|
""" |
|
import subprocess |
|
import os |
|
import sys |
|
|
|
def run_cmd(cmd, description, show_output=True): |
|
"""Run a command and return the result.""" |
|
print(f"\n{description}:") |
|
try: |
|
if show_output: |
|
subprocess.run(cmd, check=True) |
|
return True |
|
else: |
|
result = subprocess.run(cmd, check=True, capture_output=True, text=True) |
|
return result.stdout.strip() |
|
except subprocess.CalledProcessError as e: |
|
print(f"Error: {e}") |
|
if e.stderr: |
|
print(f"Details: {e.stderr}") |
|
return False |
|
|
|
def check_git_installation(): |
|
"""Check if git is installed and properly configured.""" |
|
print("="*50) |
|
print("Checking Git Installation and Configuration") |
|
print("="*50) |
|
|
|
|
|
if not run_cmd(["git", "--version"], "Git version"): |
|
print("Git is not installed. Please install Git and try again.") |
|
return False |
|
|
|
|
|
user_name = run_cmd(["git", "config", "user.name"], "Git user name", False) |
|
user_email = run_cmd(["git", "config", "user.email"], "Git user email", False) |
|
|
|
if not user_name or not user_email: |
|
print("\nGit user name or email is not configured. Please set them:") |
|
print(" git config --global user.name \"Your Name\"") |
|
print(" git config --global user.email \"your.email@example.com\"") |
|
|
|
|
|
if input("\nDo you want to set them now? (y/n): ").lower() == 'y': |
|
name = input("Enter your name: ") |
|
email = input("Enter your email: ") |
|
run_cmd(["git", "config", "--global", "user.name", name], "Setting Git user name", False) |
|
run_cmd(["git", "config", "--global", "user.email", email], "Setting Git user email", False) |
|
print("Git configuration updated.") |
|
else: |
|
return False |
|
else: |
|
print(f"\nGit user name: {user_name}") |
|
print(f"Git user email: {user_email}") |
|
|
|
return True |
|
|
|
def check_git_repository(): |
|
"""Check the Git repository status.""" |
|
print("\n" + "="*50) |
|
print("Checking Git Repository Status") |
|
print("="*50) |
|
|
|
|
|
is_git_repo = os.path.exists(".git") |
|
print(f"\nIs Git repository: {'Yes' if is_git_repo else 'No'}") |
|
|
|
if not is_git_repo: |
|
print("This is not a git repository. You can initialize it with 'git init'") |
|
|
|
|
|
if input("\nDo you want to initialize git now? (y/n): ").lower() == 'y': |
|
run_cmd(["git", "init"], "Initializing Git repository") |
|
print("Git repository initialized.") |
|
else: |
|
return False |
|
|
|
|
|
run_cmd(["git", "status"], "Git status") |
|
|
|
|
|
run_cmd(["git", "remote", "-v"], "Git remotes") |
|
|
|
return True |
|
|
|
def check_huggingface_configuration(): |
|
"""Check Hugging Face-specific configurations.""" |
|
print("\n" + "="*50) |
|
print("Checking Hugging Face Configuration") |
|
print("="*50) |
|
|
|
|
|
try: |
|
import huggingface_hub |
|
print(f"\nhuggingface_hub version: {huggingface_hub.__version__}") |
|
except ImportError: |
|
print("\nhuggingface_hub is not installed. Installing...") |
|
subprocess.run([sys.executable, "-m", "pip", "install", "huggingface_hub"], check=True) |
|
print("huggingface_hub installed.") |
|
|
|
|
|
hf_username = os.environ.get("HF_USERNAME") |
|
hf_token = os.environ.get("HF_TOKEN") |
|
|
|
print(f"\nHF_USERNAME is {'set' if hf_username else 'not set'}") |
|
print(f"HF_TOKEN is {'set' if hf_token else 'not set'}") |
|
|
|
if not hf_username or not hf_token: |
|
print("\nPlease set HF_USERNAME and HF_TOKEN environment variables.") |
|
print("You can run the deploy_to_hf.py script to do this.") |
|
|
|
return True |
|
|
|
def main(): |
|
"""Main function to check git status.""" |
|
|
|
if not check_git_installation(): |
|
print("\nGit installation or configuration issue. Please fix and try again.") |
|
return |
|
|
|
|
|
if not check_git_repository(): |
|
print("\nGit repository issue. Please fix and try again.") |
|
return |
|
|
|
|
|
if not check_huggingface_configuration(): |
|
print("\nHugging Face configuration issue. Please fix and try again.") |
|
return |
|
|
|
print("\n" + "="*50) |
|
print("Git status check completed successfully!") |
|
print("="*50) |
|
print("\nYou are ready to deploy to Hugging Face Spaces.") |
|
print("Run 'python deploy_to_hf.py' to begin deployment.") |
|
|
|
if __name__ == "__main__": |
|
main() |