Загрузка депо в perforce


Я новый пользователь perforce (из svn) и использую графический интерфейс p4v. я хочу иметь локальную копию папки в чьем-то хранилище, но не уверен, как это сделать. Я хочу закончить с местной копией, которая предназначена только для меня, чтобы исследовать и смотреть вокруг. Я не хочу, чтобы она находилась под ревизионным контролем. Просто нужно, чтобы это было так, как если бы я скачал папку из интернета, свободно делать с ней все, что угодно. Как я могу сделать это в p4v?

2 2

2 ответа:

После синхронизации файлов вы можете делать с ними все, что захотите. Волей-неволей помечает файлы как доступные только для чтения, если только они не открыты для редактирования, поэтому я бы синхронизировал хранилище, скопировал его в новое место на жестком диске, а затем пометил все файлы, доступные для записи.

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

Эти 2 функции помогут вам начать работать.

public Repository GetRepository(string i_Workspace, string i_Username, string i_Password, string i_Server)
{
    Repository rep;
    Server server;
    ServerAddress address;

    // Create the repository
    address = new ServerAddress(i_Server + ":1666");
    server = new Server(address);
    rep = new Repository(server);

    rep.Connection.UserName = i_Username;
    Perforce.P4.Options options = new Perforce.P4.Options();
    options["Password"] = i_Password;

    Environment.SetEnvironmentVariable("P4PASSWD", i_Password);

    rep.Connection.Client = new Client();

    if (i_Workspace != null && i_Workspace != string.Empty)
    {
        rep.Connection.Client.Name = i_Workspace;
    }

    rep.Connection.Connect(options);
    rep.Connection.CommandTimeout = System.TimeSpan.Zero;
    rep.Connection.Login(i_Password);


    return rep;
}

private Client createWorkspace(string i_DepotPath, string i_RootDirectory)
{
    string workspaceName = "workspace" + new Random().Next().ToString();

    Repository rep = GetRepository(string.Empty);

    Client client = new Client();
    client.Name = workspaceName;
    client.Root = i_RootDirectory;
    client.OwnerName = k_DefaultUser;
    client.ViewMap = new ViewMap();
    client.Options = ClientOption.AllWrite;
    client.LineEnd = LineEnd.Local;
    client.SubmitOptions = new ClientSubmitOptions(false, SubmitType.SubmitUnchanged);

    string depotPath = i_DepotPath + "/...";

    String clientPath;
    //clientPath = String.Format("//{0}/{1}/...", client.Name, i_DepotPath.Replace("//depot/", string.Empty));
    clientPath = "//" + client.Name + "/...";

    MapEntry entry = new MapEntry(MapType.Include, new DepotPath(depotPath), new ClientPath(clientPath));

    client.ViewMap.Add(entry);


    rep.CreateClient(client);


    return client;
}