Bagaimana saya bisa membuat file git commit dalam folder yang disinkronkan


19

Saya punya dua folder:

  • /home/me/code/project/
  • /srv/www/projectfiles/

Dalam /home/me/code/projectfolder itu, saya telah terhubung staticke/srv/www/projectfiles/

yaitu /home/me/code/project/static/->/srv/www/projectfiles/

Ketika saya mencoba melakukan sekarang, itu tidak melihat file di balik symlink, dan sebaliknya mencoba untuk melakukan symlink itu sendiri sebagai file.

Bagaimana cara saya mengkomit file (mis. /srv/www/projectfiles/style.css) Yang ada di belakang symlink?

Jawaban:


12

Sebuah solusi adalah memiliki / srv / www / projectfiles menjadi symlink ke / home / me / code / project / static sehingga git tidak melihat symlink


Jadi pada dasarnya Anda membalikkan logika? Simpan file / folder yang diperlukan di folder Git dan kemudian letakkan symlink di tempat lain (di mana file / folder asli digunakan untuk berada)?
RusI

@Rusl Ya persis seperti itu
user151019

Tapi lalu bagaimana saya bisa melakukan kustomisasi lokal file? Saya harus memiliki repo terpisah untuk setiap mesin? Kehilangan seluruh intinya.
Ashnur

Ya, kustomisasi lokal tidak akan ada di git
user151019

3

Jika Anda menggunakan linux, saya terutama menyukai solusi yang disediakan oleh GitBLSR . Ini adalah pustaka yang dimuat melalui LD_PRELOAD yang secara transparan mereferensikan symlink ke file dan folder di luar repositori.

Untuk menginstalnya untuk akun pengguna lokal sederhana:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

Ini akan mengkompilasi pustaka dan membuat alias seperti berikut ini di ~/.bashrc:

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

Menggunakan alias ini memungkinkan dereferencing tautan transparan.


1
Itu buruk! Tapi itu bekerja dengan baik, jadi itu bagus. Terima kasih!
Kay kecewa pada

Itu aneh! Saya sangat menyukainya
Marcos Besteiro López

2

Pertimbangkan untuk menggunakan titik mount untuk memasang folder tujuan (yang saat ini Anda symlink) untuk muncul di lokasi yang Anda inginkan di bawah proyek git. Saya telah menggunakan pendekatan ini dengan sukses.


1

Pindahkan file ke dalam folder dan hapus symlink. Git tidak melintasi symlink.

Itu (dan saya) akan berasumsi bahwa Anda symlinking ke satu set file yang Anda tidak kontrol atau tidak ingin memodifikasi, karena itu mereka tidak perlu diversi.


1
Saya mengontrol file-file ini. Mereka adalah stylesheet dll. Dan harus berada dalam direktori di mana server akan melakukan server.
Macha

1

Solusi lain - satu-satunya yang saya temukan yang juga berfungsi untuk direktori - adalah mengubah pohon git untuk tindakan tertentu.

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.