On 2020-02-17 at 08:02:44, Manish Devgan wrote: > Hello, > > I am a university student from India and I was trying to clone the > xfwm4 git repository from the git-url : > https://git.xfce.org/xfce/xfwm4 > I was trying to clone this repository over my university network and > it didn't work. I worked my way around by using my mobile > wireless-hotspot for the same and was able to do it just fine. > The next day I tried doing the exact same thing since I couldn't get > an answer from our university if any such firewall was blocking me > from cloning it. But this time instead of failing to reach the url the > command ran with the following output: > > gabru-md@bhaalu:~/Desktop$ git clone https://git.xfce.org/xfce/xfwm4 > Cloning into 'xfwm4'... > > after waiting for a few minutes the command didn't fail but it didn't > show any output/stats like it does when I try to clone a repository > from Github which is definitely not blocked on the university network. > for eg. So it looks like git.xfce.org is using the old dumb HTTP protocol, which basically serves static content. Git has to look up the references, attempt to download each object or pack, and then determine which ones have the objects it needs. The server provides no assistance in that regard. > gabru-md@bhaalu:~/Desktop$ git clone https://github.com/gabru-md/stl-cpp > Cloning into 'stl-cpp'... > remote: Enumerating objects: 186, done. > remote: Counting objects: 100% (186/186), done. > remote: Compressing objects: 100% (128/128), done. > remote: Total 186 (delta 92), reused 146 (delta 56), pack-reused 0 > Receiving objects: 100% (186/186), 105.58 KiB | 256.00 KiB/s, done. > Resolving deltas: 100% (92/92), done. Here, GitHub uses the smart HTTP protocol. The client fetches the references and then reports what data it has. The server actively computes the differences and sends a single pack containing only the required objects. In addition, newer versions of the smart HTTP protocol contain a sideband where the server can report status, like the "remote:" message you see above. The status messages on the client side come from unpacking and indexing the single pack received. So this is working by design, although it's confusing for users. The dumb HTTP protocol doesn't know how much stuff it needs to fetch—it could be a single object or pack, or it could be tens of thousands of items—so it's hard to provide any progress report on the client side. Additionally, because the server isn't actively producing a pack and is just serving static files, there's no way for it to provide status output at all. Hopefully this answers your question, although I agree the answer is a little unsatisfying. -- brian m. carlson: Houston, Texas, US OpenPGP: https://keybase.io/bk2204