विंडोज में Git रिपोजिटरी को होस्ट करना


108

क्या वर्तमान में विंडोज में एक साझा गिट रिपॉजिटरी को होस्ट करने का एक तरीका है? मैं समझता हूं कि आप लिनक्स में Git सेवा को कॉन्फ़िगर कर सकते हैं:

git daemon

क्या एक Git सर्विस होस्ट करने के लिए, फ़ोल्डर्स को साझा करने के लिए एक देशी विंडोज विकल्प है?

संपादित करें: मैं वर्तमान में विंडोज में git रिपॉजिटरी के साथ स्टोर करने और काम करने के लिए ggg की साइबरइन इंस्टॉल का उपयोग कर रहा हूं, लेकिन मैं एक रिपॉजिटरी की मेजबानी का अगला कदम एक ऐसी सेवा के साथ लेना चाहूंगा जो दूसरों तक पहुंच प्रदान कर सके।


35
मेरे वर्तमान नियोक्ता के पास कोई यूनिक्स या लिनक्स मशीन नहीं है ... एक ही समय में एक नया स्रोत नियंत्रण प्रदाता और ऑपरेटिंग सिस्टम में लाना थोड़ा सा हो सकता है ... दर्दनाक।
जेफ फ्रिट्ज

1
गिट-डेमन के साथ क्या गलत है? AFAIK यह विंडोज पर ठीक काम करता है।
अरस्तू पगलतज़िस

10
Windows के लिए मानक msysgit इंस्टॉलर का उपयोग करके Git इंस्टॉल करना प्रकट नहीं होता है git daemon। : \
टिम विश्वर

1
एक बंडल किया हुआ CopSSH और msysgit इंस्टॉलर है जिसे आप देखना चाहते हैं। यह सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करता है, और इसे आसान बनाता है। डिस्क्लेमर: मैं वेबमास्टर हूं - मैंने एक सुरक्षित गिट सर्वर स्थापित करने पर टिम डेविस के ट्यूटोरियल को
लिलिथ नदी

3
रिकॉर्ड के लिए: विंडोज के लिए गिट ने 1.7.4 संस्करण (फरवरी 2011 को जारी) के बाद से गिट डेमन का एक कार्यशील संस्करण शामिल किया है। इसलिए अब सागविन की आवश्यकता नहीं है। यह भी देखें stackoverflow.com/q/5186070/291641
patthoyts

जवाबों:


75

यहाँ कुछ चरण दिए गए हैं जिनका अनुसरण करके आप विंडोज के तहत git डेमॉन प्राप्त कर सकते हैं:

(आवश्यक शर्तें: एक डिफ़ॉल्ट Cygwin स्थापना और एक git क्लाइंट जो git डेमॉन का समर्थन करता है)

चरण 1 : एक बैश खोल खोलें

चरण 2 : निर्देशिका में / cygdrive / c / cygwin64 / usr / local / bin /, निम्नलिखित सामग्री के साथ "gitd" नामक एक फ़ाइल बनाएँ:

#!/bin/bash

/usr/bin/git daemon --reuseaddr --base-path=/git --export-all --verbose --enable=receive-pack

चरण 3 : स्क्रिप्ट को सेवा के रूप में स्थापित करने के लिए एक ऊंचे प्रॉम्प्ट (यानी व्यवस्थापक के रूप में) से निम्न साइबरग्रुव कमांड को चलाएं (नोट: मान लें कि Cygwin C: \ cygwin64 पर स्थापित है):

cygrunsrv   --install gitd                          \
            --path c:/cygwin64/bin/bash.exe         \
            --args c:/cygwin64/usr/local/bin/gitd   \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

चरण 4 : सेवा शुरू करने के लिए निम्नलिखित कमांड चलाएँ:

cygrunsrv --start gitd

आप कर चुके हैं। यदि आप इसका परीक्षण करना चाहते हैं, तो यहां एक त्वरित और गंदी स्क्रिप्ट है, जो दर्शाती है कि आप अपने स्थानीय मशीन पर गिट प्रोटोकॉल पर जोर दे सकते हैं:

