This is the expected behavior - but you are also doing something
unexpected because you have access to internal functions: forking
twice. The UI doesn't permit that so you are in uncharted waters.
A fork is a copy of the canonical repo at the time of fork execution.
The fork is not automatically kept in-sync with the canonical repo.
This could be implemented, but there are scenarios to consider like
prohibiting users from pushing to synchronized/inherited branches in
their own forks. And of course what if the canonical repo gets a new
branch, "james", and my fork already has a branch "james". What
happens then... do we clobber my fork's branch because it exists
upstream? There are important details in automatic origin
synchronization which is why I haven't implemented it (yet). This was
all discussed as part of the mirroring discussion [1].
-J
[1]:
https://code.google.com/p/gitblit/issues/detail?id=5