Tôi muốn xem tất cả các tệp bị khóa. cho đến nay, tôi đã chỉ tìm thấy để sử dụng trạng thái tf.exe và tìm kiếm bất cứ điều gì với '!' bởi vì chúng không được báo cáo là "khóa, chỉnh sửa" vì chúng nằm trong giao diện người dùng. Ý tưởng nào? cảm ơn.Tìm tất cả các tệp bị khóa trong TFS
Trả lời
Nếu bạn có các power tools cài đặt, nó là một lớp lót:
tfstatus . -r -user * | % { $_.pendingchanges } | ? { $_.islock } | select -unique serveritem
Nếu bạn thích GUI cho tập lệnh, hãy thử TFS Sidekicks.
này trông tuyệt vời. Tôi chỉ cần cài đặt các công cụ quyền lực vào ngày khác nhưng tôi không biết nó có các commandlet power shell. Bạn có biết nơi tôi có thể tìm thấy tài liệu về những kẻ này? Ngoài ra, làm thế nào để tôi thiết lập nó để PowerShell có thể tìm thấy các dlls? – TheSean
Nên có tài liệu đi kèm trong tệp trợ giúp. Cũng trong powershell thông qua lệnh 'help'. Snap-in và alias sẽ tự động tải nếu bạn chạy liên kết "powershell console" trên menu start. Hoặc bạn có thể sao chép các cài đặt từ thư mục cài đặt vào hồ sơ $ của bạn. Đọc blog của tôi để biết chi tiết: http://richardberg.net/blog –
Không thể tìm ra cách thực hiện điều này trong TFS Sidekicks. Đoán tôi sẽ thử các dụng cụ điện. –
Tôi không nghĩ rằng điều này là có thể sử dụng tf.exe hoặc thậm chí tfpt.exe (The Power Tool command line). Bạn sẽ cần phải xem qua các thay đổi đang chờ xử lý cho các thay đổi là khóa. Bạn có thể làm điều này trong PowerShell bằng cách sử dụng Power Tool commandlets hoặc bạn có thể làm điều đó bằng cách sử dụng bit sau mã NET rằng tập API TFS:
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
namespace TfsApiExample
{
class Program
{
static void Main(string[] args)
{
GetLockedFiles("http://tfsserver:8080","$/TeamProject");
}
private static void GetLockedFiles(string serverUrl, string serverPath)
{
TeamFoundationServer tfs = new TeamFoundationServer(serverUrl);
VersionControlServer vcServer = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));
// Search for pending sets for all users in all
// workspaces under the passed path.
PendingSet[] pendingSets = vcServer.QueryPendingSets(
new string[] { serverPath },
RecursionType.Full,
null,
null);
Console.WriteLine(
"Found {0} pending sets under {1}. Searching for Locks...",
pendingSets.Length,
serverPath);
foreach (PendingSet changeset in pendingSets)
{
foreach(PendingChange change in changeset.PendingChanges)
{
if (change.IsLock)
{
// We have a lock, display details about it.
Console.WriteLine(
"{0} : Locked for {1} by {2}",
change.ServerItem,
change.LockLevelName,
changeset.OwnerName);
}
}
}
}
}
}
Tôi đã tìm thấy tùy chọn GUI.
- Bắt đầu Visual Studio
- mở tập tin
- Đến kiểm soát nguồn
- Sau đó, không gian làm việc
- Nhập thông tin của bạn
- Kiểm tra chương trình không gian làm việc từ xa
- Hủy bỏ tất cả các không gian làm việc không mong muốn
Điều đó đơn giản :)
-1 Làm cách nào để hiển thị tất cả các tệp bị khóa từ tất cả người dùng? – base2
Nếu bạn đang cố gắng sử dụng TFS Sidekicks, và không thể tìm ra cách thức, nó nằm trong Tools, Team Foundation Sidekicks, Status Sidekick. Bạn sẽ cần phải mở rộng cửa sổ đó, nhưng sau đó bạn sẽ có thể tìm kiếm khóa cho tên người dùng.
Hai câu trả lời hàng đầu khá hữu ích, nhưng điều này có thể thú vị. –
từ lệnh của bạn nhanh chóng
>powershell
Sau đó từ PowerShell làm:
PS > tf info * -recursive | &{
begin{
[email protected]{}
$prefix = "loc"
}
process{
if ($_ -match "Local information"){
if ($out.Count -gt 0) {
[pscustomobject]$out
[email protected]{}
$prefix = "loc"
}
} ElseIf ($_ -match "Server information"){
$prefix = "svr"
} else {
$parts = $_.Split(':')
if ($parts.Length -eq 2){
$out.Add($prefix + $parts[0].Trim(), $parts[1].Trim())
}
}
}
end{
if ($out.Count -gt 0) {
[pscustomobject]$out
}
}
} | where {!($_.svrLock -eq 'none')}
Great câu hỏi, không biết làm thế nào để làm điều này mặc dù ... :) –