Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Replace parsing of git commands output with ruby-git library #23

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

jamietanna
Copy link

@jamietanna jamietanna commented Oct 7, 2018

Instead of parsing output of git commands, which are liable to change
over time, we want to instead use a library, in this case ruby-git,
which gives us a more straightforward interface.

Note that this is a first pass, and is NOT currently ready for merge - this is looking for early feedback. Currently outstanding:

Not sure whether in this PR or a follow-up, but perhaps refactoring the generation of the relevant data at #generate time to grab all the history details of the files in the repo and caching them, rather than iterating multiple times (which could be slow for a large repo).

As mentioned in #6, this will be a breaking change due to a change in how merge commits are dealt with.

Merge commits show the parent commit (from the branch) rather than the
actual merge commit itself. However, this isn't covered by any test
cases.

This requires some refactoring to allow the `dot_git_path` to change, as
well as ensuring that we always clean out the `.git` directory in our
`test_repo` so we always have a clean working state, instead of risking
contamination between test runs.

Note that we need the `.gitkeep` file in `refs/heads` as the folder is
empty, but Git needs that folder to exist, otherwise it won't be
recognised as a Git repo.
Instead of parsing output of `git` commands, which are liable to change
over time, we want to instead use a library, in this case `ruby-git`,
which gives us a more straightforward interface.

Use an instance variable to ensure we're only using a shared object
that's set up and read once.

Pull minor bumps on the ruby-git library, as they will be backwards
compatible via SemVer conventions.

Notice that merge commits are treated differently now - we're picking up
the actual merge commit, rather than the parent, as was seen previously.
WIP as tests are currently broken
Instead of returning whatever SHA we were given, which may not always be
the short SHA, we should instead return a trimmed SHA.

7 is currently the default in Git, but in some projects it has been
upped.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant