Найдите все заблокированные файлы в TFS

NSMutableArray является подклассом NSArray, поэтому вам не всегда нужно конвертировать, но если вы хотите убедиться, что массив не может быть изменен, вы можете создать NSArray любым из этих способов в зависимости от о том, хотите ли вы автоматически выпустить или нет:

/* Not autoreleased */
NSArray *array = [[NSArray alloc] initWithArray:mutableArray];

/* Autoreleased array */
NSArray *array = [NSArray arrayWithArray:mutableArray];

РЕДАКТИРОВАТЬ: Решение , предоставленное Георгом Шолли, является лучшим способом сделать это и намного чище, особенно теперь, когда у нас есть ARC, и нам даже не нужно вызывать autorelease.

19
задан jessehouwing 27 October 2014 в 14:26
поделиться

2 ответа

Проведя несколько минут в Firebug, есть несколько способов сделать это. кажется. Например, я смог получить список файлов из самого fileObject:

var file = $("#control").attr("files")[0];
var fileName = file.fileName;
var fileSize = file.fileSize;

alert("Uploading: "+fileName+" @ "+fileSize+"bytes");

Ясно, что я могу прочитать значения для сериализации. Но письмо - это другой вопрос.

Но, очевидно, это не так просто, как утверждают другие. Я взял на себя смелость загрузить исходный код Prototype и не смог узнать, где находятся инструкции по использованию данных FileList для объекта File Upload.

Фактически, Я нашел в Интернете статью, в которой перечислялись проблемы с сериализацией самого объекта загрузки файла, утверждая, что ни одна библиотека AJAX не справилась с этим хорошо (заметьте, это было написано в 2007 году). Тем не менее, эта тема интересна, и кажется, что вы можете разработать любое количество методов для извлечения данных из загрузки файла - сама спецификация содержит достаточно информации, которая поможет вам пройти этот путь.

ответ о том, как вы можете писать и добавлять файлы в список файлов, но на данный момент я так же потерялся, как и вы (или был в момент, когда задавал этот вопрос). Если немного почитать, это может оказаться намного проще, чем я подозреваю, но на данный момент у меня нет времени вкладывать средства.

Удачи.

Соответствующая документация:

  1. FileUpload на W3C
  2. Сериализация форм Гаррет Смит, 2007 г.
  3. Прототип 1.6.
20
ответ дан 30 November 2019 в 04:25
поделиться

Я не думаю, что это возможно с помощью tf.exe или даже tfpt.exe (командная строка Power Tool) . Вам нужно будет просмотреть ожидающие ревизии изменения, которые являются блокировками. Вы можете сделать это в PowerShell с помощью командлетов Power Tool или с помощью следующего фрагмента кода .NET, который использует TFS API:

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);
          }
        }
      }

    }
  }
}
4
ответ дан 30 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: