Bu sayfa son olarak 2020-09 tarihinde güncellendi ve 0.9.47 yöneltici sürümü için geçerli.

Git over I2P for Users

Tutorial for setting up git access through an I2P Tunnel. This tunnel will act as your access point to a single git service on I2P.

If you intend to use the service at i2pgit.org/git.idk.i2p, then you probably already have a tunnel configured and much of this tutorial will not apply to you.

Bir: Git hizmetinde bir hesap açın

Uzak bir Git hizmetinde depolarınızı oluşturmak için o hizmette bir kullanıcı hesabı açın. Elbette, yerel depolar oluşturarak bunları uzak bir Git hizmetine gönderme seçeneğiniz de vardır. Ancak çoğu durumda bir hesap açılması ve sunucuda kendiniz için bir depo alanı oluşturmanız gerekir. Gitlab hesap açma formu çok basittir:

These are generic instructions for any in-i2p Git instance with HTTP and SSH gateways. If you intend to contribute to I2P, you should create an account at the I2P gitlab, which is open to the community. Account registration may take a few days to complete, as the admin needs to sort through a large number of spam registrations. You can help this by getting in touch with the admin to confirm you are human using the instructions on the home page.

Registration is easy!

Second: Create a project to test with

Kurulum işleminin çalıştığından emin olmak için sunucudan bir deneme havuzu oluşturmanızı sağlar. Bu eğitimin amacına yönelik olarak I2P yöneltici dalını kullanacağız. İlk olarak, i2p-hackers/i2p.i2p deposuna gidin:

Browse to i2p.i2p
I2P Hackers i2p.i2p

Ardından, hesabınızda bir dalını oluşturun.

Roger is forking
Roger is finished

Third: Set up your git client tunnel

Sunucuma okuma-yazma erişimine sahip olmak için SSH istemciniz için bir tünel kurmanız gerekecek. Örnek olarak, bunun yerine HTTP tünelini kullanacağız. Ancak yalnız salt okunur erişime, HTTP/S kopyalamaya gerek duyuyorsanız, tüm bunları atlayabilir ve Git yapılandırması için önceden hazırlanmış I2P HTTP vekil sunucusunu kullanmak amacıyla http_proxy ortam değişkenini kullanabilirsiniz. Örneğin:

http_proxy=http://localhost:4444 git clone http://gittest.i2p/i2p-developer/i2p.i2p
Client tunnel
Git over I2P

Then, add the address you will be pushing and pulling from. Note that this example address is for Read-Only HTTP-over-I2P clones, if your admin does not allow the git HTTP(Smart HTTP) protocol, then you will need to get the SSH clone base32 from them. If you have an SSH clone base32, substitute it for the base32 in this step, which will fail.

gittest.i2p

I2P hizmetinin yerel olarak iletileceği bir kapı numarası seçin.

localhost:localport

Çok kullandığım için istemci tünelimi otomatik olarak başlatıyorum ama bu size kalmış.

Auto Start

Her şey bittiğinde, buna çok benzemeli.

Review settings

Dört: Bir kopya oluşturmayı deneyin

Artık tüneliniz hazır, SSH üzerinden kopyalamayı deneyebilirsiniz.

Git Privacy: Committing to git adds a timestamp to git commit messages, which may be configured to reflect your local time zone. To enforce the use of UTC for all commits, you are advised to use a git alias, such as:

git config --global alias.utccommit '!git commit --date="$(date --utc +%Y-%m-%dT%H:%M:%S%z)"'
which will allow you to substitute
git commit
for
git utccommit
in order to obscure your local time zone.

GIT_SSH_COMMAND="ssh -p 7442" \
    git clone git@127.0.0.1:i2p-developer/i2p.i2p

