Saya memiliki baris dalam output pembekuan pip saya seperti:
-e [email protected]:widgets.git@3bdaf7d07c44a87c38beb1e8abd163a7edf99adc#egg=widgets
-e [email protected]:[email protected]#egg=gadgets
Ketika tiba saatnya untuk menginstal menggunakan pip install -r requirements.txt
tampaknya pip salah mengidentifikasi example.com:[email protected]
sebagai URL lengkap dari repositori git padahal sebenarnya seharusnya example.com:gadgets.git
dan kemudian seharusnya lihat komit 3bda...99adc.
Jika saya mencoba menginstal menggunakan output pembekuan pip, mis
pip install -e [email protected]:[email protected]#egg=gadgets
Saya mendapatkan kesalahan yang sama.
Ini semua menggunakan pip 1.5.4
Perhatikan bahwa dengan perubahan berikut ini berfungsi dengan benar:
pip install -e [email protected]:/path/to/project/[email protected]#egg=project
atau
pip install -e [email protected]:project.git#egg=project
Meskipun yang terakhir, itu jelas hanya akan menarik komit saat ini dan bukan yang ditentukan dalam 3bdaf…
Juga, untuk alasan yang tidak saya mengerti, ini _berfungsi untuk permintaan ke github.
Itu adalah,
pip install -e [email protected]:JordanReiter/[email protected]#egg=github_project
bekerja.
Ini mirip dengan #6293. Pengurai (berdasarkan stdlib urlsplit
memiliki masalah dalam mengidentifikasi bagian jalur URL ketika tidak mengandung /
sama sekali, dan mengidentifikasi semuanya setelah +
sebagai netloc
Varian tanpa rev bekerja secara tidak sengaja karena netloc
dan path
kemudian digabungkan kembali dan diteruskan ke Git (yang melakukan hal yang benar secara otomatis).
Diskusi di #6293 tampaknya lebih memilih untuk menghapus dukungan URL gaya SCP sepenuhnya, jadi solusi yang lebih baik di sini adalah pip freeze
untuk mengeluarkan URL git+ssh://
sebagai gantinya.
Penutupan karena kami mengusulkan untuk menghapus formulir git+git@
di #7554.