이 Python 스크립트를 사용하여 전문가처럼 Github를 구성하세요.

뭐? 왜요?



여러분과 저는 매일 GitHub를 사용합니다. 여러분이 저와 같은 흥미로운 저장소를 자주 발견한다면, 빠르게 포크하고 미래의 어느 시점에서, 때로는 먼 미래에 그것을 가지고 놀기 위해 저장합니다 :)

내 GitHub가 이러한 Repos로 인해 너무 복잡해 보이기 시작하여 청소를 하기로 결정했습니다. 예, 브라우저를 사용하여 기본 계정에서 다른 계정으로 전송하려는 모든 단일 저장소를 지정, 클릭, 복사 및 붙여넣기하여 흥미로운 Repos를 안전하게 유지하고 기본 계정을 전문적으로 보이게 유지할 수 있습니다. 시간이 많이 걸리고 우리가 트위터에 대신 사용할 수 있는 시간을 명백하게 잘못 사용하고 소셜 미디어 영향력자가 되는 길에 있습니다.

어떻게? 시작하는 데 필요한 사항은 다음과 같습니다.



GitHub API를 사용하여 이 작업을 자동화할 것입니다. 🤖 스크립트용 가상 환경이 있는 Python과 API와 통신하기 위한 요청 라이브러리입니다.
  • 먼저 GitHub으로 이동하여 개발자 설정 페이지에서 개인 액세스 토큰을 생성하십시오. 이 페이지에서 새 토큰 생성을 클릭하고 토큰에 이름을 지정하고 필요한 범위를 선택하십시오. 이 유틸리티를 확장할 계획이므로 모든 repo 범위를 선택했습니다. 범위에 대한 자세한 내용은 docs을 참조하십시오.



  • 토큰을 복사하고 curl로 빠르게 테스트합니다.

    ~ $ GITHUB_TOKEN="access_token"
    ~ $ curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/gists
    


    제대로 작동했다면 모든 공개 요지 목록과 함께 유사한 안식을 받아야 합니다.

    [
     {
        "url": "https://api.github.com/gists/4d5ab8adff9fc8b4cdf7d8e9dfa442c7",
        "forks_url": "https://api.github.com/gists/4d5ab8adff9fc8b4cdf7d8e9dfa442c7/forks",
        "commits_url": "https://api.github.com/gists/4d5ab8adff9fc8b4cdf7d8e9dfa442c7/commits",
        "id": "4d5ab8adff9fc8b4cdf7d8e9dfa442c7",
        "node_id": "MDQ6R2lzdDRkNWFiOGFkZmY5ZmM4YjRjZGY3ZDhlOWRmYTQ0MmM3",
        "git_pull_url": "https://gist.github.com/4d5ab8adff9fc8b4cdf7d8e9dfa442c7.git",
        "git_push_url": "https://gist.github.com/4d5ab8adff9fc8b4cdf7d8e9dfa442c7.git",
        "html_url": "https://gist.github.com/4d5ab8adff9fc8b4cdf7d8e9dfa442c7",
        "files": {
          "views.py": {
            "filename": "views.py",
            "type": "application/x-python",
            "language": "Python",
            "raw_url": "https://gist.githubusercontent.com/jqn/4d5ab8adff9fc8b4cdf7d8e9dfa442c7/raw/7acabeae8db34dcae72fbb1dbb002557a70632ef/views.py",
            "size": 347
          }
        },
    ...
    ]
    


  • 두 번째로 필요한 것은 가상 환경입니다. 초보자이거나 이 작업을 수행하는 방법을 잘 모르는 경우 이 문서를 읽어보십시오Learn How To Get Started With Flask Flask를 시작하는 데 적합하지만 로컬 Python 개발 환경을 구성하는 방법에 대해 설명합니다.

  • 내가 사용virtualenvwrapper

    $ mkdir ~/www/automation
    $ cd ~/www/automation
    $ mkvirtualenv automation_hacks
    (automation) $ automation
    


    이제 가상 환경이 준비되었으므로 코딩을 시작하겠습니다.
  • 새 Python 스크립트를 생성하고 필요한 패키지를 설치합니다. 자동화 디렉터리 내에서 다음 명령을 실행합니다.

  • $ touch github_hacks.py
    $ pip install requests
    $ pip freeze > requirements.txt
    


    현재 디렉토리 구조입니다.

    automation
    ├── github_hacks.py
    └── requirements.txt
    


    그리고 VSCode

    $ code github_hacks.py
    


    VSCode은 이 단계에 필요하지 않으므로 원하는 텍스트 편집기를 자유롭게 사용하십시오.
  • 그리고 이제 "코드"

  • import requests
    import sys
    from pprint import pprint
    import json
    
    token = "access_token"
    owner = sys.argv[1]
    repo = sys.argv[2]
    new_owner = sys.argv[3]
    
    
    query_url = f"https://api.github.com/repos/{owner}/{repo}/transfer"
    
    headers = {'Authorization': f'token {token}',
               'Accept': 'application/vnd.github.v3+json'}
    params = {
        'new_owner': new_owner,
    }
    
    r = requests.post(query_url, headers=headers, data=json.dumps(params))
    
    pprint(r.json())
    
    


  • 마지막으로 다음과 같이 실행할 수 있습니다.
  • $ python github_hacks.py owner repo new_owner
    GitHub로 돌아가면 리포지토리가 새 소유자에게 이전되었습니다.

    현재 이 스크립트는 한 번에 단일 Repo를 사용하지만 여러 Repo를 사용하여 다른 소유자/조직으로 전송하도록 확장할 수 있습니다.

    이는 자신이 소유한 조직으로 이전할 때 가장 효과적입니다. 새 소유자에게 이전하는 경우 소유자가 먼저 이전을 수락해야 합니다.

    트라이아웃PyGithub을 했지만 현재는 전송 저장소 기능이 없습니다. Github APIdocs에 나열된 다른 사용 준비가 된 라이브러리도 있지만 대부분 이 문서를 작성하는 시점에서 구식입니다.

    질문? 문제? 주저하지 말고 아래에 연락하거나 의견을 말하십시오.

    자원



    Github Developer - Scopes

    Github Rest API

    requests

    f-string Formatting in Python

    좋은 웹페이지 즐겨찾기