[GHC] #8251: Validate submodule references during pre-receive hook
GHC
ghc-devs at haskell.org
Tue Mar 18 10:27:29 UTC 2014
#8251: Validate submodule references during pre-receive hook
-------------------------------------+------------------------------------
Reporter: hvr | Owner: hvr
Type: task | Status: new
Priority: normal | Milestone:
Component: Trac & Git | Version: 7.6.3
Resolution: | Keywords: admin git
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+------------------------------------
Comment (by hvr):
Here's a sample session demonstrating the new server-side validation
checks, when trying to update the `Win32` package to version 2.3.0.2 (from
previously 2.3.0.1);
After having synced up `libraries/Win32` to point version 2.3.0.2 of
`Win32` we have the following change to commit to `ghc.git` (`git add
libaries/Win32`):
{{{#!diff
diff --git a/libraries/Win32 b/libraries/Win32
index 1e909ad..c51e81a 160000
--- a/libraries/Win32
+++ b/libraries/Win32
@@ -1 +1 @@
-Subproject commit 1e909adb06b766e107148b8b37a4a9f9e50baf74
+Subproject commit c51e81a43cd5e9540453bd5ca6da8992245a4774
}}}
1. Pushing a commit touching a submodule ref w/o including the
"`submodule`" safe-word:
{{{
$ git commit -s -m "Update Win32-2.3.0.2"
$ git push
...
remote: performing tab-check...
remote: performing submodule-ref update validations...
remote: Submodule update(s) detected in
ff458fc260fd05ebcb7db3294cbb1ec623e6525e:
remote: *FAIL* commit message does not contain magic 'submodule' word
remote: hooklet hooks/update.secondary.d/check-submodule-refs failed
remote: hooks/update.secondary died
remote: error: hook declined to update refs/heads/master
To ssh://git@git.haskell.org/ghc.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'ssh://git@git.haskell.org/ghc.git'
}}}
2. Rewrite the commit message to include the magic word, and try pusing
again:
{{{
$ git commit --amend -s -m "Update submodule to Win32-2.3.0.2"
$ git push
...
remote: performing tab-check...
remote: performing submodule-ref update validations...
remote: Submodule update(s) detected in
a24ef02140dabb42dfbd2b649434017af6bb6fca:
remote: libraries/Win32 => c51e81a43cd5e9540453bd5ca6da8992245a4774
remote: *FAIL* commit not found in submodule repo
('../packages/Win32.git')
remote: or not reachable from persistent branches
remote: hooklet hooks/update.secondary.d/check-submodule-refs failed
remote: hooks/update.secondary died
remote: error: hook declined to update refs/heads/master
To ssh://git@git.haskell.org/ghc.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'ssh://git@git.haskell.org/ghc.git'
}}}
3. Making sure the `Win32` sub-repo actually contains the new commit
`ghc.git` is going to refer to, and try pushing again:
{{{
$ (cd libraries/Win32 ; git push origin HEAD:ghc-head)
...
To ssh://git@git.haskell.org/packages/Win32.git
1e909ad..c51e81a ghc-head -> ghc-head
$ git push
...
remote: performing tab-check...
remote: performing submodule-ref update validations...
remote: Submodule update(s) detected in
696bfc4ba5fce6b75cc91bcb67c5d0a3c9f29bd2:
remote: libraries/Win32 => c51e81a43cd5e9540453bd5ca6da8992245a4774
remote: OK
remote: mirroring ssh://git@git.haskell.org/ghc to
ssh://git@github.com/ghc/ghc ...
remote: To ssh://git@github.com/ghc/ghc
remote: 3099e40..696bfc4 master -> master
remote: running notifier
To ssh://git@git.haskell.org/ghc.git
3099e40..696bfc4 master -> master
}}}
The last `git push` finally succeeded!
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8251#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list