簡體   English   中英

在Windows中托管Git存儲庫

[英]Hosting Git Repository in Windows

目前有辦法在Windows中托管共享Git存儲庫嗎? 我知道您可以在Linux中配置Git服務:

git daemon

是否有本機Windows選項,缺少共享文件夾,以托管Git服務?

編輯:我目前正在使用gg的cygwin安裝來存儲和使用Windows中的git存儲庫,但我想采取下一步托管存儲庫,其中包含可以提供對其他人的訪問權限的服務。

以下是在Windows下運行git守護程序時可以遵循的一些步驟:

(先決條件:默認的Cygwin安裝和支持git守護程序的git客戶端)

第1步 :打開一個bash shell

步驟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 :從提升的提示符(即作為管理員)運行以下cygrunsrv命令以將腳本作為服務安裝(注意:假設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

你完成了。 如果你想測試它,這里有一個快速而又臟的腳本,它表明你可以將git協議推送到你的本地機器:

#!/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

GitStack可能是您的最佳選擇。 在撰寫本文時,它目前是免費的(最多2個用戶) 和開源

這是Windows專用的git服務器: https//github.com/jakubgarfield/Bonobo-Git-Server/wiki

如果您在Windows環境中工作,您是否考慮過Mercurial 它是一個像Git這樣的分布式版本控制系統,但與Windows整合得更加簡潔。

如果您收到錯誤cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started. 運行命令后:

cygrunsrv --start gitd

這意味着您沒有創建'base-path'文件夾。

創建文件夾'/ git'並重新運行該命令將解決此問題。

安裝CygWin是一種矯枉過正,請閱讀本教程,了解如何更快地和本機化:

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

我目前正在Windows上使用cygwin的ssh守護進程來提供服務並允許遠程訪問我的倉庫。 它工作得很好,我可以完全控制誰通過他們的ssh證書訪問我的repo,並且即使在遠程WAN和VPN鏈接上,性能也會激活。

另一個解決方案是使用Gitosis 它是一個使托管存儲更容易的工具。

SCM經理

  • 用於Git,Mercurial,Subversion repos的輕量級http-server 從一個盒子里出來 (只需要Java)
  • 用於管理用戶,ACL,repos的Web界面

你考慮過使用cygwin層嗎? 看到這個鏈接

現在msysGit支持git守護進程! 它工作正常(至少對我來說)。 我會嘗試讓它作為服務運行...

您不需要托管服務,也可以在共享驅動器上創建共享存儲庫。 只需創建一個裸存儲庫。 您可以使用以下命令將現有倉庫克隆為共享倉庫:“git clone --bare --shared [source] [dest]”。 您還可以使用“git init --bare --shared = all”初始化新的存儲庫。

亨克

在工作中我正在使用安裝在Windows Server上的GitBlit GO。 完美地工作並與ActiveDirectory很好地集成以進行用戶身份驗證和授權。 它也是免費的和開源的(Apache許可)

GitBlit主頁

僅支持HTTP(S)訪問,不支持SSH,但在Windows下,您不需要任何其他內容。

這是對一個超過7年的問題的2015年答案。

https://bitbucket.org/product/server獲得10美元的一次性付款,可以為最多10位用戶購買64位Windows許可證。

顯然,32位版本只能通過其存檔獲得。

Bitbucket Server以前稱為Stash

請注意,我沒有試過這個版本,但10美元似乎是一個很好的協議; 在這里,我讀到Atlassian給慈善機構10美元。 FWIW

在Windows上,您還可以使用DAV擴展通過HTTP或HTTPS為Apache提供Git存儲庫。

然后可以使用Apache身份驗證檢查來保護Git存儲庫路徑,例如限制到某些IP地址或htpasswd / htdigest類型身份驗證。

使用htpasswd / htdigest身份驗證的限制是用戶名:密碼在請求的Git URL中傳遞,因此限制訪問某些IP地址的Git URL更好。

編輯:注意,您可以將密碼保留在Git URL之外,Git會提示您輸入密碼並提取/取/取。

使用HTTPS意味着所有數據都在傳輸中加密。

它很容易設置和工作。

以下示例顯示了IP地址和用戶的訪問控制組合:標准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>

示例.git / 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

對於Windows 7 x64和Cygwin 1.7.9,我需要使用/ usr / bin / gitd作為cygrunsrv的args參數

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

此外,我需要以管理員身份運行bash來安裝服務。

我認為Henk所說的是您可以在驅動器上創建共享存儲庫,然后將其復制到您可以訪問的某個公共位置。 如果有一些公司服務器或者你都有ssh訪問權限的東西,你可以將存儲庫放在SCP可以將它放回到你自己的計算機的某個地方,然后從中拉出來。 我這樣做了一段時間,因為我有兩台電腦。 這很麻煩,但確實有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM