2008-12-15 26 views
15

Tôi đang tìm một dòng lệnh để xóa tất cả các tệp và thư mục xem riêng tư khỏi chế độ xem ClearCase trên Windows. Tôi cũng có Cygwin.Dòng lệnh để xóa tất cả các tệp riêng tư của ClearCase

Kịch bản có sẵn tại this article không hoàn toàn là những gì tôi muốn, vì tôi đang làm việc với số lượng tệp lớn và muốn xóa tất cả mà không phải chọn từng tệp.

+0

Chỉ cần thêm dòng lệnh chung chung hơn. Tôi sẽ xem lại bình luận/câu hỏi của bạn vào sáng mai nếu bạn có bất kỳ câu hỏi nào. – VonC

Trả lời

3

Tôi đã luôn luôn được sử dụng:

ct lsprivate | xargs rm 
+1

Tôi cũng vậy, với báo trước rằng tôi chạy 'ct lsco -cvi -s -avo' để tìm bất kỳ tệp đã kiểm xuất nào trước tiên và tôi hủy bỏ các kiểm tra đó trước khi xóa các tệp riêng tư. –

+1

Bao giờ tự hỏi tại sao một bài đăng cũ 4 năm đột nhiên sẽ thu hút một downvote không có lời giải thích lý do tại sao nó được downvoted? Tôi làm. –

+0

Nó làm tôi khó khăn trong những dịp đó, may mắn thay khá hiếm khi xảy ra. Nó cũng làm tôi khó chịu, nhưng tôi quyết định không có gì đáng để tôi có thể làm về việc lái xe không giải thích được bằng cách bỏ phiếu, trừ khi có ai đó trên một cuộc bỏ phiếu xuống nhắm mục tiêu tôi (cũng chưa xảy ra). –

1

tôi đã kết thúc sử dụng lệnh này trong Cygwin:

cleartool ls -recurse -view_only | sed -e 's:\\:/:g' | xargs rm -r 

Các sed là cần thiết để thay đổi đường dẫn Windows theo phong cách ra bởi cleartool vào Unix- đường dẫn kiểu. Có lẽ có một lệnh hiệu quả hơn ngoài kia. Điều này ném rất nhiều lỗi, bởi vì nó xóa thư mục, và sau đó bất kỳ tập tin xem-tư nhân được tìm thấy trước đó bên dưới thư mục đó sẽ không được tìm thấy bởi rm. Nhưng bạn sẽ có kết quả đúng vào cuối.

EDIT: VonC chỉ ra rằng điều này chỉ làm việc với quan điểm ClearCase động

0

gì về việc sử dụng các lệnh cygpath thay vì sed?
bạn có thể tìm thấy thông tin thêm về cygpath.exe đây:
link text

một cách để liên kết cygpath.exe với các chương trình khác là sử dụng xargs.
ví dụ: processA | xargs cygpath -u> my-path-in-unix-format.txt

+0

Tôi không thể tìm ra đúng cách chuỗi cùng với các lệnh khác. Nếu bạn có thể tìm ra nó, vui lòng chỉnh sửa câu trả lời của bạn để chỉ ra điều đó; hy vọng nó sẽ giúp người khác. – mbyrne215

21

Một vài nhận xét:

  • ct lsprivate là rất tốt cho quan điểm năng động, chứ không phải ảnh chụp lần xem
  • ct ls -rec -view_only cũng như ct lsprivate cũng danh sách các tệp đã kiểm xuất của bạn ... Tôi không chắc chắn bạn muốn xóa những tệp đó ...

Để liệt kê các tệp riêng tư (chỉ những tệp riêng tư, không phải những tệp riêng lẻ mà bạn có thể muốn giữ), bạn cần có lệnh:

  • sẽ đưa vào không gian tài khoản trong tên
  • không liệt kê Thanh toán hoặc bị bắt cóc hoặc các tập tin hoặc liên kết tượng trưng
  • công trình cho cả ảnh chụp và quan điểm năng động làm lu mờ
  • (tiền thưởng) không phụ thuộc vào vỏ bên ngoài lệnh

    for /F "usebackq delims=" %i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%i"

Đó liệt kê tất cả y các tệp riêng tư của chúng tôi (bỏ qua các phần bị chiếm đoạt/bị lu mờ/kiểm tra hoặc không riêng tư cũng như các liên kết tượng trưng) theo cách thuần túy của Windows (không cần phụ thuộc vào vỏ bên ngoài).
Thay thế @echo "%i" bởi del /F "%i" và chúng không còn nữa.
Lưu ý các dấu ngoặc kép xung quanh% i, để hiển thị/xóa các tệp phù hợp với dấu cách trong tên của chúng. Cũng lưu ý sự vắng mặt của tham số cleartool -nxn, vì các liên kết tượng trưng sẽ không thể phân biệt được và các tệp tin riêng tư cũng không được trang trí.

Để loại bỏ các thư mục cá nhân, trước tiên hãy chạy lệnh với rmdir /S /Q "%i" và sau đó với del /F "%i".

+0

Bạn nói đúng, cách của tôi rất cụ thể với mục đích của tôi vào lúc này. Tôi không có bất kỳ kiểm tra, và tôi chắc chắn muốn các tập tin và thư mục trong một shot. Vì vậy, một chút của một thương mại-off, nhưng chung có lẽ nhịp đập chạy nó hai lần cho hầu hết các sử dụng. – mbyrne215

+0

@Sven: chỉnh sửa có vẻ tốt. Nếu bạn đã thử nghiệm nó, tôi cảm ơn bạn đã tăng cường này. – VonC

+0

Lần sau tôi chạy lệnh, nó chạy rất chậm đến thời điểm hết giờ. Bạn có bất kỳ ý tưởng tại sao nó có thể được? – TDN

4

Tôi biết rằng có lẽ là một cách tốt hơn nhưng tôi luôn luôn dường như trở lại với trang này:

ct lspriv | grep -v checkedout | xargs rm -rf 
2

Trên Unix (quan điểm năng động), một kỹ thuật rất hiệu quả để loại bỏ xem tập tin cá nhân là để thả chế độ xem. Bảo quản cspec trước. Ngoài ra, hãy đảm bảo không có các lần kiểm tra trong chế độ xem. Sau đó, loại bỏ nó và tạo lại một cái mới (cùng tên, cùng cspec, cùng một bộ nhớ, nhưng không có tệp riêng cho đến khi bạn tạo chúng).

# With the view to be cleaned as your current view... 
ct pwv -s > /tmp/viewname 
viewname=$(</tmp/viewname) 
ct catcs > /tmp/$viewname.cs 
ct lsview -cvi | awk '{print $3;}' > /tmp/$viewname.vws 
# The next line is the first dangerous line! 
# It cancels all outstanding checkouts and removes the modified files 
ct lsco -cvi -s -avo 2>/dev/null | xargs ct unco -rm # Or: xargs ct ci -nc 
exit   # Terminate the session in the view 
viewname=$(</tmp/viewname) 
rm /tmp/viewname 
# The next line is the second dangerous line 
ct rmview -tag $viewname 
ct mkview -tag $viewname $(</tmp/$viewname.vws) 
ct setcs -tag $viewname /tmp/$viewname.cs 
rm /tmp/$viewname.cs 

Xem tất cả các tệp riêng tư đã biến mất - và bạn đã giảm thiểu mức sử dụng đĩa của mình.

Nếu bạn đủ may mắn để chỉ làm việc với một VOB, bạn có thể bỏ tùy chọn '-avo' (tất cả VOB). Chuyển hướng '2>/dev/null' mất các lỗi từ các VOB không thể truy cập được - Tôi có hơn 100 VOB hiển thị nhưng không thể truy cập được trong môi trường của tôi, ngoài những thứ có thể truy cập được mà tôi thực sự sử dụng. Lưu ý rằng nếu bạn đã đóng gói mã này thành tập lệnh 'rebuild.view', bạn sẽ đặt tên khung làm đối số (làm việc từ bên ngoài chế độ xem - đó không phải là chế độ xem hiện tại) và sau đó bạn có thể thực hiện việc dọn dẹp bên trong khung nhìn, sử dụng tùy chọn 'lsview' khác để có được các chi tiết cần thiết, và thường thoát khỏi lưu trữ tạm thời trong/tmp (mặc dù bạn sẽ cần cache cspec ở đâu đó).

Một điểm khác cần lưu ý - bạn sẽ muốn đảm bảo rằng bạn đã thực hiện dọn dẹp thủ công trước khi cho phép tự động tháo rời. Ví dụ: không nên có kiểm tra. Ngoài ra, viết kịch bản để từ chối thả chế độ xem nếu có bất kỳ lần kiểm tra nào.

0

Trong cửa sổ tinh khiết bạn có thể làm điều này:

for /F "delims=" %i IN ('ct lsprivate') DO rm -rf "%i" 
1
  1. Từ CLI Để liệt kê các điểm tập tin cá nhân thực hiện các lệnh dưới đây

    for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do @echo "%i" 
    
  2. Từ CLI thực hiện dưới đây COMAND để xóa các tập tin riêng tư xem

    for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do del /F "%i" 
    
  3. .210
  4. Đồng bộ hóa quan điểm với dự án:
    Từ thám hiểm dự án chọn các thuộc tính dòng, đi giao diện tab, chọn các thuộc tính xem sau đó nhấp vào "đồng bộ với dự án"

5

Dưới cửa sổ DOS nhắc:

for /f "delims=" %f in ('cleartool lspriv -s -do -oth ^| sort /r') do @del /f /q "%f" 
Các vấn đề liên quan