#!/bin/bash

echo "Creating main git repo ..."
mkdir -p /git/testapp.git
cd /git/testapp.git
git init --bare
touch git-daemon-export-ok
echo "Creating local repo ..."
cd
mkdir testapp
cd testapp
git init
echo "Creating test file ..."
touch testfile
git add -A
git commit -m 'Test message'
echo "Pushing master to main repo ..."
git push git://localhost/testapp.git master

2
यदि मैं इस पोस्ट को संपादित कर सकता हूं, तो मैं निम्नलिखित जोड़ूंगा: आवश्यकताएँ: पैकेजों के साथ साइबरविन और स्थापित किए गए साइबरग्रीव।
मारियो

2
एक और नोट: पूरी तरह से गिट शेल स्क्रिप्ट के अंदर जाने के लिए योग्य है। मेरी एक मशीन पर विंडोज़ की प्रक्रिया के रूप में निष्पादित करने के दौरान साइबरविन-गिट के बजाय MSYSGit शुरू किया जा रहा था। MSYSGit डेमन मोड का समर्थन नहीं करता है इसलिए सेवा शुरू करने में विफल रही।
मारियो

26
मैंने कभी "विंडोज में काम करने" के रूप में सिगविन समाधान नहीं लिया। यह कहने जैसा है कि "एक VM में रनिंग लिनक्स विंडोज में काम कर रहा है"। ); लेकिन वह सिर्फ अपनी puristic राय है
रूक

3
त्वरित ध्यान दें: / usr / bin didnt मेरे लिए काम करते हैं, लेकिन / बिन काम में (और c: / cygwin / bin / gitd का उपयोग करते हुए) cygrunsrv में रखकर। सुनिश्चित नहीं हैं कि वर्ष मेरे cygwin स्थापित है, लेकिन दिखता / usr / bin की तरह में / bin क्या जो खिड़कियों के बारे में ... इसके अलावा स्पष्ट थोड़े पता नहीं होते, लेकिन फ़ोल्डर बनाने के लिए याद करने के लिए एक कड़ी है / Git में ग: / cygwin /
सेनाफोडा 12mnkeys

3
@Rook - इसके विपरीत, टूल का Cygwin सुइट आपके द्वारा स्थापित किसी भी अन्य तृतीय-पक्ष एप्लिकेशन से अलग नहीं है। Cygwin एक वर्चुअल मशीन नहीं है, बल्कि एक प्री-पैक्ड सूट है। यह सिर्फ विंडोज एक्ज़ीक्यूटेबल्स का सेट है और आपकी मशीन पर बाकी सब चीजों की तरह डीएल है।
डेरेक ग्रीर

16

GitStack आपका सबसे अच्छा विकल्प हो सकता है। यह वर्तमान में मुफ्त (2 उपयोगकर्ताओं के लिए) और लेखन के समय खुला स्रोत है


2
ऐसा लगता है कि खुला स्रोत या छात्र परियोजनाओं के लिए प्रतिबंधित था: "GitStack खुले स्रोत और छात्र परियोजनाओं के लिए स्वतंत्र है!"
कुलसचिव

12

यहाँ विंडोज़ के लिए एक समर्पित सर्वर है: https://github.com/jakubgarfield/Bonobo-Git-Ser/biki


बोनोबो सर्वर की स्थिति क्या है? क्या यह पूरी तरह कार्यात्मक है? मैं दस्तावेजों से नहीं बता सकता, लेकिन यह बहुत सम्मोहक लगता है।
जेफ फ्रिट्ज

1
@JeffFritz: बस इसका उपयोग करना बंद कर दिया। Darn बात git update-server-infoHTTP पुश के बाद रिपॉजिटरी स्टेट ( ) को अपडेट नहीं करता है , और यह तर्क उनके Git लाइब्रेरी (GitSharp) द्वारा लागू नहीं किया गया है। मुझे संदेह है कि यह जल्द ही किसी भी समय एक वास्तविक कार्यशील स्थिति तक पहुंच जाएगा।
आंद्रे कारन

