Search code examples
pythongitlabpygithub

How to place a created file in an existed GITLAB repository through python


I have created a text file using file operations in python. I want the file to be pushed to my existed GITLAB repository.

I have tried the below code where i get the created file in my local folders.

file_path = 'E:\My material\output.txt'
k= 'Fail/Pass'
with open (file_path, 'w+') as text:
    text.write('Test case :' +k)
    text.close() 

What is the process or steps or any modifications in file_path to move the created text file to the GITLAB repository through python code.


Solution

  • Using python gitlab module :

    We can push the file to the gitlab,but you need to follow the below steps:

    Step 1) Clone the repository to your local

    Step 2) Add the file to the clonned repository

    Step 3) Push the code to the gitlab

    code:

    import gitlab  
    import base64
    from gitlab import Gitlab
    import shutil
    
    callbacks = pygit2.RemoteCallbacks(pygit2.UserPass("Your_private_token", 'x-oauth-basic'))
    repoClone = pygit2.clone_repository("https://gitlab.com/group/"+api_name+".git", local_clone_path,checkout_branch=target_branch,callbacks=callbacks)  # clonning the repo to local
    shutil.copy(src,dst_clone_repo_path)   #copy your file to the cloned repo
    repoClone.remotes.set_url("origin", "https://gitlab.com/group/"+api_name+".git")
    index = repoClone.index
    index.add_all()
    index.write()
    tree = index.write_tree()
    oid = repoClone.create_commit('refs/heads/'+target_branch, author, commiter, "init commit",tree,[repoClone.head.peel().hex])
    remote = repoClone.remotes["origin"]
    credentials = pygit2.UserPass("your_private_token", 'x-oauth-basic')  # passing credentials
    remote.credentials = credentials
    remote.push(['refs/heads/'+target_branch],callbacks=callbacks) # push the code to the gitlab repo