Mercurial 中央服务器文件差异(使用“diff to local”)

发布于 2024-08-31 10:59:58 字数 855 浏览 4 评论 0原文

新手注意!

好的,我有一个正在运行的中央 Mercurial 存储库,我已经使用它几个星期了。

一切都很好,直到我遇到了一个非常奇怪的问题:我的中央服务器似乎没有与自身同步?我现在只有一个似乎不同步的文件,但我确实需要知道这是如何发生的,以防止将来再发生这种情况。

场景:

1) 使用现有项目目录在服务器上创建 Mercurial 存储库。该目录包含文件“mypage.aspx”。

2) 在我的工作站上,我克隆了中央存储库

3) 我对 mypage.aspx 进行了编辑

4) hg 提交,然后 hg 从我的工作站推送到中央服务器

5) 现在,如果我查看服务器存储库上的 mypage.aspx使用 TortoiseHg 的存储库资源管理器,我可以看到 mypage.aspx 的更改历史记录——初始签入和一次编辑。但是,当我选择“Diff to local”时,它显示服务器磁盘上的当前版本是原始版本,而不是编辑后的版本!

我还没有尝试过分支,所以我确信我没有遇到分支问题。

服务器或客户端上的“hg status”不会返回挂起的更改。

如果我将服务器存储库的克隆创建到新位置,我会看到与预期相同的更改历史记录,但磁盘上的文件不包含我的编辑。

所以,回顾一下:

中央存储库 = 原始文件,但显示修订历史记录中的更改(错误)

本地存储库“A”=更新的文件,显示修订历史记录中的更改(好)

本地存储库“B”=原始文件,但显示修订历史记录中的更改(错误)

请帮忙!

谢谢,

大卫

Newbie alert!

OK, I have a working central Mercurial repository that I've been working with for several weeks.

Everything has been great until I hit a really bizarre problem: my central server doesn't seem to be synced to itself? I only have one file that seems to be out-of-sync right now, but I really need to know how this happened to prevent it from happening in the future.

Scenario:

1) created Mercurial repository on server using an existing project directory. The directory contained the file 'mypage.aspx'.

2) On my workstation, I cloned the central repository

3) I made an edit to mypage.aspx

4) hg commit, then hg push from my workstation to the central server

5) now if I look at mypage.aspx on the server's repository using TortoiseHg's repository explorer, I see the change history for mypage.aspx -- an initial check-in and one edit. However, when I select 'Diff to local', it shows the current version on the server's disk is the original version, not the edited version!

I have not experimented with branching at all yet, so I'm sure I'm not getting a branch problem.

'hg status' on the server or client returns no pending changes.

If I create a clone of the server's repository to a new location, I see the same change history as I would expect, but the file on disk doesn't contain my edit.

So, to recap:

Central repository = original file, but shows change in revision history (bad)

Local repository 'A' = updated file, shows change in revision history (good)

Local repository 'B' = original file, but shows change in revision history (bad)

Help please!

Thanks,

David

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

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

发布评论

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

评论(2

我很OK 2024-09-07 10:59:58

听起来您正在查看中央存储库上的工作副本。就像您的本地存储库一样,有一个工作副本。运行 hg update (或 TortoiseHg 中的“更新分支提示”)应该将中央存储库的工作副本同步到最新版本。

Sounds like you're looking at the working copy on the central repo. Just like your local repo, there is a working copy. Running hg update (or "Update to branch tip" in TortoiseHg) should sync the central repo's working copy to the latest.

风吹雨成花 2024-09-07 10:59:58

这是正常的,因为服务器上的存储库有两个组件:实际的变更集存储库(位于 .hg 子目录中)和工作副本。当您将更改从工作站上的本地存储库推送到服务器存储库时,它会更新服务器上的存储库文件(在 .hg 子目录中),但不会更改工作副本文件(在 .hg 子目录之外):需要在服务器上进行显式更新操作来更改工作副本。

如果服务器存储库仅用作存储库,并且您在克隆中完成所有实际工作,那么您最好在服务器上使用“裸存储库”(只需删除工作副本文件并仅保留 . hg 子目录本身)。

This is normal, as the repository on the server has two components: the actual repository of changesets (in the .hg subdirectory), and a working copy. When you push changes from the local repository on your workstation to the server repository, it updates the repository files on the server (in the .hg subdir), but it does not change the working copy files (outside the .hg subdir): this would require an explicit update operation on the server to change the working copy.

If the server repository is only being used as a repository, and you do all your actual work in clones, then you're probably better off using a "bare repository" on the server (just delete the working copy files and just keep only .hg subdirectory itself).

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