From d3dc2259205cf50a2464e8690010bd69b2612894 Mon Sep 17 00:00:00 2001
From: Peter Evans <peter-evans@users.noreply.github.com>
Date: Fri, 6 Dec 2019 17:06:14 +0900
Subject: [PATCH 1/2] Add inputs for committer-name and committer-email

---
 action.yml                      |  8 ++++++--
 dist/index.js                   |  8 ++++++--
 dist/src/create-pull-request.py | 29 +++++++++++++++++------------
 index.js                        |  8 ++++++--
 package-lock.json               |  2 +-
 package.json                    |  2 +-
 src/create-pull-request.py      | 29 +++++++++++++++++------------
 7 files changed, 54 insertions(+), 32 deletions(-)

diff --git a/action.yml b/action.yml
index 7d0fd6e..599430d 100644
--- a/action.yml
+++ b/action.yml
@@ -6,10 +6,14 @@ inputs:
     required: true
   commit-message:
     description: 'The message to use when committing changes.'
-  author-email:
-    description: 'The email address of the commit author.'
   author-name:
     description: 'The name of the commit author.'
+  author-email:
+    description: 'The email address of the commit author.'
+  committer-name:
+    description: 'The name of the committer.'
+  committer-email:
+    description: 'The email address of the committer.'
   title:
     description: 'The title of the pull request.'
   body:
