2008-12-01 40 views
13

Giả sử tôi đã đăng ký một danh sách thay đổi (trong Perforce) với nhiều tệp và tôi muốn hoàn nguyên toàn bộ danh sách thay đổi. Có cách nào dễ dàng để "hoàn nguyên" toàn bộ danh sách thay đổi trong một lần giảm không?Có cách nào dễ dàng để hoàn nguyên toàn bộ danh sách thay đổi P4 không?

Hiện nay tôi làm điều gì đó như thế này cho mỗi tập tin trong danh sách thay đổi:

  • p4 đồng bộ // path/to/file # n (trong đó "n" là phiên bản trước của tập tin)
  • cp tập tin tập tin # n
  • p4 đồng bộ // path/to/file
  • p4 chỉnh sửa // path/to/file
  • cp tập tin # n tập tin
  • rm tập tin # n

Như bạn có thể hình dung, điều này khá cồng kềnh đối với một danh sách thay đổi lớn.

Trả lời

10

Câu trả lời đã đăng cung cấp câu trả lời đúng, nhưng cũng lưu ý rằng có một tùy chọn menu thực tế trong P4V để thực hiện việc này cho bạn ngay bây giờ. Đó là trong bản Beta 2008.2 mới nhất, và do đó sẽ được chính thức phát hành trong tuần tới hoặc ba.

Điều này link cung cấp chi tiết.

Nó sẽ đơn giản hơn nhiều so với các câu trả lời trước đó, nhưng tôi chưa có cơ hội thử nó.

Cập nhật Điều này hiện đã được phát hành đầy đủ. Xem Perforce downloads.

+0

Cảm ơn Greg - Tôi sẽ thử dùng thử phiên bản beta! –

+0

Tôi vừa thử phiên bản beta này của P4V và có thể xác nhận rằng nó có tính năng "quay lại gửi thay đổi" mà thực hiện chính xác điều này. Vì đây là tính năng Perforce chính thức chứ không phải tập lệnh của bên thứ ba, tôi nghĩ điều này nên được chấp nhận là câu trả lời chính thức. –

3

This có vẻ thú vị. Tôi đã không thử nó một cách cá nhân.

+0

Cảm ơn - Tôi chỉ cố gắng nó và nó làm việc tuyệt vời! Trong khi tôi không thể có được tích hợp P4V làm việc trên máy Mac của tôi, chạy kịch bản thông qua dòng lệnh làm việc tốt. –

+0

Trong trường hợp bài đăng trên blog bạn đã liên kết bị gỡ xuống, dưới đây là liên kết trực tiếp đến tập lệnh trong Google Code: http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py –

+0

Đồng thời , một lưu ý: kịch bản python là (hiện tại) được lưu ở định dạng DOS, do đó bạn sẽ cần phải chuyển đổi sang kết thúc dòng unix để nó hoạt động chính xác trên các hệ thống dựa trên Unix như linux và OS X. –

1

Câu trả lời chính thức từ Perforce là http://kb.perforce.com/UserTasks/ManagingFile..Changelists/RevertingSub..Changelists nhưng quy trình không dễ dàng hơn nhiều so với quy trình bạn đề xuất. Tập lệnh được đề xuất bởi @ ya23 trông đẹp hơn.

+0

Vâng với một danh sách thay đổi chỉ với "chỉnh sửa" nó đơn giản hơn, nhưng một khi bạn ném thêm và xóa trong đó, nó có thể nhận được khó khăn để làm bằng tay. –

0

Tôi có cùng sự cố khi tôi muốn xóa toàn bộ danh sách thay đổi. vì vậy tôi sử dụng tập lệnh sau (thông báo rằng nó cũng xóa vị trí của danh sách thay đổi và chính danh sách thay đổi đó nếu bạn chỉ muốn hoàn nguyên, sao chép các dòng có liên quan). Ngoài ra, hãy đảm bảo sed áp dụng cho phiên bản p4 của bạn.

#!/bin/bash 

set -e 

if [[ $# -ne 1 ]]; then 
echo "usage: $(basename $0) changelist" 
    exit 1 
fi 

CHANGELIST=$1 

#make sure changelist exist. 
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails 

p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless 
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g") 
if [[ -n "$files_to_revert" ]]; then 
    p4 revert $files_to_revert 
fi 
p4 change -d $CHANGELIST 
+1

Cuối cùng tải lên nó bằng một số tập lệnh p4 khác - https://github.com/arnonzilca/p4u –

0

Sự cố bắt đầu khi bạn muốn hoàn nguyên toàn bộ danh sách thay đổi (số lượng lớn) bạn vừa gửi và bạn cần bắt đầu hoàn nguyên tệp # n-1 nhanh chóng (vì đó là sản phẩm) ...

muốn hỗ trợ của ya23 answer- liên kết của một kịch bản Python - nó thực sự rất dễ dàng để sử dụng (và thực sự dễ dàng để bỏ lỡ bình luận của ông)

bạn cho nó trở thành phiên bản bạn muốn rollback, và nó tự động chuẩn bị mọi thứ (mỗi tập tin # n-1 & sáp nhập và mọi thứ) ... bạn chỉ cần gửi.

1

Vì lý do nào đó, bước awk không hoạt động đối với tôi. Tôi đang chạy từ môi trường Windows với các công cụ dòng lệnh Unix được mô phỏng.Tuy nhiên, sau đây làm việc:

p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //" 

Dưới đây là có thể địa điểm để có được Unix công cụ dòng lệnh trong môi trường Windows:

http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/

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