इसके अलावा, Teamcity के साथ काम नहीं करता है (जो मेरे लिए इसका उपयोग नहीं करने का मुख्य कारण है) github.com/jakubgarfield/Bonobo-Git-Server/issues/11
Piers Karsenbarg

3
हैप्पी बोनाबो उपयोगकर्ता यहाँ। मेरा मानना ​​है कि आंद्रे और पियर्स दोनों चिंताओं को अब हल किया जाना चाहिए। उस TeamCity मुद्दे को बंद चिह्नित किया गया था और मुझे केंद्रीय केंद्रीकृत भंडार का उपयोग करने के साथ किसी भी समस्या का अनुभव नहीं हुआ है।
क्विन बेली

9

यदि आप विंडोज वातावरण में काम कर रहे हैं, तो क्या आपने मर्क्यूरियल पर विचार किया है ? यह Git की तरह एक वितरित संस्करण नियंत्रण प्रणाली है, लेकिन विंडोज के साथ कहीं अधिक करीने से और आसानी से एकीकृत करता है।


9
यह सच है कि विंडोज़ मशीनों पर मर्क्यूरियल का उपयोग करना बहुत आसान है, कम से कम जहाँ तक रिपॉजिटरी को सिंक करने में सक्षम होने का संबंध है। यदि आप वास्तव में Git का उपयोग करना है, तो बहुत उपयोगी उत्तर नहीं!
फ्रैंक शियरर

बाज़ार खिड़कियों पर मूल रूप से काम करता है; यहां तक ​​कि इसे व्यावसायिक समर्थन भी प्राप्त है।
hasen

7

CygWin को इंस्टॉल करना एक ओवरकिल है, इस ट्यूटोरियल को पढ़ें कि यह कैसे तेजी से और देशी तरीके से करें:

http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP


मुझे पार्टी के लिए देर हो रही है, लेकिन यह लिंक अब tortoisegit.org पर पुनर्निर्देशित करता है जो क्लाइंट के बारे में बात करता है। मुझे वहां सर्वर चलाने के बारे में कुछ नहीं मिला।
रिचर्ड ए

7

यदि आपको cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.कमांड चलाने के बाद त्रुटि मिलती है :

cygrunsrv --start gitd

इसका मतलब है कि आपने 'आधार-पथ' फ़ोल्डर नहीं बनाया है।

फोल्डर बनाना / 'git' और 'rerunning' कमांड इसे ठीक करेगा।


यदि आपका /gitNTFS अनुमति सेवा खाते (सिस्टम) को पढ़ने / लिखने की अनुमति नहीं देता है, तो आपको यह त्रुटि भी हो सकती है।
स्पैलसन

5

मैं वर्तमान में विंडोज पर cygwin के ssh डेमॉन का उपयोग कर रहा हूं और अपने रेपो को रिमोट एक्सेस की अनुमति दे रहा हूं। यह काफी अच्छी तरह से काम करता है, मेरा पूरा नियंत्रण है जो अपने ssh प्रमाणपत्रों द्वारा मेरे रेपो तक पहुंचता है, और प्रदर्शन Waz, यहां तक ​​कि दूरस्थ WAN और VPN लिंक पर भी।

एक अन्य उपाय गिटोसिस का उपयोग करना है । यह एक ऐसा टूल है जो रिपॉजिट होस्टिंग को बहुत आसान बनाता है।


आपको साइबर डेविन के साथ काम करने का मौका कैसे मिला? मेरे पास ssh डेमॉन सेटअप है और मैं ssh के माध्यम से अपनी मशीन में लॉगिंग का परीक्षण कर रहा हूं, लेकिन जब भी मैं git डेमॉन को चलाने की कोशिश करता हूं तो यह लटक जाता है।
थिरू

