我的一位同事对PerForce的可能性感到兴奋(我们基本上需要在后勤上对补丁和更改进行分组,并且本机上的SCM支持非常好).我们目前使用CVS,并对所有可能性开放.我们只有少数使用纯Eclipse并使用ant脚本运行构建的开发人员.
在跳入水中之前,我想听听其他技术原因可以说"好主意"或"坏主意"的人.我也想知道这在你的日常工作中是多么的干扰.
编辑2011:仅供记录.我们迁移到git - 决定性的因素是我们使用Eclipse和eclipse.org用于git,因此我们最终可以期待非常好的IDE集成.我们有点早了 - 直到今年夏天的Eclipse 3.7.今天git在Eclipse中非常好用.
编辑2015:事实证明,git最终成为无可争议的赢家,这得益于github和一般的IDE支持,结合Maven最终使Java项目与IDE无关.
我目前正在研究几个项目(至少开发部分只由我完成:).将Eclipse与不同的Java,R,SQL和其他源文件一起使用我想知道什么版本的控制系统最适合我.
当时Eclipse IDE的历史似乎已经足够了,但我不确定这是否会在一个月/一年内成立......
你会推荐什么解决方案?为什么?
更确切地说:如果我决定使用完整版控制系统,我肯定会使用SVN或git.但我不确定是否有必要......
small update: has the release of Eclipse Helios added new opinions?
Run Code Online (Sandbox Code Playgroud) 考虑这个简单的python代码,它演示了一个非常简单的版本控制设计:
def build_current(history):
current = {}
for action, key, value in history:
assert action in ('set', 'del')
if action == 'set':
current[key] = value
elif action == 'del':
del current[key]
return current
history = []
history.append(('set', '1', 'one'))
history.append(('set', '2', 'two'))
history.append(('set', '3', 'three'))
print build_current(history)
history.append(('del', '2', None))
history.append(('set', '1', 'uno'))
history.append(('set', '4', 'four'))
print build_current(history)
for action, key, value in history:
if key == '2':
print '(%s, %s, %s)' % (action, key, value)
Run Code Online (Sandbox Code Playgroud)
请注意,通过使用历史列表,您可以在曾经存在的任何状态下重建当前字典.我认为这是一个"前向构建"(缺少一个更好的术语)因为要构建当前字典,必须从头开始并处理整个历史列表.我认为这是最明显和最直接的方法.
正如我所听到的,早期版本控制系统使用了这种"前向构建"过程,但它们并不是最佳的,因为大多数用户更关心构建的最新版本.此外,当用户只关心查看最新版本时,他们不想下载整个历史记录.
那么我的问题是,在版本控制系统中存储历史记录还有哪些其他方法?也许可以使用"向后构建"?这可能允许用户仅下载最近的修订版而不需要整个历史记录.我还看到了一些用于存储历史记录的不同格式,即:变更集,快照和补丁.变更集,快照和补丁之间有什么区别? …
远程工作时,我们的团队只能通过远程桌面访问我们的办公室PC中的源代码,因此我们永远不会真正在离线模式下工作.像Mercurial或Git这样的分布式版本控制系统是否仍然优于我们当前的集中式Subversion设置?如果是这样,他们是什么?有任何缺点或陷阱吗?我已经在许多地方看到,转向分布式版本控制需要改变思维.有人可以解释在这方面需要改变什么吗?
但是经历了最初的学习过程,我遇到了很多新的术语.我觉得理解这些术语的确切含义对于在使用实时项目时不会犯下不可逆转的错误至关重要.
你能否推荐一个有条不紊地学习关键术语含义的好资料来源,例如origin,master,commit vs. push,refs,heads,clone with checkout等?
我来自git via terminal,而不是GitHub,我想知道如何在两者之间建立联系.
从我结账,我通过运行此命令在终端创建了一个分支:
git checkout -b newbranchname
根据我的理解,GitHub称之为"分叉".如何将我的盒子上的分支连接到GitHub上的结账分支?
(提前谢谢你的帮助.我的背景是大约1.5年的颠覆.)
我正在计划我的linux/apache/php web项目的目录结构,如下所示:
只会www.example.com/webroot/暴露在阿帕奇
www.example.com/
webroot/
index.php
comp1/
comp2/
component/
comp1/
comp1.class.php
comp1.js
comp2/
comp2.class.php
comp2.css
lib/
lib1/
lib1.class.php
Run Code Online (Sandbox Code Playgroud)
在component/和lib/目录将只在PHP路径.
为了使webroot目录中的css和js文件可见,我计划使用符号链接.
webroot/
index.php
comp1/
comp1.js (symlinked)
comp2/
comp2.css (symlinked)
Run Code Online (Sandbox Code Playgroud)
我尝试遵循以下原则:
git如何正确处理单个文件的符号链接,有什么需要考虑的吗?
说到图像,我需要链接目录,如何用git处理?
component/
comp3/
comp3.class.php
img/
img1.jpg
img2.jpg
img3.jpg
Run Code Online (Sandbox Code Playgroud)
它们应该链接在这里:
webroot/
comp3/
img/ (symlinked ?)
Run Code Online (Sandbox Code Playgroud)
如果使用符号链接有缺点,我可以直接将图像移动到webroot/tree,这将打破第三个原则(git实用性).
所以这是一个git和符号链接问题.但我有兴趣听听有关php布局的评论,也许你想使用评论功能.
我的商店正在尝试为我们维护的OSS产品正式化发布管理流程(编辑:使用SVN进行版本控制).它是一种Web开发框架/ CMS类型的东西,因为它是一个其他项目建立在其上的产品.这使得关于版本控制系统的清晰沟通对于使用该工具的开发人员尤其重要.
我希望找到一些如何最好地绘制这个系统的示例,以便我们可以在内部和外部开发人员之间更好地进行沟通.我知道有很多关于版本控制的标准和最佳实践,所以我希望这也扩展到某种视觉词汇.举个例子,http://en.wikipedia.org/wiki/Versioning#Software_Versioning_schemes上有一个漂亮的图表.是否有关于如何设计这些类型的东西的指南?
versioning version-control project-management visualization release-management
对于需要只能访问存储库特定部分的开发人员的商业项目,您推荐哪一个?
开发IDE是Eclipse
编程语言是C/C++
该要求的主要功能是:对存储库的权威和ACL分层访问