2013-02-19 5 views
5

Tôi muốn lấy danh sách thay đổi mới nhất trong kho cho thông số khách hàng hiện tại của mình. Điều này có hiệu quả sẽ là sự thay đổi mà sẽ được đồng bộ hóa nếu tôi đã làm một p4 sync trong không gian làm việc của tôi.Cách lấy danh sách thay đổi Perforce mới nhất trong kho cho thông số máy khách hiện tại

Tôi đã thử thực hiện p4 changes -s submitted -m1 -c [client-name], nhưng trả lại thay đổi gần đây nhất đã được gửi qua ứng dụng khách của tôi.

Làm p4 changes -s submitted -m1 //depot/path/... sẽ hoạt động, nhưng tôi không muốn phải truy vấn thông số khách hàng để tìm ra đường dẫn kho là gì. Thêm vào đó nếu có nhiều hơn một bản đồ, tôi sẽ không biết làm thế nào để hiểu được điều đó.

Dường như phải có một cách đơn giản để thực hiện việc này mà tôi bị thiếu.

EDIT

tôi đã có để truy vấn spec khách hàng, nhưng như đã chỉ ra trong câu trả lời được chấp nhận, tôi có thể sử dụng các gốc client spec như các đường dẫn tập tin và không cần phải nhìn vào quan điểm ánh xạ.

giải pháp cuối cùng sử dụng P4Python:

# Get client 
clientspec = p4.fetch_client() 
root = clientspec["Root"] 

# Get latest changenum in client mapping 
changes = p4.run("changes", "-s", "submitted", "-m1", root + "/...") 
changenum = changes[0]['change'] 
+0

Có phải 'p4 thay đổi -s đã gửi -m 1' (không có đường dẫn) không phù hợp? – jamesdlin

+1

@jamesdlin - Không, điều đó cho phép thay đổi gần đây nhất trên máy chủ, có thể là một số đường dẫn kho mà tôi không có ánh xạ tới thông số khách hàng của tôi. – dwikle

Trả lời

1

Tôi nghĩ rằng bạn sẽ phải truy vấn đặc tả khách hàng của bạn để tìm gốc địa phương. Nếu bạn không cần phải lo lắng về AltRoots, thì điều này có thể là:

p4 changes -s submitted -m 1 "$(p4 client -o | grep "^Root:" | cut -f 2)/..." 

in bash. Sử dụng thư mục gốc của máy khách cục bộ của bạn thay vì đường dẫn kho để tránh vấn đề với nhiều ánh xạ.