2014-09-07 2 views
5

मेरे पास कई गिट प्रोजेक्ट हैं जो मैं हर रोज (उदाहरण के लिए सुबह में) लाने के लिए और आखिरी प्रतिबद्धता (अगर पाठ्यक्रम में कोई स्थानीय परिवर्तन नहीं होता) चेकआउट "मूल/देव" (उदाहरण के लिए यह नहीं हो सकता है) एक मास्टर शाखा)। तो निर्देशिका में सभी परियोजनाओं के लिए यह कैसे करें?गिट ऑटो-फ़ेच चालू कैसे करें?

+7

autofetch जैसी कोई चीज नहीं है। हालांकि आप एक क्रॉन नौकरी लिखने पर विचार कर सकते हैं – thirtythreeforty

उत्तर

3

निर्देशिका में सभी परियोजनाओं के लिए यह कैसे करें?

एक तरह से (एक अलग स्थानीय निर्देशिका में प्रयोग) के लिए होगा:

  • कि निर्देशिका में एक स्थानीय रेपो
  • submodules के रूप में उन सभी Git रेपोस परियोजनाओं को जोड़ने बनाने (Git submodule बी जोड़ने dev url/git/repo/for/a/project): वे देव शाखा
  • प्रति दिन (उदाहरण के लिए क्रॉन नौकरी के साथ) को ट्रैक करने के लिए सेट किए जाएंगे, git submodule update --recursive --remote करें: जो मूल से नवीनतम को लाएगा और चेकआउट करेगा/प्रत्येक submodules के लिए देव।

ध्यान दें कि निर्देशिका में स्थानीय रेपो उन submodules के लिए "पैरेंट रेपो" के रूप में कार्य करता है, और पूरी तरह से स्थानीय है: उस repo को धक्का देने की कोई ज़रूरत नहीं है। submodule tracking branch feature से लाभ प्राप्त करने के लिए यह केवल 1.8.2+ (मार्च 2013) में पेश किया गया है।

आपका गिट प्रोजेक्ट रेपो पूरी तरह से अनदेखा कर सकता है कि वे मूल निर्देशिका रिपो के लिए सबमिड्यूल हैं।

एक आदेश में, आप को गति प्रदान लाए जाने + सभी अपना Git परियोजना रेपोस के लिए origin/dev पर नवीनतम प्रतिबद्ध की चेकआउट।

2

आप उपयोग कर रहे हैं एक * nix/मैक आप निम्नलिखित बैश स्क्रिप्ट का उपयोग और एक क्रॉन जॉब/launchdaemon कार्य बना सकते हैं:

#!/usr/bin/env bash 
ls -d */ | while read folder; do 
    if [ -d "$folder/.git" ]; then 
     cd "$folder" 
     git pull # CHANGE THIS TO YOUR NEEDS 
     cd .. 
    fi 
done 
संबंधित मुद्दे