Uzak ucun beklenmedik bir şekilde kapandığı ile ilgili bir hata görebilirsiniz. Maalesef git hala sürdürülebilir kopyalamayı desteklemiyor. Bunu yapana kadar, bu sorunu aşmanın oldukça kolay birkaç yolu var. İlk ve en kolayı, sığ bir derinliğe kopyalamaya çalışmaktır:

GIT_SSH_COMMAND="ssh -p 7442" \
    git clone --depth 1 git@127.0.0.1:i2p-developer/i2p.i2p

Sığ bir kopyalama gerçekleştirdikten sonra, depo klasörüne geçerek ve aşağıdakileri çalıştırarak geri kalanını sürdürerek alabilirsiniz:

git fetch --unshallow

Bu noktada, henüz tüm dallarınıza sahip değilsiniz. Aşağıdaki komutları çalıştırarak onları alabilirsiniz:

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

Bu komutlar, Git yazılımına kaynaktan alma sırasında tüm dallar alınacak şekilde depo yapılandırmasını değiştirmesini söyler.

Bu işe yaramazsa, tünel yapılandırma menüsünü açarak bazı yedek tüneller eklemeyi deneyebilirsiniz.

Backup Tunnels

Bu da işe yaramazsa, denenmesi gereken bir sonraki kolay şey tünel uzunluğunu azaltmaktır. Ancak koda katkıda bulunma çalışmalarınızın, birçok kötü amaçlı düğüm işleterek tüm yolunuzu denetlemeye çalışan ve bol kaynağı olan bir saldırgan tarafından izlendiğini ve anonimliğinizin bozulması riskiyle karşı karşıya olduğunu düşünüyorsanız, bunu yapmayın. Bu durum size pek olası gelmiyorsa güvenle yapabilirsiniz.

One-Hop Tunnels

Geliştiriciler için Önerilen İş Akışı!

Sürüm denetimi hayatınızı kolaylaştırabilir, ancak en iyi sonucu alabilmek için onu iyi kullanmanız gerekir! Bunun ışığında, birçoğunun Github üzerinden aşina olduğu, önce dallandır, özelliği dalda geliştir şeklinde bir iş akışı öneriyoruz. Böyle bir iş akışında, ana dal, güncellemeler için bir tür "Gövde" olarak kullanılır ve programcı tarafından asla dokunulmaz, bunun yerine ana dalda yapılan tüm değişiklikler diğer dallardan birleştirilir. Çalışma alanınızı buna göre kurmak için aşağıdaki adımları izleyin:

  • Asla ana dalda değişiklik yapmayın. Resmi kaynak kodundaki güncellemeleri düzenli olarak almak için ana dalı kullanacaksınız. Tüm değişiklikler özellik dallarında yapılmalıdır.
  1. Yukarı akış kaynak kodunu kullanarak yerel deponuzda ikinci bir uzak depo kurun.

    git remote add upstream git@127.0.0.1:i2p-hackers/i2p.i2p
  2. Var olan ana daldaki tüm yukarı akış değişikliklerini çekin:

    git pull upstream master
  3. Kaynak kodunda herhangi bir değişiklik yapmadan önce, üzerinde geliştirme çalışmalarının yapılacağı yeni özellik dalını denetleyin:

    git checkout -b feature-branch-name
  4. Değişikliklerinizi tamamladığınızda bunları gönderin ve dalınıza itme isteğinde bulunun

    git commit -am "I added an awesome feature!"
    git push origin feature-branch-name
  5. Bir birleştirme isteğinde bulunun. Birleştirme isteği onaylandığında ve yukarı akış ana dalına getirildiğinde, ana dalı yerel olarak denetleyin ve değişiklikleri alın:

    git checkout master
    git pull upstream master
  6. Yukarı akış ana dalında (i2p-hackers/i2p.i2p) bir değişiklik yapıldığında da, bu akışı kullanarak ana kodunuzu güncelleyebilirsiniz.

    git checkout master
    git pull upstream master

The git utccommit alias solution to git timestamp issue was arrived at from the information first published here: saebamini.com.