@@ -28,7 +28,9 @@ public function tags($username, $repository)
2828
2929 public function show ($ username , $ repository , $ reference )
3030 {
31- return $ this ->get ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .rawurlencode ($ reference ));
31+ $ reference = $ this ->encodeReference ($ reference );
32+
33+ return $ this ->get ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .$ reference );
3234 }
3335
3436 public function create ($ username , $ repository , array $ params )
@@ -46,11 +48,20 @@ public function update($username, $repository, $reference, array $params)
4648 throw new MissingArgumentException ('sha ' );
4749 }
4850
49- return $ this ->patch ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .rawurlencode ($ reference ), $ params );
51+ $ reference = $ this ->encodeReference ($ reference );
52+
53+ return $ this ->patch ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .$ reference , $ params );
5054 }
5155
5256 public function remove ($ username , $ repository , $ reference )
5357 {
54- return $ this ->delete ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .rawurlencode ($ reference ));
58+ $ reference = $ this ->encodeReference ($ reference );
59+
60+ return $ this ->delete ('repos/ ' .rawurlencode ($ username ).'/ ' .rawurlencode ($ repository ).'/git/refs/ ' .$ reference );
61+ }
62+
63+ private function encodeReference ($ rawReference )
64+ {
65+ return implode ('/ ' , array_map ('rawurlencode ' , explode ('/ ' , $ rawReference )));
5566 }
5667}
0 commit comments