Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven - Error Releasing Code to GitHub (Hangs After Push)

Tags:

I'm attempting to run the mvn release:prepare goal and it's hanging after the push. Any idea what I could be doing wrong?

[INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] BUILD SUCCESSFUL [INFO] [INFO] ------------------------------------------------------------------------ [INFO] [INFO] Total time: 8 seconds [INFO] [INFO] Finished at: Tue Jul 13 23:54:59 PDT 2010 [INFO] [INFO] Final Memory: 55M/294M [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Checking in modified POMs... [INFO] Executing: cmd.exe /X /C "git add -- pom.xml" [INFO] Working directory: C:\development\taylor\my-app [INFO] Executing: cmd.exe /X /C "git status" [INFO] Working directory: C:\development\taylor\my-app [INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\TAYLOR~1\AppData\Local\Temp\maven-scm-1932347225.commit pom.xml" [INFO] Working directory: C:\development\taylor\my-app [INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD" [INFO] Working directory: C:\development\taylor\my-app [INFO] Executing: cmd.exe /X /C "git push [email protected]:tleese22/my-app.git master:master" [INFO] Working directory: C:\development\taylor\my-app >>>> hangs here <<<< 

Below is the SCM section of my pom.xml:

<scm>     <connection>scm:git:git://github.com/tleese22/my-app.git</connection>     <developerConnection>scm:git:[email protected]:tleese22/my-app.git</developerConnection>     <url>http://github.com/tleese22/my-app</url> </scm>  ...  <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-release-plugin</artifactId>     <version>2.0</version> </plugin> 

Below is my .git/config:

[core]     repositoryformatversion = 0     filemode = true     logallrefupdates = true     bare = false [branch "master"]     remote = origin     merge = refs/heads/master [remote "origin"]     url = [email protected]:tleese22/my-app.git     fetch = +refs/heads/*:refs/remotes/origin/*     pushurl = [email protected]:tleese22/my-app.git 

Here's the result of git show origin:

$ git remote show origin Enter passphrase for key '/c/Users/Taylor Leese/.ssh/id_rsa': * remote origin   Fetch URL: [email protected]:tleese22/my-app.git   Push  URL: [email protected]:tleese22/my-app.git   HEAD branch: master   Remote branches:     gh-pages new (next fetch will store in remotes/origin)     master   new (next fetch will store in remotes/origin)   Local branch configured for 'git pull':     master merges with remote master   Local ref configured for 'git push':     master pushes to master (up to date)  $ git status # On branch master nothing to commit (working directory clean) 
like image 539
Taylor Leese Avatar asked Jul 14 '10 06:07

Taylor Leese


1 Answers

I have run into the same problem and I traced this to the fact that git is requiring a passphrase, but Maven has no way to specify an appropriate passphrase, so the process essentially hangs. Note that this problem is limited to Windows.

The solution is to run ssh-agent. This can be found in C:\Program Files (x86)\Git\bin\. After you run it, it outputs some environment variables that you need to set. For example:

SSH_AUTH_SOCK=/tmp/ssh-LhiYjP7924/agent.7924; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2792; export SSH_AGENT_PID;
echo Agent pid 2792;

So, you need to place these in your environment:

C:\> set SSH_AUTH_SOCK=/tmp/ssh-LhiYjP7924/agent.7924
C:\> set SSH_AGENT_PID=2792

Then, you will need to add a passphrase for your particular key file. Generally, if you issued a command like git fetch origin master for your project, you will get a passphrase prompt like: Enter passphrase for key '/c/Users/Anthony Whitford/.ssh/id_rsa' -- that is the file that you need to register with the agent. So, the command is:

C:\> ssh-add "/c/Users/Anthony Whitford/.ssh/id_rsa"

It will prompt you for a passphrase, so enter it. You should see an Identity added message. Now, the agent knows the passphrase so that you will not be prompted to specify it anymore.

If you have multiple instances of command prompts, make sure that each command prompt has the appropriate SSH_AUTH_SOCK and SSH_AGENT_PID environment variables set. You can validate that this is working by running a command like ssh -v [email protected] and if you DO NOT get prompted for a passphrase, it is working!

Note that when you logoff, the ssh-agent will shut down and so when you log back in or restart your computer, you will need to repeat these steps. My understanding is that your passphrase is stored in memory, not persisted to disk, for security reasons.

like image 137
AWhitford Avatar answered Oct 19 '22 13:10

AWhitford