diff --git a/dist/index.js b/dist/index.js
index 63de897..48d46f2 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -978,8 +978,10 @@ async function run() {
     const inputs = {
       token: core.getInput("token"),
       commitMessage: core.getInput("commit-message"),
-      commitAuthorEmail: core.getInput("author-email"),
       commitAuthorName: core.getInput("author-name"),
+      commitAuthorEmail: core.getInput("author-email"),
+      committerName: core.getInput("committer-name"),
+      committerEmail: core.getInput("committer-email"),
       title: core.getInput("title"),
       body: core.getInput("body"),
       labels: core.getInput("labels"),
@@ -999,8 +1001,10 @@ async function run() {
     // Set environment variables from inputs.
     if (inputs.token) process.env.GITHUB_TOKEN = inputs.token;
     if (inputs.commitMessage) process.env.COMMIT_MESSAGE = inputs.commitMessage;
-    if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail;
     if (inputs.commitAuthorName) process.env.COMMIT_AUTHOR_NAME = inputs.commitAuthorName;
+    if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail;
+    if (inputs.committerName) process.env.COMMITTER_NAME = inputs.committerName;
+    if (inputs.committerEmail) process.env.COMMITTER_EMAIL = inputs.committerEmail;
     if (inputs.title) process.env.PULL_REQUEST_TITLE = inputs.title;
     if (inputs.body) process.env.PULL_REQUEST_BODY = inputs.body;
     if (inputs.labels) process.env.PULL_REQUEST_LABELS = inputs.labels;
diff --git a/dist/src/create-pull-request.py b/dist/src/create-pull-request.py
index 3b2a458..ad79795 100755
--- a/dist/src/create-pull-request.py
+++ b/dist/src/create-pull-request.py
@@ -44,12 +44,6 @@ def get_author_default(event_name, event_data):
     return email, name
 
 
-def set_git_config(git, email, name):
-    print("Configuring git user as '%s <%s>'" % (name, email))
-    git.config("--global", "user.email", '"%s"' % email)
-    git.config("--global", "user.name", '"%s"' % name)
-
-
 def set_git_remote_url(git, token, github_repository):
     git.remote(
         "set-url",
@@ -229,15 +223,26 @@ event_name = os.environ["GITHUB_EVENT_NAME"]
 # Get the JSON event data
 event_data = get_github_event(os.environ["GITHUB_EVENT_PATH"])
 
-# Set the repo to the working directory
-repo = Repo(os.getcwd())
 # Get the default for author email and name
 author_email, author_name = get_author_default(event_name, event_data)
-# Set commit author overrides
-author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email)
+# Set author name and email overrides
 author_name = os.getenv("COMMIT_AUTHOR_NAME", author_name)
-# Set git configuration
-set_git_config(repo.git, author_email, author_name)
+author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email)
+# Set committer name and email overrides
+committer_name = os.getenv("COMMITTER_NAME", author_name)
+committer_email = os.getenv("COMMITTER_EMAIL", author_email)
+
+# Set the repo to the working directory
+repo = Repo(os.getcwd())
+# Set git environment. This will not persist after the action completes.
+print("Configuring git author as '%s <%s>'" % (author_name, author_email))
+print("Configuring git committer as '%s <%s>'" % (committer_name, committer_email))
+repo.git.update_environment(
+    GIT_AUTHOR_NAME=author_name,
+    GIT_AUTHOR_EMAIL=author_email,
+    GIT_COMMITTER_NAME=committer_name,
+    GIT_COMMITTER_EMAIL=committer_email,
+)
 # Update URL for the 'origin' remote
 set_git_remote_url(repo.git, github_token, github_repository)
 
diff --git a/index.js b/index.js
index 8fe3039..e95f469 100644
--- a/index.js
+++ b/index.js
@@ -23,8 +23,10 @@ async function run() {
     const inputs = {
       token: core.getInput("token"),
       commitMessage: core.getInput("commit-message"),
-      commitAuthorEmail: core.getInput("author-email"),
       commitAuthorName: core.getInput("author-name"),
+      commitAuthorEmail: core.getInput("author-email"),
+      committerName: core.getInput("committer-name"),
+      committerEmail: core.getInput("committer-email"),
       title: core.getInput("title"),
       body: core.getInput("body"),
       labels: core.getInput("labels"),
@@ -44,8 +46,10 @@ async function run() {
     // Set environment variables from inputs.
     if (inputs.token) process.env.GITHUB_TOKEN = inputs.token;
     if (inputs.commitMessage) process.env.COMMIT_MESSAGE = inputs.commitMessage;
-    if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail;
     if (inputs.commitAuthorName) process.env.COMMIT_AUTHOR_NAME = inputs.commitAuthorName;
+    if (inputs.commitAuthorEmail) process.env.COMMIT_AUTHOR_EMAIL = inputs.commitAuthorEmail;
+    if (inputs.committerName) process.env.COMMITTER_NAME = inputs.committerName;
+    if (inputs.committerEmail) process.env.COMMITTER_EMAIL = inputs.committerEmail;
     if (inputs.title) process.env.PULL_REQUEST_TITLE = inputs.title;
     if (inputs.body) process.env.PULL_REQUEST_BODY = inputs.body;
     if (inputs.labels) process.env.PULL_REQUEST_LABELS = inputs.labels;
diff --git a/package-lock.json b/package-lock.json
index 7962fc7..89d5da6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "create-pull-request",
-  "version": "1.7.0",
+  "version": "1.8.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
diff --git a/package.json b/package.json
index 1555b6a..b8f6a16 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "create-pull-request",
-  "version": "1.8.0",
+  "version": "1.9.0",
   "description": "Creates a pull request for changes to your repository in the actions workspace",
   "main": "index.js",
   "scripts": {
diff --git a/src/create-pull-request.py b/src/create-pull-request.py
index 3b2a458..ad79795 100755
--- a/src/create-pull-request.py
+++ b/src/create-pull-request.py
@@ -44,12 +44,6 @@ def get_author_default(event_name, event_data):
     return email, name
 
 
-def set_git_config(git, email, name):
-    print("Configuring git user as '%s <%s>'" % (name, email))
-    git.config("--global", "user.email", '"%s"' % email)
-    git.config("--global", "user.name", '"%s"' % name)
-
-
 def set_git_remote_url(git, token, github_repository):
     git.remote(
         "set-url",
@@ -229,15 +223,26 @@ event_name = os.environ["GITHUB_EVENT_NAME"]
 # Get the JSON event data
 event_data = get_github_event(os.environ["GITHUB_EVENT_PATH"])
 
-# Set the repo to the working directory
-repo = Repo(os.getcwd())
 # Get the default for author email and name
 author_email, author_name = get_author_default(event_name, event_data)
-# Set commit author overrides
-author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email)
+# Set author name and email overrides
 author_name = os.getenv("COMMIT_AUTHOR_NAME", author_name)
-# Set git configuration
-set_git_config(repo.git, author_email, author_name)
+author_email = os.getenv("COMMIT_AUTHOR_EMAIL", author_email)
+# Set committer name and email overrides
+committer_name = os.getenv("COMMITTER_NAME", author_name)
+committer_email = os.getenv("COMMITTER_EMAIL", author_email)
+
+# Set the repo to the working directory
+repo = Repo(os.getcwd())
+# Set git environment. This will not persist after the action completes.
+print("Configuring git author as '%s <%s>'" % (author_name, author_email))
+print("Configuring git committer as '%s <%s>'" % (committer_name, committer_email))
+repo.git.update_environment(
+    GIT_AUTHOR_NAME=author_name,
+    GIT_AUTHOR_EMAIL=author_email,
+    GIT_COMMITTER_NAME=committer_name,
+    GIT_COMMITTER_EMAIL=committer_email,
+)
 # Update URL for the 'origin' remote
 set_git_remote_url(repo.git, github_token, github_repository)
 

From 83fef4e8a1e98d77252097e8ed5d0df77857666c Mon Sep 17 00:00:00 2001
From: Peter Evans <peter-evans@users.noreply.github.com>
Date: Fri, 6 Dec 2019 18:36:27 +0900
Subject: [PATCH 2/2] Update README

---
 README.md | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 8e98db2..79274b3 100644
--- a/README.md
+++ b/README.md
@@ -36,8 +36,10 @@ These inputs are *all optional*. If not set, sensible default values will be use
 | Name | Description | Default |
 | --- | --- | --- |
 | `commit-message` | The message to use when committing changes. | `Auto-committed changes by create-pull-request action` |
-| `author-email` | The email address of the commit author. | For `push` events, the HEAD commit author. Otherwise, <GITHUB_ACTOR>@users.noreply.github.com, where `GITHUB_ACTOR` is the GitHub user that initiated the event. |
 | `author-name` | The name of the commit author. | For `push` events, the HEAD commit author. Otherwise, <GITHUB_ACTOR>, the GitHub user that initiated the event. |
+| `author-email` | The email address of the commit author. | For `push` events, the HEAD commit author. Otherwise, <GITHUB_ACTOR>@users.noreply.github.com, where `GITHUB_ACTOR` is the GitHub user that initiated the event. |
+| `committer-name` | The name of the committer. | Defaults to match `author-name` |
+| `committer-email` | The email address of the committer. | Defaults to match `author-email` |
 | `title` | The title of the pull request. | `Auto-generated by create-pull-request action` |
 | `body` | The body of the pull request. | `Auto-generated pull request by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub Action` |
 | `labels` | A comma separated list of labels. | |
@@ -91,6 +93,21 @@ To use this strategy, set `branch-suffix` to the value `none`. The input `branch
 
 If there are files or directories you want to ignore you can simply add them to a `.gitignore` file at the root of your repository. The action will respect this file.
 
+### Commit as github-actions[bot]
+
+You can make commits that appear to be made by the GitHub Actions bot as follows.
+
+```yml
+      - name: Create Pull Request
+        uses: peter-evans/create-pull-request@v1
+        with:
+          token: ${{ secrets.GITHUB_TOKEN }}
+          author-name: github-actions[bot]
+          author-email: 41898282+github-actions[bot]@users.noreply.github.com
+          committer-name: GitHub
+          committer-email: noreply@github.com
+```
+
 ## Reference Example
 
 The following workflow is a reference example that sets all the main inputs.