Gazler
Joined 15 years ago
Joined 15 years ago
Try stuff
Another prototype
Fix something
...
Revert prototype
It is fairly common (in my experience) for the contributor to be asked to squash those commits.In my opinion, the more guards in place the better.
I think there are several avenues that could be explored with this. I wanted to stay away from explicitly checking the code initially, as there are other tools aimed at that specific task, however there is no reason something like this couldn't be added into GitCop at a later date.
I had the idea of checking that the user exists in a list of users by specifying a JSON list of users. This means that it could be used to check if a CLA has been signed, but there are other applications too. Does this seem like a reasonable way to do it?
I like the idea of ensuring a test has been added, not sure how to tackle it, but it is certainly worth keeping in mind.
So the match is exact between the non %{..} characters. The idea for scope is the context of the commit, in my libraries I use the name of the class as the scope.
For example with the default format string:
test string: "fix(User): ensure email address is required"
format: "%{type}(%{scope}): %{description}"
[type: "fix", scope: "User", description: "ensure email address is required"]
So any literal characters are matched exactly and anything inside the capturing %{...} is assigned to that variable.This does fall over in the following case:
"fix():(User): ensure email address is required"
"%{type}(%{scope}): %{description}"
[type: "fix", scope: "):(User", description: "ensure email address is required"]
It is certainly a candidate for improvement in the future.Currently the string for the format only allows the 3 defined variables, type, scope and description. I have been using this style at https://github.com/Gazler/changex/commits/master to give you an idea of how it works.
I was concerned that the format string might be a little weird to get from the help. I will try and clear this up a bit.
I have attempted to build the string that you requested, currently an or separator is not supported, but I can take a look at adding it in.
Here are the format strings that I think match your use case. Using a colon as a separator:
test string: "Fixes #1234: foo"
format: "%{type} #%{scope}: %{description}"
[type: "Fixes", scope: "1234", description: "foo"]
Using a hyphen as a separator: test string: "Fixes #1234 - foo"
format: "%{type} #%{scope} - %{description}"
[type: "Fixes", scope: "1234", description: "foo"]
I hope this makes sense, let me know if you get it working!The goal for GitCop is to be fast and easy to set up in a way that integrates well into a GitHub pull request based flow.
An example of the messages GitCop outputs can be seen at https://github.com/Gazler/gitcop-test/pull/2 if you are interested.
The master version of Elixir also has support for releases https://hexdocs.pm/mix/master/Mix.Tasks.Release.html