在每个文件本质上都是自己的repo的情况下,我可以使用GIT吗
注意:尽管(从已经发生的讨论中)看起来GIT实际上并不适合这个用例,但我已经向赏金者提出了这个问题,以提示更明确的答案,希望来自于对GIT有丰富经验的人。原始问题如下 我有一个情况,我有一个独立的文件大集合。所谓独立,我的意思是每个文件不依赖于它周围文件的存在、不存在或特定状态。一个很好的类比是图像目录,我们的工作流程允许独立地创建、编辑和删除每个图像,并且对图像所做的工作与目录中的其他图像无关 请注意,这种独立性不仅是偶然的,而且对我们的工作流程至关重要 这些文件中的每一个都将受益于类似GIT的工作流程。如果能够跟踪每个文件的更改,让人们在独立的分支中处理每个文件,然后在完成后合并他们的更改,那就太好了(因此,为了进行类比,假设这些是SVG图像,您可以让一位艺术家绘制图像,让一位翻译人员翻译文本内容),并访问使用GIT的其他项目中的文件 根据我的经验,当您有一组文件都处于特定状态时,GIT非常棒。例如,当您在达到“Production Release 1.2”状态后提交GIT回购时,每个文件都会在提交时共享“Production Release 1.2”状态 但我不确定如何应用GIT工作流,或者这样做是否可行,因为每个文件都不能共享周围文件的状态。您可以将每个文件放在它自己的GIT repo中,但这似乎并不实用 因此,我的问题是:在每个文件本质上都是自己的repo的情况下,我可以使用GIT吗,git,Git,注意:尽管(从已经发生的讨论中)看起来GIT实际上并不适合这个用例,但我已经向赏金者提出了这个问题,以提示更明确的答案,希望来自于对GIT有丰富经验的人。原始问题如下 我有一个情况,我有一个独立的文件大集合。所谓独立,我的意思是每个文件不依赖于它周围文件的存在、不存在或特定状态。一个很好的类比是图像目录,我们的工作流程允许独立地创建、编辑和删除每个图像,并且对图像所做的工作与目录中的其他图像无关 请注意,这种独立性不仅是偶然的,而且对我们的工作流程至关重要 这些文件中的每一个都将受益于类似GIT
它看起来可能取代了成千上万的GIT回购。GIT可以为单个文件创建存储库
如果您不想为每个文件创建存储库,也不需要同时查看其目录中的所有文件,您可以从一个空存储库开始,然后为每个文件创建一个分支。如果不在这些独立分支之间进行任何合并,它们将保持独立。您仍然可以根据特定文件的分支创建新的分支,并将更改合并回来。我真的看不出有什么问题。我认为您将存储库视为对代码(本例中为文件)进行版本控制的一种方式。虽然这是正确的,但这个想法可能会导致错误,因为这并不意味着您总是以X.Y的形式提交版本 我的意思是,你可以把回购协议看作是一个时间表,在这个时间表中,你有一个文件夹内容的不同状态。这些文件是否相互关联并不重要 有了git,您总是可以获得单个文件的旧版本,而不需要返回到repo的完整状态 因此,在您的案例中,一个包含多个独立文件的回购协议和多个包含一个文件的回购协议之间没有任何区别。实际上有很大的区别,第一种选择是不可接受的,而第二种选择是不可处理的
实际上,一个普通项目有完全独立的文件,但它们都属于同一个repo。您可以使用单个repo,并使用git钩子强制执行一个粒度 客户端预提交钩子将确保提交对单个文件进行了更改,并且可选地,prepare-commit-msg钩子将自动在提交消息前面加上文件名 服务器端预接收钩子可以执行上述操作 你会
#!/usr/bin/python
# $Id: cvs-update-safe,v 1.1 2007-11-02 19:47:02 falk Exp $
usage = """Like cvs update, but only updates files which will update cleanly.
Usage: cvs-update-safe [files...]
"""
import sys
import os
import string
import commands
def main():
cmd = 'cvs -n update ' + string.join(sys.argv[1:], ' ')
output = commands.getoutput(cmd).split('\n')
olist = []
for line in output:
line = line.split()
if line[0] is 'U' and len(line) is 2:
olist.append(line[1])
if olist:
cmd = 'cvs update ' + string.join(olist, ' ')
os.system(cmd)
else:
print 'Nothing to update'
if __name__ == "__main__":
sys.exit(main())