How to “revert” unchanged files with mercurial?

2020-07-16 02:24发布

I have installed Windows7 on my computer, and I had to change all permissions/take ownership - which apparently "touched" all my files, and now everything appears to be "modified" (when I do "hg status"), but only some files have actual changes.

Is there a command I can run so that I will either "commit" or "revert" all the files that have no actual change in them (i.e. text is unchanged, even if file attributes are changed).

added:

I've upgraded from WinXP to Win7. I didn't actually "copy" anything, the repository is the same on disk.... it's just Windows that changed. After the upgrade, I didn't have access to some of the files, I a needed to "take ownership" in order to re-gain access (somehow the user rights were not properly preserved). Here is what I get:

$ hg stat 
../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as M      
$ hg diff ../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as

2条回答
Deceive 欺骗
2楼-- · 2020-07-16 03:07

I think you've failed to get the repository .hg properly copied.

$ hg stat primes.py         # nothing, file is checked in
$ touch primes.py
$ hg stat                   # still nothing
$ sudo chown bin primes.py
$ hg stat                   # nothing, the chown didn't make hg care

You should probably hg clone the repository and work from there.

added: Ugh, the output of hg verify and hg summary would probably be useful to you (and posted here if you are still confounded). I fear for your repository and hope you have a backup (or be lucky and really only need "tip").

查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-07-16 03:10

This happened to me too! I fixed it like this...

  1. Clone the repository hg path/to/clone original path/to/clone
  2. Run hg update -C /path/to/clone on the clone to make sure it is clean.
  3. Run kdiff3 path/to/original path/to/clone
  4. Uncheck 'show identical files'
  5. Select a file or folder to synchronize (do not synchronize the .hg folder)
  6. Press CTRL-1 to choose version A
  7. Press F6 to synchronize
  8. Repeat steps 5-7 as necessary

Clean the original. Work on the clone and commit and push.

or

Clean the original, and run kdiff3 path/to/clone path/to/original

查看更多
登录 后发表回答