使用一个官方存储库作为远程数据库,并从中克隆多个本地存储库,是否可以在该主存储库上编写预提交钩子并在其所有克隆上强制执行?
我可以看到为什么分布式源代码控制系统(像Mercurial这样的DVCS)对开源项目有意义.
但它们对企业有意义吗?(通过集中的源控制系统,如TFS)
DVCS的哪些特性使其更适合或更适合具有许多开发人员的企业?(通过集中式系统)
我有一个开源的项目git用于修订控制.很快,我将发布该项目的高级托管版本,但是对于高级托管版本(性能等)的代码将进行更改,这在开源版本中不应该存在.
我想避免使用两个单独的目录/项目,因为如果我修复了开源版本中的错误,那么该错误最有可能出现在高级托管版本中.我不想在两个地方做出改变.
管理这个的最佳方法是什么?简单分支git将无法正常工作,因为某些文件需要有两个版本:开源版本和高级托管版本.
谢谢您的帮助.
我知道有数千个相似的话题浮出水面.我在这里读了至少5个线程但是为什么我仍然不相信DVCS?
我只有以下问题(注意我只是自私地担心Java项目)
推我!
某个遥控器的Fetch URL和Push URL何时不相同?
例如,当我运行git remote show central远程命名为central时,输出如下:
* remote central
Fetch URL: aoberoi@example.com:/home/aoberoi/Repositories/example.git
Push URL: aoberoi@example.com:/home/aoberoi/Repositories/example.git
HEAD branch: master
Remote branch:
master tracked
Run Code Online (Sandbox Code Playgroud)
我只是不明白为什么我会从两个不同的URL中获取和推送,这是什么类型的工作流程?
开发团队经常受到版本控制的构建暂时受损的困扰.整个团队的生产力可以在尝试从一个人破坏的构建中恢复时停止.
是否有软件可以通过不接受首先未通过测试的提交来允许托管Git以防止破坏版本控制中的版本?例如,使用场景可能如下所示:
几点说明:
我们想使用TeamCity实现CI.
我们使用Git进行源代码控制,并希望利用TeamCity的"预先测试的提交"或"个人构建"功能.
有没有人对Teamcity的VS插件有经验?
据我所知,它只支持Subversion,没有关于Git的消息.
任何人都使用此设置取得了成功吗?
我想我误解了一些东西却找不到确切的东西.我用Google搜索,但没有得到这个想法.有两种流行的技术 - 持续集成和分布式源代码控制.人们以某种方式将它们结合起来,但我不明白如何.
AFAIK,持续集成意味着一旦您在本地测试代码,就会提交到中央存储库(推送).与此同时,分布式系统非常受欢迎,因为您可以在本地提交和提交并提交代码并使用代码,只有在您对其充满信心和满意时才将其推送给其他代码.因此,虽然它没有强制,但它鼓励不要急于推动.在我看来,每隔几个小时就不会发生CI推送的经典之作.
那么你如何以及何时将这两件事联系起来呢?或者我说的错了吗?
编辑
我读了前三个答案.感谢您的答复.我仍然感到困惑,但现在我可以更准确地提出这个问题了.
在分布式系统中,没有那么多频繁提交的愿望,然后是集中式的.那么有关于在分布式系统中发布以符合CI的频率的指南吗?它仍然是一天几次还是这个规则的另一个版本?
我正在试图弄清楚如何编写一个预提交钩子来Git检查我的Hudson构建状态.如果先前的构建失败,则应该禁止任何人在没有首先编写特定行的情况下进行提交,例如"固定构建".
编辑:
第一个回答者提供了硬币的一面:Hudson API.
我现在需要另一面.如何编写预提交挂钩Git?
我做:
$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.
Run Code Online (Sandbox Code Playgroud)
然后我做
$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我只想从远程副本中获取最新版本,并覆盖本地副本上的任何内容.
编辑:我尝试了一切.我删除了我的本地仓库,并且
$ git clone ssh://root@something.com/directory
...
Checking out files: 100%, done.
$ git status
On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
一切看起来都不错吧?拉以防万一.
$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)
我在文件中进行了一行更改,看看是否可以推送它.
$ git commit .
[master 1e18af1] Rando change
1 files changed, 2 insertions(+), 0 deletions(-)
$ git push
Counting objects: 13, done.
Delta compression using up to …Run Code Online (Sandbox Code Playgroud) 我在远程仓库上找不到任何文件.
git status.它给了我整个列表,但每个文件前面都有"删除"字样.见下文.使用我不在任何分支上的提示,我检查了具体的提交.它找到了它,但文件git status仍然没有显示.它告诉我:
注意:转移到'9c47b5',这不是本地分支
试图结帐大师HEAD.没有运气,它告诉我
-jailshell:/ usr/bin/git:没有这样的文件或目录
Git状态显示:
[frumwebc@your tanee.com]$ git status
# Not currently on any branch.
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: _notes/dwsync.xml
# deleted: contact-us/_notes/dwsync.xml
# deleted: contact-us/index.html
#
Run Code Online (Sandbox Code Playgroud)
警告是:
warning: updating the current branch
warning: Updating the currently checked out branch may cause confusion,
warning: as the index …Run Code Online (Sandbox Code Playgroud) 我很快就会转向git进行版本控制.我的连续构建系统是Hudson,我使用maven来构建我的工件.
任何人都有最佳实践来设置git以最好地使用这些其他工具.
关于如何在git中管理包和插件以便最容易地进入Hudson的建议也将受到赞赏.
谢谢,麻烦您了.