Unity icon indicating copy to clipboard operation
Unity copied to clipboard

Add support for GPG signatures

Open MythicManiac opened this issue 7 years ago • 2 comments

Description

Committing via GitHub for Unity fails if GPG signing commits is enabled. Committing via git bash (and entering password to prompt) works. Disabling GPG signing in the .gitconfig file resolves the issue.

Logs:

180630-22:23:59.201  INFO [ 1] <Global>                            Initializing GitHubForUnity:'v1.0.0rc4' Unity:'v2018.1.5f1'
180630-22:23:59.613  INFO [ 3] <Global>                            Skipping GitHub for Unity update v1.0.0
180630-22:24:02.935  INFO [ 1] <Global>                            Initializing GitHubForUnity:'v1.0.0rc4' Unity:'v2018.1.5f1'
180630-22:24:11.433 ERROR [14] <IApplicationManager>               A problem ocurred initializing the repository
GitHub.Unity.ProcessException: gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object
  at GitHub.Unity.ProcessTask`1+<RunWithReturn>c__AnonStorey0[System.String].<>m__1 () [0x0013e] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:371 
  at GitHub.Unity.ProcessWrapper.Run () [0x00424] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:199 
  at GitHub.Unity.ProcessTask`1[T].RunWithReturn (Boolean success) [0x00061] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:380 
  at GitHub.Unity.TaskBase`1[TResult].RunSynchronously () [0x0007c] in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskBase.cs:685 
  at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4 () [0x0014a] in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:260 
=======
   at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4() in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:line 266
180630-22:24:21.242 ERROR [15] <IApplicationManager>               A problem ocurred initializing the repository
GitHub.Unity.ProcessException: gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object
  at GitHub.Unity.ProcessTask`1+<RunWithReturn>c__AnonStorey0[System.String].<>m__1 () [0x0013e] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:371 
  at GitHub.Unity.ProcessWrapper.Run () [0x00424] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:199 
  at GitHub.Unity.ProcessTask`1[T].RunWithReturn (Boolean success) [0x00061] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:380 
  at GitHub.Unity.TaskBase`1[TResult].RunSynchronously () [0x0007c] in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskBase.cs:685 
  at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4 () [0x0014a] in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:260 
=======
   at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4() in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:line 266
180630-22:24:43.351 ERROR [16] <IApplicationManager>               A problem ocurred initializing the repository
GitHub.Unity.ProcessException: gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object
  at GitHub.Unity.ProcessTask`1+<RunWithReturn>c__AnonStorey0[System.String].<>m__1 () [0x0013e] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:371 
  at GitHub.Unity.ProcessWrapper.Run () [0x00424] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:199 
  at GitHub.Unity.ProcessTask`1[T].RunWithReturn (Boolean success) [0x00061] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:380 
  at GitHub.Unity.TaskBase`1[TResult].RunSynchronously () [0x0007c] in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskBase.cs:685 
  at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4 () [0x0014a] in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:260 
=======
   at GitHub.Unity.ApplicationManagerBase.<InitializeRepository>m__4() in D:\code\github\Unity\src\GitHub.Api\Application\ApplicationManagerBase.cs:line 266
180630-22:27:20.361 ERROR [33] <TaskManager>                       Exception on exclusive thread: 1 -c i18n.commitencoding=utf8 commit --file "C:\Users\Mythic\AppData\Local\Temp\GitCommitTask_1035894417"
GitHub.Unity.ProcessException: gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object
  at GitHub.Unity.ProcessTask`1+<RunWithReturn>c__AnonStorey0[System.String].<>m__1 () [0x0013e] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:371 
  at GitHub.Unity.ProcessWrapper.Run () [0x00424] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:199 
  at GitHub.Unity.ProcessTask`1[T].RunWithReturn (Boolean success) [0x00061] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:380 
  at GitHub.Unity.TaskBase`1[TResult].RunSynchronously () [0x0007c] in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskBase.cs:685 
  at System.Threading.Tasks.Task`1[System.String].InvokeFuture (System.Object futureAsObj) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.Execute () [0x00000] in <filename unknown>:0 
=======
   at GitHub.Unity.TaskManager+<ScheduleExclusive>c__AnonStorey1`1[[GitHub.Unity.TaskBase, GitHub.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].<>m__0(System.Threading.Tasks.Task tt) in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskManager.cs:line 116
   at System.Threading.Tasks.Task+<>c__DisplayClass6.<ContinueWith>b__5(System.Object obj)
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at System.Threading.Tasks.Task.ExecutionContextCallback(System.Object obj)
   at System.Security.SecurityContext.Run(System.Security.SecurityContext securityContext, System.Threading.ContextCallback callback, System.Object state) in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Security/SecurityContext.cs:line 150
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Threading/ExecutionContext.cs:line 150
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef currentTaskSlot)
   at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)
   at System.Threading.Tasks.TaskScheduler.TryExecuteTask(System.Threading.Tasks.Task task)
   at GitHub.Unity.ThreadPerTaskScheduler+<QueueTask>c__AnonStorey0.<>m__0() in D:\code\github\Unity\src\GitHub.Api\Tasks\ConcurrentExclusiveInterleave.cs:line 440
180630-22:28:25.088  INFO [ 1] <Global>                            Trace Logging Enabled
180630-22:28:25.937 TRACE [ 1] <GitStatusCache>                    needsInvalidation isInitialized:True timedOut:True
180630-22:28:25.945 TRACE [ 1] <GitLocksCache>                     needsInvalidation isInitialized:True timedOut:True
180630-22:28:25.946 TRACE [41] <ProcessWrapper>                    Running 'C:\Program Files\Git\bin\git.exe -c i18n.logoutputencoding=utf8 -c core.quotepath=false status -b -u --porcelain'
180630-22:28:31.014 TRACE [44] <ProcessWrapper>                    Running 'C:\Program Files\Git\bin\git.exe add -A'
180630-22:28:31.179 TRACE [44] <ProcessWrapper>                    Running 'C:\Program Files\Git\bin\git.exe -c i18n.commitencoding=utf8 commit --file "C:\Users\Mythic\AppData\Local\Temp\GitCommitTask_1643723965"'
180630-22:28:31.301 TRACE [45] <ProcessWrapper>                    gpg: cannot open tty `no tty': No such file or directory
180630-22:28:31.316 TRACE [46] <ProcessWrapper>                    error: gpg failed to sign the data
180630-22:28:31.323 TRACE [46] <ProcessWrapper>                    fatal: failed to write commit object
180630-22:28:31.429 TRACE [44] <RepositoryWatcher>                 Watching Path: "D:\Unity\Akard"
180630-22:28:31.443 TRACE [44] <RepositoryWatcher>                 Watching Path: "D:\Unity\Akard"
180630-22:28:31.457 ERROR [48] <TaskManager>                       Exception on exclusive thread: 2 -c i18n.commitencoding=utf8 commit --file "C:\Users\Mythic\AppData\Local\Temp\GitCommitTask_1643723965"
GitHub.Unity.ProcessException: gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object
  at GitHub.Unity.ProcessTask`1+<RunWithReturn>c__AnonStorey0[System.String].<>m__1 () [0x0013e] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:371 
  at GitHub.Unity.ProcessWrapper.Run () [0x00424] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:199 
  at GitHub.Unity.ProcessTask`1[T].RunWithReturn (Boolean success) [0x00061] in D:\code\github\Unity\src\GitHub.Api\Tasks\ProcessTask.cs:380 
  at GitHub.Unity.TaskBase`1[TResult].RunSynchronously () [0x0007c] in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskBase.cs:685 
  at System.Threading.Tasks.Task`1[System.String].InvokeFuture (System.Object futureAsObj) [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00000] in <filename unknown>:0 
  at System.Threading.Tasks.Task.Execute () [0x00000] in <filename unknown>:0 
=======
   at GitHub.Unity.TaskManager+<ScheduleExclusive>c__AnonStorey1`1[[GitHub.Unity.TaskBase, GitHub.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].<>m__0(System.Threading.Tasks.Task tt) in D:\code\github\Unity\src\GitHub.Api\Tasks\TaskManager.cs:line 116
   at System.Threading.Tasks.Task+<>c__DisplayClass6.<ContinueWith>b__5(System.Object obj)
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
   at System.Threading.Tasks.Task.ExecutionContextCallback(System.Object obj)
   at System.Security.SecurityContext.Run(System.Security.SecurityContext securityContext, System.Threading.ContextCallback callback, System.Object state) in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Security/SecurityContext.cs:line 150
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Threading/ExecutionContext.cs:line 150
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef currentTaskSlot)
   at System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)
   at System.Threading.Tasks.TaskScheduler.TryExecuteTask(System.Threading.Tasks.Task task)
   at GitHub.Unity.ThreadPerTaskScheduler+<QueueTask>c__AnonStorey0.<>m__0() in D:\code\github\Unity\src\GitHub.Api\Tasks\ConcurrentExclusiveInterleave.cs:line 440
180630-22:28:31.465 TRACE [49] <ProcessWrapper>                    Running 'C:\Program Files\Git\bin\git.exe -c i18n.logoutputencoding=utf8 -c core.quotepath=false log --pretty=format:"%H%n%P%n%aN%n%aE%n%aI%n%cN%n%cE%n%cI%n%B---GHUBODYEND---" --name-status'
180630-22:28:31.466 TRACE [50] <ProcessWrapper>                    Running 'C:\Program Files\Git\bin\git.exe -c i18n.logoutputencoding=utf8 -c core.quotepath=false status -b -u --porcelain'

Steps to Reproduce

  1. Enable GPG signing in ~/.gitconfig (User's home folder) by adding the following:
[commit]
	gpgsign = true
  1. Attempt to commit using GitHub for Unity

Expected behavior: Be prompted for passphrase on commit. After inputting a valid passphrase, a commit should happen.

Actual behavior: Nothing is committed (due to gpg sign failure?)

Reproduces how often: 100%

Additional Information

Environment:

  • Windows 10
  • Unity version 2018.1.5f1

MythicManiac avatar Jun 30 '18 19:06 MythicManiac

@MythicManiac Ah, yes, the passphrase prompt on commit is going to make the process fail at the moment. git has the annoying habit of prompting on a separate console host which bypasses any stdout redirection we set up - i.e. we never receive the prompt text when we run the command, so we have no clue git is waiting for input, and it eventually fails. I've been actively working on fixing this, I'll add gpg signing to my tests.

shana avatar Jul 04 '18 13:07 shana

~~Any update on this !?~~

Nevermind, changed git to my systems git and now signs.

JaxkDev avatar Apr 21 '20 13:04 JaxkDev