2013-06-04 2 views
2

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

ответ

2

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

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

0

Эти 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; 
} 
Смежные вопросы