-
-
Notifications
You must be signed in to change notification settings - Fork 954
-
Hi,
I have no idea how to write a functions without committing and sending code, if there are no changes and it's an empty commit.
from git import Repo, Actor repo = Repo(full_path) assert not repo.bare origin = repo.remote('origin') assert origin.exists() assert origin == repo.remotes.origin == repo.remotes['origin'] origin.pull() repo.git.add(f'{full_path}/file_list.txt') repo.git.add(f'{full_path}/files/') repo.index.commit(f'Time now: {time_now}') origin.push()
Currently, after running such code, a commit is created with no changes to the files. I can't find any function that checks for any changes before commit after adding files. I don't mean changes to all code and to all files in the main .git folder, but changes to one file and one folder with many files.
I am also looking for a solution other than using untracked_files
in a loop looking to see if my needed files are there.
Beta Was this translation helpful? Give feedback.
All reactions
A commit has a link to a tree, which identifies the state of all files contained with it.
Thus, if the tree hash does not change between commits, they refer to the same state.
I believe one can get a handle on a tree with commit.tree
.
Even though I am closing the issue, please feel free to keep posting here for any follow ups.
Replies: 2 comments
-
A commit has a link to a tree, which identifies the state of all files contained with it.
Thus, if the tree hash does not change between commits, they refer to the same state.
I believe one can get a handle on a tree with commit.tree
.
Even though I am closing the issue, please feel free to keep posting here for any follow ups.
Beta Was this translation helpful? Give feedback.
All reactions
-
Thanks for the answer. I was able to find such a solution. I don't know if it's completely correct but it's important that it works.
from git import Repo, Actor repo = Repo(full_path) assert not repo.bare origin = repo.remote('origin') assert origin.exists() assert origin == repo.remotes.origin == repo.remotes['origin'] origin.pull() repo.git.add(f'{full_path}/file_list.txt') repo.git.add(f'{full_path}/files/') if len(repo.index.diff('HEAD')) > 0: repo.index.commit(f'Time now: {time_now}') origin.push()
Beta Was this translation helpful? Give feedback.