ਨੇਟਿਵ Git ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ JGit ਨਹੀਂ
JGit ਇੱਕ Java ਕਾਰਜਾਨਵਿਤੀ ਹੈ ਜਿਸ ਦੀਆਂ ਆਪਣੀਆਂ ਸਮਰਥਿਤ ਟਰਾਂਸਪੋਰਟ ਸੈਟਿੰਗਾਂ ਹਨ। ਨੇਟਿਵ Git ਵਿੱਚ http.proxy ਐਂਟਰੀ ਹਰ Git ਕਲਾਇੰਟ ਲਈ ਸਰਵਵਿਆਪਕ ਸੰਰਚਨਾ ਨਹੀਂ ਹੈ।
ਉਹੀ ਰਿਪੋਜ਼ਟਰੀ ਟਰਮੀਨਲ ਵਿੱਚ git clone ਨਾਲ ਕੰਮ ਕਰਦੀ ਹੈ ਅਤੇ JGit ਵਰਤਣ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਫੇਲ੍ਹ ਹੁੰਦੀ ਹੈ। ਇਹ ਦੋ ਕਾਰਜਾਨਵਿਤੀਆਂ ਵਿਚਕਾਰ ਤੁਲਨਾ ਹੈ, ਜ਼ਰੂਰੀ ਨਹੀਂ ਕਿ ਇੱਕੋ ਕਲਾਇੰਟ ਦੀ ਕੰਮ ਕਰਨ ਵਾਲੀ ਅਤੇ ਟੁੱਟੀ ਕਾਪੀ ਵਿਚਕਾਰ।
JGit ਦਾ ਸੰਰਚਨਾ ਹਵਾਲਾ ਕਹਿੰਦਾ ਹੈ ਕਿ ਪ੍ਰੌਕਸੀ ਸੰਰਚਨਾ java.net.ProxySelector ਰਾਹੀਂ Java ਦੀਆਂ ਮਿਆਰੀ ਵਿਧੀਆਂ ਵਰਤਦੀ ਹੈ। ਸਿਰਫ਼ ਇਸ ਲਈ ਨਾ ਮੰਨੋ ਕਿ ਨੇਟਿਵ Git ਦਾ ਹਰ HTTP ਵਿਕਲਪ ਲਾਗੂ ਹੈ ਕਿਉਂਕਿ ਦੋਵੇਂ ਕਲਾਇੰਟ Git ਸੰਰਚਨਾ ਫਾਈਲ ਸਮਝਦੇ ਹਨ।
JGit ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ, ਇਸ ਦਾ ਸੰਸਕਰਣ ਅਤੇ ਚੁਣਿਆ ਗਿਆ HTTP ਟਰਾਂਸਪੋਰਟ ਪਛਾਣੋ। ਹੋਸਟ ਐਪਲੀਕੇਸ਼ਨ JGit ਦੇ ਸੁਤੰਤਰ ਡਿਫ਼ਾਲਟ ਤੋਂ ਅੱਗੇ ਸੈਟਿੰਗਾਂ ਜਾਂ ਵਿਵਹਾਰ ਦੇ ਸਕਦੀ ਹੈ।
ਫਿਰ ਉਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਦਿਸਦੀ Java ਪ੍ਰੌਕਸੀ ਸੰਰਚਨਾ ਜਾਂਚੋ। URLConnection-ਅਧਾਰਿਤ HTTP ਟਰਾਂਸਪੋਰਟ ਲਈ, ਇਸ ਵੱਲੋਂ ਵਰਤੇ ਜਾਂਦੇ JVM ਹੋਸਟ ਅਤੇ ਪੋਰਟ ਗੁਣ ਜਾਂਚੋ। ਐਪਲੀਕੇਸ਼ਨ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕਿਸੇ ਅਸੰਬੰਧਿਤ ਟਰਮੀਨਲ ਵਿੱਚ ਦਰਜ ਕੀਤਾ ਗੁਣ ਚੱਲ ਰਹੇ JVM ਨੂੰ ਮੁੜ ਸੰਰਚਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ। IDE ਦਾ ਨੇਟਿਵ Git ਕਾਰਜ ਅਤੇ ਇਸ ਦਾ JGit ਕਾਰਜ ਵੀ ਵੱਖਰੇ ਰਾਹ ਵਰਤ ਸਕਦੇ ਹਨ।
ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣੀਕਰਣ ਨੂੰ ਮਾਰਗ ਚੋਣ ਤੋਂ ਵੱਖ ਰੱਖੋ। ਹੋਸਟ ਅਤੇ ਪੋਰਟ ਪਛਾਣਨ ਵਾਲੇ Java ਪ੍ਰੌਕਸੀ ਗੁਣ ਆਪਣੇ ਆਪ ਪ੍ਰੌਕਸੀ ਪਾਸਵਰਡ ਸਕੀਮ ਲਾਗੂ ਨਹੀਂ ਕਰਦੇ। ਹੋਸਟ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਸਮਰਥਿਤ ਪ੍ਰਮਾਣੀਕਰਣ ਵਿਧੀ ਵਰਤੋ।
ਲਾਭਦਾਇਕ ਸਵਾਲ ਹੈ “ਇਸ JGit ਬੇਨਤੀ ਨੇ ਕਿਹੜੀ ਪ੍ਰੌਕਸੀ ਚੁਣੀ?”, “ਕੀ ਮੇਰੀ Git ਸੰਰਚਨਾ ਵਿੱਚ ਪ੍ਰੌਕਸੀ ਲਾਈਨ ਹੈ?” ਨਹੀਂ। ਨੇਟਿਵ Git ਦੀ ਸਫਲਤਾ ਕੀਮਤੀ ਤੁਲਨਾ ਹੈ, ਪਰ ਇਹ ਉਸ ਕਾਰਜਾਨਵਿਤੀ-ਵਿਸ਼ੇਸ਼ ਸਵਾਲ ਦਾ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦੀ।