• 12-02-2025, 02:25:01
    #1
    Selamlar.

    MacOS'da Docker ile çalışan bir projem var, haliyle proje dosyalarının MacOS'da bulunması gerekiyor. VS Code ile MacOS'da geliştirme yapıyorum, aynı zamanda GIT ile versiyon kontrol kullanıyorum, uzakta ize bir GitHub reposuna bağlı. Bu klasörü yerel ağda paylaşıyorum, ağdaki başka bir cihazdan mesela Windows erişiyor ve VS Code ile açıyor değişiklik yapıyorum, anında MacOS'a gidiyor ve canlı sitede uygulanıyor. Anında tüm cihazlardan local IP ile MacOS'da çalışan canlı siteyi de görebiliyorum. Buraya kadar her şey normal ama dosyalara ağdan ulaştığım için Windows'da bu klasör için git kullanamıyorum. Bunu nasıl mümkün kılabilirim? MacOS ile ortak bir git'de olabilir.

    git'i iyi bilen bir arkadaşınız varsa etiketlemenizi rica ederim, buna çözüm üretebilecek birini bulmak kolay olmayacaktır.
  • 12-02-2025, 03:09:58
    #2
    hocam tam olarak sorununuzu anlayamadım fakat size garip bir çözüm yöntemi ileceğim
    hangi yazılım dilini kullanıyorsunuz bilmiyorum ama projenin sitesinin canlıda gözüktüğünü söylemişsiniz node js ten örnek vercem bir endpoint oluşturun projede örnek /gitpush

    bu her dilde olabilir terminal komutlarıyla git komutlarını ilgili endpoint çağrılınca çalıştırabileceğiniz bir sistem yapabilirsiniz diye düşünüyorum.

    not: bu şekilde git komutlarını çalıştırmayı denemedim daha önce ek olarak alttaki kod chatgpt ye yaptırdığım örnek koddur mantığını anladıktan sonra kendi kullandığınız dil üzerinden yapabilirsiniz işlemleri
    kısaca endpoint oluşturun get veya herhangi bir method ile commit içeriğini vs de gönderebilirsiniz basit bir arayüz yapılabilir windowstan iport/gitpush adresine gittiğinizde proje githuba pushlanır zaten windows ve mac cihazı senkronize çalışıyor o yüzden githuba pushlamak işinize yararsa bunu kullanabilirsiniz

    router.get("/git-push", (req, res) => { 
       // Git komutlarını sırayla çalıştır 
       exec("git add . && git commit -m 'Auto commit' && git push origin main", (error, stdout, stderr) => { 
           if (error) { 
               console.error(`Hata: ${error.message}`); 
               return res.status(500).send(`Hata: ${error.message}`); 
           }
            if (stderr) { 
               console.error(`Hata: ${stderr}`);
                return res.status(500).send(`Hata: ${stderr}`); 
           } 
           console.log(`Çıktı: ${stdout}`); 
           res.send(`Git push başarılı: ${stdout}`); 
       }); 
    });
  • 12-02-2025, 03:41:15
    #3
    CanOffline adlı üyeden alıntı: mesajı görüntüle
    hocam tam olarak sorununuzu anlayamadım fakat size garip bir çözüm yöntemi ileceğim
    hangi yazılım dilini kullanıyorsunuz bilmiyorum ama projenin sitesinin canlıda gözüktüğünü söylemişsiniz node js ten örnek vercem bir endpoint oluşturun projede örnek /gitpush

    bu her dilde olabilir terminal komutlarıyla git komutlarını ilgili endpoint çağrılınca çalıştırabileceğiniz bir sistem yapabilirsiniz diye düşünüyorum.

    not: bu şekilde git komutlarını çalıştırmayı denemedim daha önce ek olarak alttaki kod chatgpt ye yaptırdığım örnek koddur mantığını anladıktan sonra kendi kullandığınız dil üzerinden yapabilirsiniz işlemleri
    kısaca endpoint oluşturun get veya herhangi bir method ile commit içeriğini vs de gönderebilirsiniz basit bir arayüz yapılabilir windowstan iport/gitpush adresine gittiğinizde proje githuba pushlanır zaten windows ve mac cihazı senkronize çalışıyor o yüzden githuba pushlamak işinize yararsa bunu kullanabilirsiniz

    router.get("/git-push", (req, res) => {
       // Git komutlarını sırayla çalıştır
       exec("git add . && git commit -m 'Auto commit' && git push origin main", (error, stdout, stderr) => {
           if (error) {
               console.error(`Hata: ${error.message}`);
               return res.status(500).send(`Hata: ${error.message}`);
           }
            if (stderr) {
               console.error(`Hata: ${stderr}`);
                return res.status(500).send(`Hata: ${stderr}`);
           }
           console.log(`Çıktı: ${stdout}`);
           res.send(`Git push başarılı: ${stdout}`);
       });
    });
    Cevap için teşekkürler. İşe yaramıyor hocam, git'in tüm özellikleri kusursuz çalışmıyor. Mesela Windows'da dosyada bir şey değiştirdiğimde MacOS'da direkt before-after karşılştırmaya düşüyor ve takibe otomatik alıyor (git add .) ancak windows'da Mac takibe aldığı için karmaşa oluyor bir sonraki işlem takibe alınmamış işlem olarak sırada bekliyor falan saçma sapan şeyler oluyor. Birde takibe Mac'den alınca Windows'da karşılaştırma açamama sorunu oluyor .git içindeki dizine erişim engeli var diye onu da aşamadım iyice çorba oldu. ChatGPT "Bare Repo" diye bir çözüm de önerdi ama oda ağdan çalışınca işe yaramadı. Benim hem MacOS'da hem de Windows'da ortak(paylaşılan) dizin haricinde tutmam lazım her iki taraftaki .git klasörlerini böylece birbirlerine girmeden ilgili işletim sisteminde çalışırlar.

    Alternatif olarak alıma Windows'daki ağ klasörünü (disk olarak harf verdim şu an proje dizin K: şeklinde başka bir klasör ile senkronize edecek program bulmak geldi. .git hariç tutup bir clon klasör oluşturup ağdakinden .git'i alma geri kalan şey şeyi al yaparsam sorun çözülür zira geri kalan her şey GitHub reposunun içeriği demek, onu git ile takibe aldırırım. Aynı zamanda orada yaptıklarım ağdaki dosyalara işlenirse olay çözülür.
  • 12-02-2025, 03:53:31
    #4
    baya işler karışmış durumda
    geçmişte benzer bir şekilde çalışmam gerektiğinde şöyle bir şey yapmıştım hocam siz ortak dosyayı macos tan açıyorsunuz ya ben sunucuya kurmuştum vs code üzerinden sunucuya bağlanıp düzenleme yapıyordum arkadaşta aynı şekilde kendi kısımlarını düzenliyordu 2 farklı bilgisayar dosyalar sunucu üzerinde senkron olduğu için sorun yoktu.
    sizin senaryonuzda projeyi sunucuya kurup macten ve windowstan sunucuya vscode üzerinden bağlanıp işlem yapılabilir git kullanımıda terminalden yapılabilir (vscode kısmından bağlı olduğun sunucunun terminalinden kodları yazacaksınız kendi pc nizin terminali ile karıştırırsanız işler daha da karışır)

    fakat burda da şu sorun ortaya çıkıyor proje docker projesi bunun içinde sunucu içinde docker içinde ekstradan ssh kurmanız ve bağlantı ayarlarını yapılandırmanız gerekecektir. buda docker prensiplerinin dışına çıkmak demek docker demek zaten localde paketlemek demek ama geçici bir çözüm olabilir
  • 12-02-2025, 04:07:29
    #5
    CanOffline adlı üyeden alıntı: mesajı görüntüle
    baya işler karışmış durumda
    geçmişte benzer bir şekilde çalışmam gerektiğinde şöyle bir şey yapmıştım hocam siz ortak dosyayı macos tan açıyorsunuz ya ben sunucuya kurmuştum vs code üzerinden sunucuya bağlanıp düzenleme yapıyordum arkadaşta aynı şekilde kendi kısımlarını düzenliyordu 2 farklı bilgisayar dosyalar sunucu üzerinde senkron olduğu için sorun yoktu.
    sizin senaryonuzda projeyi sunucuya kurup macten ve windowstan sunucuya vscode üzerinden bağlanıp işlem yapılabilir git kullanımıda terminalden yapılabilir (vscode kısmından bağlı olduğun sunucunun terminalinden kodları yazacaksınız kendi pc nizin terminali ile karıştırırsanız işler daha da karışır)

    fakat burda da şu sorun ortaya çıkıyor proje docker projesi bunun içinde sunucu içinde docker içinde ekstradan ssh kurmanız ve bağlantı ayarlarını yapılandırmanız gerekecektir. buda docker prensiplerinin dışına çıkmak demek docker demek zaten localde paketlemek demek ama geçici bir çözüm olabilir
    Sorma hocam. Sunucu çözüm olmaz, anlık test ediyorum live server falan çalışıyor kodlar değiştikçe. Docker tarafı daha da karışık ama şu an stabil çalışıyor. Volume yaptım bu proje klasörünü, onu 5 docker container kullanıyor, bunların görevleri var. dev'de geliştirme odaklı işlemler yapıyorum, test'de özelliklerin kullanım senaryolarını test ediyorum, demo'da 3. parti eklenti ve temaları test ediyorum, live ise geliştirme yaptığım projenin yayındaki yedeği üzerinde nasıl göründüğünü kontrol etmek için. Yayına almadan önce orada görüyorum işte ama hepsinde o bahsettiğim klasör kullanılıyor. bunların img dosyaları için ayrı volum'ler var ve hepsi aynı veritabanında değil hatta biri komple MySQL bile değil MariaDB üzerinde çalışıyor.

    Şu çözüm olacak mı onu kurcalıyorum şu an: https://syncthing.net/
  • 12-02-2025, 17:38:11
    #6
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Sorma hocam. Sunucu çözüm olmaz, anlık test ediyorum live server falan çalışıyor kodlar değiştikçe. Docker tarafı daha da karışık ama şu an stabil çalışıyor. Volume yaptım bu proje klasörünü, onu 5 docker container kullanıyor, bunların görevleri var. dev'de geliştirme odaklı işlemler yapıyorum, test'de özelliklerin kullanım senaryolarını test ediyorum, demo'da 3. parti eklenti ve temaları test ediyorum, live ise geliştirme yaptığım projenin yayındaki yedeği üzerinde nasıl göründüğünü kontrol etmek için. Yayına almadan önce orada görüyorum işte ama hepsinde o bahsettiğim klasör kullanılıyor. bunların img dosyaları için ayrı volum'ler var ve hepsi aynı veritabanında değil hatta biri komple MySQL bile değil MariaDB üzerinde çalışıyor.

    Şu çözüm olacak mı onu kurcalıyorum şu an: https://syncthing.net/
    işler baya karışmış hocam umarım çözmüşsünüzdür işe yaradı mı https://syncthing.net/ bu site yakın zamanda benimde benzer bi çözüm bulmam gerekecek
  • 18-02-2025, 17:07:26
    #7
    CanOffline;108877760

    [QUOTE=CanOffline;1088780035 adlı üyeden alıntı:
    işler baya karışmış hocam umarım çözmüşsünüzdür işe yaradı mı https://syncthing.net/ bu site yakın zamanda benimde benzer bi çözüm bulmam gerekecek
    Yok çözemedim, bir sorunu çözsem başka bir sorun çıkıyor ayın anda tüm isteklerimi olduğu bir senaryo yok o yüzden vazgeçtim. Reddit'de baya muhabbet döndü, faydalı olabilir başkasına buraya konuyu linkelyeyim:
    https://www.reddit.com/r/git/comment...t=share_button