आप कैसे एक बग के रूप में खिड़कियों पर काम कर gitosis मिल गया: github.com/res0nat0r/gitosis/issues#issue/1
dalore

4

आपको किसी सेवा की मेजबानी करने की आवश्यकता नहीं है, आप एक साझा ड्राइव पर एक साझा भंडार भी बना सकते हैं। बस एक नंगे भंडार का निर्माण करें। आप एक मौजूदा रेपो को एक साझा एक का उपयोग करके क्लोन कर सकते हैं: "git क्लोन --bare --sared [स्रोत] [डेस्ट]"। आप "git init --bare --sared = all" का उपयोग करके एक नया भंडार भी प्राप्त कर सकते हैं।

हेंक


3
हां, आप किसी ड्राइव पर एक साझा रिपॉजिटरी बना सकते हैं, लेकिन मैं उस रिपॉजिटरी तक नहीं पहुंच पाऊंगा जब तक कि मैं रिपॉजिटरी के समान नेटवर्क पर नहीं हूं। इस सवाल का लक्ष्य एक सहकर्मी के लिए एक रिपॉजिटरी को रिमोट एक्सेस की अनुमति देना है जो ऑफ-साइट काम कर रहा है
जेफ फ्रिट्ज

3
यह वास्तव में सवाल का हल नहीं है और वैसे भी करने के लिए एक बहुत ही संदिग्ध बात की तरह लगता है।
पैट ओ


4

अब msysGit git डेमॉन का समर्थन करता है! यह ठीक काम करता है (मेरे लिए कम से कम)। मैं इसे सेवा के रूप में चलाने की कोशिश करने वाला हूं ...


क्या यह पुश और पुल दोनों का समर्थन करता है? क्योंकि पुश करते समय कोई समस्या कोड होता है। Googlep/msysgit/issues/detail?id=457
वादिम

तो क्या आपको यह एक सेवा के रूप में चल रहा है? क्या आप "आरंभ करना" मार्गदर्शिका के बारे में जानते हैं?
क्रेग मैकक्यून

4

SCM मैनेजर

  • Git, Mercurial, Subversion repos for a box से लाइटवेट http- सर्वर (केवल जावा की जरूरत है)
  • उपयोगकर्ताओं, ACLs, repos के प्रबंधन के लिए वेब-इंटरफ़ेस

2

विंडोज पर, आप डीएवी एक्सटेंशन का उपयोग करके एचटीटी या एचटीटीपीएस पर अपाचे के साथ जीआईटी रिपॉजिटरी की सेवा ले सकते हैं

Git रिपॉजिटरी पथ को फिर Apache ऑथेंटिकेशन चेक से सुरक्षित किया जा सकता है जैसे कि कुछ IP एड्रेस या htpasswd / htdigest टाइप ऑथेंटिकेशन को प्रतिबंधित करना।

Htpasswd / htdigest प्रमाणीकरण का उपयोग करने की सीमा यह है कि उपयोगकर्ता नाम: पासवर्ड अनुरोधित Git URL में पारित किया गया है, इसलिए कुछ URL पते पर Git URL तक पहुंच को प्रतिबंधित करना बेहतर है।

संपादित करें: ध्यान दें, आप Git URL से पासवर्ड छोड़ सकते हैं और Git आपको पुश और पासवर्ड लाने के बजाय संकेत देगा।

HTTPS का उपयोग करने का मतलब है कि सभी डेटा ट्रांसफर में एन्क्रिप्ट किया गया है।

इसे स्थापित करना, और काम करना काफी आसान है।

निम्न उदाहरण आईपी पते और उपयोगकर्ता द्वारा एक्सेस कंट्रोल के संयोजन को दर्शाता है: मानक HTTP पर पासवर्ड।

उदाहरण Apache Virtualhost

