当前是否可以在Windows中托管共享的Git存储库?我了解您可以使用以下命令在Linux中配置Git服务:
git daemon
是否有本机Windows选项(缺少共享文件夹)来托管Git服务?
编辑:我当前正在使用git的cygwin安装来存储和使用Windows中的git存储库,但是我想采取下一步的步骤,使用可向他人提供访问权限的服务托管存储库。
git daemon
。:\
当前是否可以在Windows中托管共享的Git存储库?我了解您可以使用以下命令在Linux中配置Git服务:
git daemon
是否有本机Windows选项(缺少共享文件夹)来托管Git服务?
编辑:我当前正在使用git的cygwin安装来存储和使用Windows中的git存储库,但是我想采取下一步的步骤,使用可向他人提供访问权限的服务托管存储库。
git daemon
。:\
Answers:
您可以按照以下步骤使git守护程序在Windows下运行:
(先决条件:默认的Cygwin安装和支持git守护程序的git客户端)
步骤1:打开bash外壳
步骤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:从提升的提示符下(例如,以admin身份)运行以下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-启动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
git update-server-info
在HTTP推送后,该死的东西不会更新存储库状态(),并且其逻辑未由其Git库(GitSharp)实现。我怀疑它将很快达到真正的工作状态。
如果您在Windows环境中工作,您是否考虑过Mercurial?它是类似于Git的分布式版本控制系统,但与Windows的集成更加整洁,轻松。
安装CygWin实在是太过分了,请阅读本教程,了解如何更快更本机地执行此操作:
http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP
如果cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.
在运行命令后收到错误:
cygrunsrv --start gitd
这意味着您没有创建“基本路径”文件夹。
创建文件夹“ / git”并重新运行命令将解决此问题。
/git
NTFS权限不允许服务帐户(SYSTEM)进行读/写访问,则也会出现此错误。
我目前在Windows上使用cygwin的ssh守护进程提供服务并允许远程访问我的存储库。它运行得很好,我可以完全控制谁通过他们的ssh证书访问我的存储库,并且即使在远程WAN和VPN链接上,性能也非常出色。
另一个解决方案是使用Gitosis。它是使托管存储库更容易的工具。
您不需要托管服务,也可以在共享驱动器上创建共享存储库。只需创建一个裸仓库。您可以使用以下命令将现有存储库克隆到共享库中:“ git clone --bare --shared [source] [dest]”。您也可以使用“ git init --bare --shared = all”来初始化新的存储库。
亨克
现在msysGit支持git daemon了!它工作正常(至少对我而言)。我将尝试使其作为服务运行...
在Windows上,您还可以使用DAV扩展,通过HTTP或HTTPS在Apache上为Git存储库提供服务。
然后,可以使用Apache身份验证检查来保护Git存储库路径,例如,限制为某些IP地址或htpasswd / htdigest类型身份验证。
使用htpasswd / htdigest身份验证的局限性在于,在请求的Git URL中传递了username:password,因此将对Git URL的访问限制为某些IP地址会更好。
编辑:注意,您可以将密码保留在Git URL之外,而Git会提示您在推入和提取/拉取时输入密码。
使用HTTPS意味着所有数据都将在传输中进行加密。
它很容易设置和运行。
以下示例显示了通过IP地址和标准HTTP上的user:password进行访问控制的组合。
示例Apache虚拟主机
## 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
这是2015年对一个已有7年历史的问题的解答。
从https://bitbucket.org/product/server一次性支付10美元,即可购买多达10位用户的64位Windows许可证。
显然,只能通过其存档使用32位版本。
Bitbucket Server以前称为Stash。
请注意,我还没有尝试过这个版本,但是10美元似乎很划算;在这里,我读到Atlassian向慈善机构捐款10美元。第一次世界大战
我认为Henk在说的是,您可以在驱动器上创建一个共享存储库,然后将其复制到双方都可以访问的某个公共位置。如果有某些公司服务器或您都可以通过ssh访问的服务器,则可以将存储库放置在某个位置,在该位置可以将其SCP返回到您自己的计算机,然后从那里拉出。因为有两台计算机,所以我自己做了一段时间。这很麻烦,但是确实有效。