将 DVCS 与 Visual Source Safe 相结合

发布于 2024-07-18 07:19:21 字数 501 浏览 8 评论 0原文

我在工作中被迫使用 Visual Source Safe 2005。 我想将其与 DVCS 结合起来,这样我就可以在本地签入文件,而不会在出现错误或无法编译时打扰我的同事。

在我对 Mercurial 的尝试中,它有效,但会导致一些奇怪的问题。 也就是说,它认为其他人已经签出了我签出的文件。

以下是我应该如何管理它的想法:

  1. 禁用自动结账。
  2. 在 Mercurial 本地工作
  3. 当我准备好推动我的更改时......
    1. 克隆我的 Mercurial 存储库。
    2. 更新我的 Visual Source Safe 存储库
    3. 使用 Mercurial 拉取并合并两个存储库。
    4. 将所有内容检查到 Visual Source Safe。

这听起来合理吗? 我总是听到有关 VSS 的坏话,这是否只是要求我亲眼目睹这些问题?

I'm forced to use Visual Source Safe 2005 at work. I'd like to combine that with a DVCS, so that I can check in files locally without disrupting my co-workers if there's a bug or it doesn't compile.

In my attempts with Mercurial, it works, but causes a few weird issues. Namely, it thinks someone else has checked out the files I have checked out.

Here's my thoughts on how I should manage it:

  1. Disable auto-checkout.
  2. Work locally in Mercurial
  3. When I'm ready to push my changes...
    1. Clone my Mercurial repository.
    2. Update my Visual Source Safe repository
    3. Pull and merge the two repositories using Mercurial.
    4. Check everything into Visual Source Safe.

Does this sound reasonable? I'm always hearing bad things about VSS, is this just asking for me to see those problems firsthand?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚雾 2024-07-25 07:19:21

WBlasko

我也发现了同样的问题。 我想更改文件并在需要时合并它们,而不是等待其他开发人员解锁它。 对我有用的解决方案是:

1)获取最新版本的 VSS 项目(我将所有 VSS 项目放在 vss 下):

c:\vss\projectA

2A)使用 Mercurial 初始化

cd vss\projectA
C:\vss\projectA>hg init

2B)将项目克隆到可以随意更改的位置

hg clone vss\projectA myProjects\projectA

3)从 VSS 副本中获取最新更改(如果您来自 1 和 2,请跳过)

C:\myProjects\projectA>hg pull
C:\myProjects\projectA>hg update
(solve conflicts if any)

4) 随意使用克隆版本。 稍后,将您的工作推送到 vss 副本:

C:\myProjects\projectA>hg push
(don't run hg update yet, wait for VSS latestes version)

5) 现在,将所有文件检出到 VSS 项目

6) 在 VSS 项目上运行“hg update”,将您的更改合并到最新的 VSS 更改。

C:\vss\projectA>hg update
(if there are conflicts, resolve them)

7) 提交更改

C:\vss\projectA>hg commit

8) 执行 VSS 签入(将锁释放给其他人)
返回到步骤 3。然后永远重复步骤 3-8...;-)

这样您就可以使用良好的版本控制系统,同时仍然能够与遗留项目“对话”。 您还可以享受:
a) 锁定文件没有问题
b) 您可以与知道如何使用 Hg 的其他人共享您的存储库
c) 创建分支等

只需小心地首先更新/解决冲突,测试然后执行 VSS 签入

干杯,
路易斯

WBlasko

I've found the same problem. I wanted to change files and merge them when needed instead of waiting for some other developer to unlock it. The solution that worked for me was:

1) Get the latest version of a VSS project (I placed all VSS projects under vss):

c:\vss\projectA

2A) Initialize with Mercurial

cd vss\projectA
C:\vss\projectA>hg init

2B) Clone the project to the place where it could be changed at will

hg clone vss\projectA myProjects\projectA

3) Grab the latest changes from the VSS copy (skip if you came from 1 and 2)

C:\myProjects\projectA>hg pull
C:\myProjects\projectA>hg update
(solve conflicts if any)

4) Work at will with the cloned version. Later, push your work to the vss copy:

C:\myProjects\projectA>hg push
(don't run hg update yet, wait for VSS latestes version)

5) Now, perform a checkout of all files to the VSS project

6) Run "hg update" on the VSS project to merge your changes to the latest VSS changes.

C:\vss\projectA>hg update
(if there are conflicts, resolve them)

7) Commit the changes

C:\vss\projectA>hg commit

8) Perform a VSS checkin (releasing the locks to the other folks)
Go back to step 3. repeat steps 3-8 forever then... ;-)

This way you can work with a good version control system while still being able "talk" to legacy projects. You will be also be able to enjoy:
a) No problem with locked files
b) you can share your repository with others that know how to use Hg
c) make branches , etc

Just be carefull to first update/solve conflicts, test and then perform VSS checkin

Cheers,
Luis

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文