## GIT HTTP DAV ##
<VirtualHost *:80>

  ServerName git.example.com
  DocumentRoot C:\webroot\htdocs\restricted\git
  ErrorLog C:\webroot\apache\logs\error-git-webdav.log

    <Location />
      DAV on
      # Restrict Access
      AuthType Basic
      AuthName "Restricted Area"
      AuthUserFile "C:\webroot\apache\conf\git-htpasswd"
      # To valid user
      Require valid-user
      # AND valid IP address
      Order Deny,Allow
      Deny from all
      # Example IP 1
      Allow from 203.22.56.67 
      # Example IP 2
      Allow from 202.12.33.44 
      # Require both authentication checks to be satisfied
      Satisfy all
    </Location>

</VirtualHost>

उदाहरण .it / config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = http://username:password@git.example.com/codebase.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

2

काम पर मैं एक विंडोज सर्वर पर स्थापित GitBlit GO का उपयोग कर रहा हूं। त्रुटिपूर्ण रूप से कार्य करें और उपयोगकर्ता प्रमाणीकरण और प्राधिकरण के लिए ActiveDirectory के साथ अच्छी तरह से एकीकृत करें। यह मुफ़्त भी है और ओपनसोर्स (अपाचे लाइसेंसधारी)

GitBlit होमपेज

केवल HTTP (एस) एक्सेस का समर्थन किया गया है, कोई एसएसएच नहीं है, लेकिन विंडोज के तहत आपको कुछ और नहीं चाहिए।


साइट पर सेटअप दस्तावेज़ के आधार पर उनके पास SSL (HTTPS) समर्थन है।
दांद्रे

हां, HTTP और HTTPS समर्थित हैं (मैं विशेष रूप से HTTPS का उपयोग कर रहा हूं) लेकिन कोई SSH नहीं। प्रतिक्रिया अपडेट की गई।
जियान मार्को

2

यह एक प्रश्न का उत्तर है जो 7 साल से अधिक पुराना है।

Https://bitbucket.org/product/server से $ 10 एक बार भुगतान के लिए, कोई भी 10 उपयोगकर्ताओं के लिए 64-बिट विंडोज लाइसेंस खरीद सकता है ।

जाहिरा तौर पर 32-बिट संस्करण केवल उनके संग्रह के माध्यम से उपलब्ध हैं।

Bitbucket Server को पहले Stash के नाम से जाना जाता था ।

कृपया ध्यान दें कि मैंने इस संस्करण की कोशिश नहीं की है, लेकिन $ 10 एक अच्छा सौदा लगता है; यहाँ मैंने पढ़ा कि एटलसियन 10 डॉलर चैरिटी को देता है। FWIW


0

मुझे लगता है कि हेंक जो कह रहा है वह यह है कि आप एक ड्राइव पर एक साझा रिपॉजिटरी बना सकते हैं और फिर इसे कुछ सामान्य स्थान पर कॉपी कर सकते हैं जो आप दोनों के पास है। अगर कुछ कंपनी सर्वर या ऐसा कुछ है, जिसकी आप दोनों के पास पहुंच है, तो आप रिपॉजिटरी को किसी ऐसे स्थान पर रख सकते हैं, जहां आप इसे अपने कंप्यूटर पर वापस भेज सकते हैं, और फिर उसी से खींच सकते हैं। मैंने अपने स्वयं के लिए यह थोड़ी देर किया, क्योंकि मेरे पास दो कंप्यूटर हैं। यह एक परेशानी है, लेकिन यह काम करता है।


2
"फ़ोल्डर साझा करने में कमी", मूल प्रश्न कहते हैं।
को ऑर्बिट में

0

विंडोज 7 x64 और साइगविन 1.7.9 के लिए मुझे साइबरगन के आर्ग्स तर्क के रूप में usr / bin / gitd का उपयोग करने की आवश्यकता है

cygrunsrv   --install gitd                          \
            --path c:/cygwin/bin/bash.exe           \
            --args /usr/bin/gitd                    \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

इसके अलावा, मुझे सेवा स्थापित करने के लिए एक प्रशासक के रूप में बैश चलाने की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.