2011-07-11 23 views
6

Tôi đã thực hiện một số hg mv -A oldFile newFile và vô tình nhận được tệp mới sai.Hoàn tác hành động di chuyển/đổi tên trong mercurial?

Tôi đã thực hiện hg revert newFile nhưng bây giờ tệp đã hiển thị là bị thiếu (và sau đó bị xóa sau lệnh di chuyển) hiện không còn hiển thị nữa.

Làm cách nào tôi có thể hoàn tác và quay lại trạng thái tôi đang ở, để tệp mới hiển thị là không xác định và tệp cũ hiển thị là bị thiếu?

Trả lời

7
$ hg st 
$ mv a b 
$ hg st 
! a 
? b 
$ hg mv -A a b 
$ hg st 
A b 
R a 
$ hg revert b 
$ hg st 
? b 
$ ls 
a b 

Vì vậy, hg revert b khôi phục tệp cũ a. Bây giờ tất cả những gì bạn phải làm là hg mv a correct-name.

+0

cảm ơn! không nghĩ rằng nó cũng đã hoàn nguyên việc xóa bỏ tệp cũ. –

+0

Khi chương trình 'ls' cuối cùng hiển thị, tệp có tên" b "vẫn tồn tại, vì vậy câu hỏi gốc chưa được trả lời hoàn toàn. Sử dụng kỹ thuật được minh họa ở đây, tệp "b" sẽ phải được xóa theo cách thủ công. Tất nhiên, trong kịch bản được đưa ra, nếu bản gốc 'mv a b' đã bị bẻ khóa b, thì b đó đã biến mất. Tất cả các lý do hơn để sử dụng 'hg mv' thay thế. – peak

0

Đây là tập lệnh "bỏ chạy" được viết bằng bash. Có một số văn bản trợ giúp ở trên cùng. Điểm quan trọng nhất là kịch bản có một tùy chọn buộc bất kỳ việc loại bỏ tệp nào được thực hiện tương tác.

#!/bin/bash 

# Syntax: $0 [OPTION] DEST 
# 
# This script is mainly intended to undo the effects of: hg move SOURCE DEST 
# 
# It first determines which files have been added globally (as if by 
# hg add), then it runs: 

# hg -v revert DEST 

# Finally, it removes all the files that had been added, 
# and then reverts them as well if possible. 
# 
# OPTIONS: 
# -i :: remove files using rm -i 

if [ "$1" = -i ] ; then 
    INTERACT=$1 
    shift 
fi 


TODO=() 
while read -r f ; do 
    TODO+=("$f") 
done < <(hg st -an "[email protected]") 

function go { 
    hg -v revert "[email protected]" 
    for f in "${TODO[@]}" ; do 
     rm $INTERACT "$f" 
     hg -q files "$f" > /dev/null && hg revert "$f" 
    done 
} 

go 
Các vấn đề liên quan