Browse Source

Make the github post receive hook mark auto-updated packages even if they do not have changes when it triggers

Jordi Boggiano 13 years ago
parent
commit
f7c73f714c
2 changed files with 4 additions and 3 deletions
  1. 1 1
      deps.lock
  2. 3 2
      src/Packagist/WebBundle/Controller/ApiController.php

+ 1 - 1
deps.lock

@@ -8,7 +8,7 @@ swiftmailer v4.1.5
 assetic v1.0.2
 twig-extensions 4c831657215e51568fcb31bb9142e827f9a69bd5
 metadata 1.0.0
-composer 65999c48e1044529890ea68c71790b69f780afb3
+composer 3bdee3aabed551200f9a2b3629ed0c7f85eab68a
 SensioFrameworkExtraBundle 638f545b7020b9e9d5944a7e3167f60ed848250d
 SensioDistributionBundle 20b66a408084ad8752f98e50f10533f5245310bf
 SensioGeneratorBundle b1ccb78c1743f30817b0fce9bb5c6baff6ed7bf8

+ 3 - 2
src/Packagist/WebBundle/Controller/ApiController.php

@@ -91,11 +91,11 @@ class ApiController extends Controller
             return new Response(json_encode(array('status' => 'error', 'message' => 'Invalid credentials',)), 403);
         }
 
-        if (!preg_match('{github.com/[\w.-]+/[\w.-]+$}', $payload['repository']['url'], $match)) {
+        if (!preg_match('{(github.com/[\w.-]+/[\w.-]+?)(\.git)?$}', $payload['repository']['url'], $match)) {
             return new Response(json_encode(array('status' => 'error', 'message' => 'Could not parse payload repository URL',)), 406);
         }
 
-        $payloadRepositoryChunk = $match[0];
+        $payloadRepositoryChunk = $match[1];
 
         foreach ($user->getPackages() as $package) {
             if (false !== strpos($package->getRepository(), $payloadRepositoryChunk)) {
@@ -104,6 +104,7 @@ class ApiController extends Controller
 
                 $repository = new VcsRepository(array('url' => $package->getRepository()), new NullIO);
                 $package->setAutoUpdated(true);
+                $doctrine->getEntityManager()->flush();
                 $updater->update($package, $repository);
 
                 return new Response('{"status": "success"}', 202);