Skip to content

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

Open
jamietanna wants to merge 4 commits into
ivantsepp:masterfrom
jamietanna:feature/ruby-git-library
Open

WIP: Replace parsing of git commands output with ruby-git library#23
jamietanna wants to merge 4 commits into
ivantsepp:masterfrom
jamietanna:feature/ruby-git-library

Conversation

@jamietanna
Copy link
Copy Markdown

@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