Subversion 用户眼中的 Git (5): 没有部分检出
2011-08-16 11:42
344 查看
Subversion 可以将整个库检出到工作区,也可以将某个目录检出到工作区。对于要使用一个庞大、臃肿的版本库的用户,部分检出是非常方便和实际的。 但是 Git 只能全部检出,不支持按照目录进行部分检出。 那么这是为什么呢? —— Subversion 用户问道。 Git 的确没有部分检出,这并不是说只有将整个库克隆下来才能查看文件。有很多
git 工具,提供直接浏览git库的功能,例如 gitweb, trac 的 git 版本库浏览, redmine 的 git 版本库浏览。
可以对一个大的版本库(分布式)进行部分检出,检出的也是一个独立的小版本库(分布式)
小的版本库也可以被克隆
小的版本库中的提交可以 PUSH 到大的版本库中
小的版本库可以从大的版本库 PULL 相应目录的改动内容
这种版本控制系统不能在分布式版本控制系统中实现,我认为:
大的版本库和部分检出的小的版本库,无法保证提交ID的一致性 因为分布式版本控制系统的提交ID是整个提交信息的SHA1哈希值,大版本库的提交经过裁减——部分检出后,内容变了,提交 ID 也应该改变才对。
因为大的版本库和小的版本库(部分检出)的提交ID不一致,导致两个版本库的 PULL 和 PUSH 无法操作 即不知道哪些提交相互对应,造成两个版本库间的PULL和PUSH无法进行
分布式版本控制系统中,提交作为一个整体存在,一个提交由于部分检出而人为分拆,造成混乱,如何合并呢?
Subversion 需要 svn export 命令是因为该命令可以导出一个干净的目录,即不包含 .svn 目录(包含配置文件和文件原始拷贝)
Git 只在根目录存在一个 .git 目录,此外在各个子目录下不再有任何控制目录存在,因此无须通过另外的命令导出一个纯粹的干净的原始文件目录
只需要用系统提供的文件/目录拷贝命令,即可以实现将干净的目录复制到指定的目录中
可以用 git-svn 来对 Subversion 代码库的任何目录进行克隆,克隆出来的是一个git版本库
可以在部分克隆的版本库中用 Git 进行本地提交
部分克隆版本库中的本地提交可以提交到上游 Subversion 版本库的相应目录中
git 工具,提供直接浏览git库的功能,例如 gitweb, trac 的 git 版本库浏览, redmine 的 git 版本库浏览。
Git 为什么没有部分检出?
Git 以及其他分布式版本控制工具,据我所知,都没有实现部分检出的功能,至少没有实现如下的部分检出: 想像中的完美版本控制系统(但并不存在):可以对一个大的版本库(分布式)进行部分检出,检出的也是一个独立的小版本库(分布式)
小的版本库也可以被克隆
小的版本库中的提交可以 PUSH 到大的版本库中
小的版本库可以从大的版本库 PULL 相应目录的改动内容
这种版本控制系统不能在分布式版本控制系统中实现,我认为:
大的版本库和部分检出的小的版本库,无法保证提交ID的一致性 因为分布式版本控制系统的提交ID是整个提交信息的SHA1哈希值,大版本库的提交经过裁减——部分检出后,内容变了,提交 ID 也应该改变才对。
因为大的版本库和小的版本库(部分检出)的提交ID不一致,导致两个版本库的 PULL 和 PUSH 无法操作 即不知道哪些提交相互对应,造成两个版本库间的PULL和PUSH无法进行
分布式版本控制系统中,提交作为一个整体存在,一个提交由于部分检出而人为分拆,造成混乱,如何合并呢?
Git 为什么没有必要实现 svn export 的功能?
Subversion 有一条命令:svn export ,可以将 subversion 版本库的一个目录下所有内容导出到指定的目录下。而 git 却无法找到类似命令。为什么呢?Subversion 需要 svn export 命令是因为该命令可以导出一个干净的目录,即不包含 .svn 目录(包含配置文件和文件原始拷贝)
Git 只在根目录存在一个 .git 目录,此外在各个子目录下不再有任何控制目录存在,因此无须通过另外的命令导出一个纯粹的干净的原始文件目录
只需要用系统提供的文件/目录拷贝命令,即可以实现将干净的目录复制到指定的目录中
Git-submodule 可以实现版本库的模块化
如果说 git submodule 和部分检出的相似性,还不如说 git submodule 就是 svn:externals 翻版。 就是说 git submodule 可以将各个小的 git 版本库集合为一个大的版本库。如果不需要整个大的版本库的话,可以仅仅克隆某个小的 git 库。Git-svn:集合 svn 的部分检出和 git 的便利
Git-svn 是 Subversion 的最佳伴侣,可以用 Git 来操作 Subversion 版本库。这带来一个非常有意思的副产品——部分检出:可以用 git-svn 来对 Subversion 代码库的任何目录进行克隆,克隆出来的是一个git版本库
可以在部分克隆的版本库中用 Git 进行本地提交
部分克隆版本库中的本地提交可以提交到上游 Subversion 版本库的相应目录中
相关文章推荐
- Subversion 用户眼中的 Git (8): SVN没有后悔药,git有好多
- Subversion 用户眼中的 Git (6): stage
- Subversion 用户眼中的 Git (10): Git 命令行的人性化设计
- Subversion 用户眼中的 Git (9): 单亲 VS 多亲
- Subversion 用户眼中的 Git (1): 集中式 vs 分布式
- Subversion 用户眼中的 Git (4): 全局版本号和全球版本号
- Subversion 用户眼中的 Git (3): 命令集不兼容
- Subversion 用户眼中的 Git
- Subversion 用户眼中的 Git (2): 版本库, 工作区如影随形
- Subversion 用户眼中的 Git (7): 完全不同的分支和里程碑的实现
- 动网:关于部分论坛用户发帖、回帖时报错“数据中含有非法字符。您的用户名并不存在,或者您的论坛密码错误,或者您的帐号已被管理员锁定。” 及“您没有发表新主题的权限”解决方法
- Starting Kernel...后没有信息显示的部分可能原因(专属TI处理器)
- idea中git颜色不显示或者文件右键没有git按钮解决方法
- 如何在Linux环境下建立Git Server并设置用户
- 不幸的问题还是出现了:Chromium代码上整理patch(working目录/master分支),部分文件做了git checkout恢复,结果GYP再编译就出错了
- Windows系统中可能含有的控制面板文件(并不完全,某些系统可能没有安装部分控制面板工具)
- 【转载】在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
- idea 通过Subversion导入项目,idea项目没有关联到svn
- yii2中用户登录部分
- github使用(通过webstorm创建一个nodejs项目的本地git库,推送到github进行管理,(ssh密钥无用户密码方式))