我很好奇是否可以复制受版本控制的目录并开始处理这两个副本.
我知道从一个VCS到另一个VCS可能有所不同,但我故意不指定任何VCS,因为我对不同的情况感到好奇.
我最近和一位同事谈论在SVN做这件事.我认为应该没问题,但我仍然不能100%肯定,因为我不知道SVN究竟在工作副本中存储了什么.
但是,如果我们谈论DVCS世界,事情可能会更加不清楚,因为每个工作副本本身就是一个存储库.现在面对在bzr这样做,我决定问这个问题.
稍后编辑:
有些人问我为什么要那样做.以下是整个故事:
在SVN的情况下,因为不在办公室,与SVN服务器的连接非常慢,所以我和我的同事决定只查看一次来源并制作本地副本.这就是我们所做的,它运作良好,但我仍然想知道它是否有效,或者它刚刚发生.
在bzr的情况下,我打算将"主"仓库移动到另一台服务器.所以我想把它复制到那里并开始考虑主要的回购.我想最安全的是做一个克隆.
我的工作流程通常涉及我对文件进行多项更改,每个更改都属于项目(= commit)中自己的概念变更单元.
我希望能够做的是添加某些差异(整个文件,或者只是文件的某些行)到挂起的提交(可能必须被命名)并且有多个挂起的提交"活动"同时.
然后,当所有文件中完成与特定挂起提交相关的所有更改时,我可以提交命名提交!
有什么想法VCS会是一个很好的候选人吗?
我想在我公司设置CruiseControl.Net.我们目前有几个.net解决方案存储在Bazaar存储库中,我想使用MSBuild来构建每个解决方案.这似乎没有太大争议,但我看不出将CruiseControl.Net绑定到Bazaar的简单方法.
似乎有一个插件在http://www.sorn.net/projects/bazaar-ccnet上执行此操作, 但此链接不再有效,我似乎无法在其他地方找到该插件
我打算使用外部源控件类型,但是bazaar似乎在将GETMODS参数传递给它时borkar
我现在的想法是创建一个单独的项目,使用Exec任务从bazaar中提取修改,然后创建另一个项目以对该目录运行FileSystem源代码控制检查.我有点确定我可以让它工作,但它似乎有点hacky.
我不介意为CruiseControl.Net编写一个新的Bazaar插件,但我无法从中找到从哪里开始.
我的问题是
我想知道它们之间有什么区别
bzr checkout ./MyProject MyProject.dev
# later followed by a
cd MyProject.dev
bzr pull ../MyProject
Run Code Online (Sandbox Code Playgroud)
和
bzr get ./MyProject MyProject.dev
# later followed by
cd MyProject.dev
bzr pull
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可以说唯一的区别是:
bzr get 设置拉动位置.bzr checkout 不设置拉动位置,因此必须在第一次拉动时指定.还有其他差异吗?
当我使用Emacs的内置VCS接口(我将其与Bazaar一起使用)提交更改时,它只提交一个文件 - 它在当前缓冲区中打开.因此,当我按下Cc vv,输入消息和Cc Cc时,它会执行类似的操作
bzr commit -m "my message" file/open/in.buffer
Run Code Online (Sandbox Code Playgroud)
代替
bzr commit -m "my message"
Run Code Online (Sandbox Code Playgroud)
如何使用Emacs提交所有更改?
我认为我的变更集可能发生了一些不好的事情.
为了记录,我之前使用过git,hg和svn并取得了一般成功.我对bzr的理解不太完整.
这是我的(Windows XP):
1)使用bzr的svn checkout创建的文件夹.称之为稳定
2)从我用于开发的文件夹中分支出来的文件夹.称之为开发
我的计划是在开发分支上使用commit --local来跟踪变化,并且它正在起作用.
然后,我做了'bzr更新'(因为它在我试图推动时抱怨).当时,stable有一个更旧的代码副本.那么,现在开发有相同的旧版本.'bzr log'没有显示我本地提交的任何证据!
有人可以向我解释发生了什么,以及我可以做些什么来恢复我的旧代码?
特别是我想到的情况是你有一个大的资产,如.psd,200 MB.一个艺术家去改变几个像素并检查它.假设deltas没有保持200 MB,任何更新到他的克隆/分支的人都将关闭历史记录.给定一个完整的开发周期,为每个客户提供大量信息.
我想要的是能够将这些文件标记为"在服务器上保留历史记录",就像传统的集中式VCS(如SVN或Perforce)一样.您可能会失去DVCS对这些文件的好处,但我愿意接受,只要我可以使用一个VCS(而不是1为资产,1为代码).
任何关于如何做到这一点(如果可能的话)的建议将不胜感激.
我在共享服务器上有一个bazaar存储库.我想清理回购并从头开始设置,但保留了我的历史.我不知道最初是如何创建存储库的(有没有办法找到?).
这是一个可行的过程:
bzr init-repo --no-trees /home/bzr/myrepository
cd /home/bzr/myrepository
bzr init stable
cp /home/oldbzr/branch_taken_from_current_repo/* ./stable/
cp /home/oldbzr/branch_taken_from_current_repo/.bzr ./stable/
Run Code Online (Sandbox Code Playgroud)
谢谢
目前在我的实践中我使用VERSION文件来存储:
major=2 minor=0 fix=1
这意味着产品版本v2.0.1或更新版本的来源.
在每次发布之前,我必须提交对此文件的更新,因此标记为tag2.0.1或release-2.0.1的标记覆盖了上面的内容(而不是以前的版本!).
我认为可以通过从构建脚本自动生成VERSION文件来避免此作业.
看看转历史:
+--+-----+----------------------+-YY--+----+------+------+-HH-->
dev| | ^ ^ | | | | |
| | | | | | v v v
| | | | | | +--+------+-ZZ---+-->
| | | | | | b2 | | |
| | | | | | v v v
| | | | | | t2.0.0 t2.0.1 t2.1.0
v v | | v v
t0.1.0 +---+--XX--+-+---+-+-----+------+------+------+------+--->
b1 | | | | | … 好的:
在svn和bzr中,我可以分支,提交,合并,我的提交历史记录将如下所示:
41: Theodore R. Smith 2013-09-14 Jump to list by name instead of number.
40: Theodore R. Smith 2013-09-14 [merge] [m] Miscellaneous cleanups.
39.1.4: Theodore R. Smith 2013-09-14 [m] Removed old files.
39.1.3: Theodore R. Smith 2013-09-14 [m] Fixed bug where test could not...
39.1.2: Theodore R. Smith 2013-09-14 [m] Fixed a CSS layout bug from th...
39.1.1: Theodore R. Smith 2013-09-14 [m] Fixed a typo.
39: Theodore R. Smith 2013-09-14 Added a progress bar.
38: Theodore R. Smith …Run Code Online (Sandbox Code Playgroud)