使用p4v java将文件从本地工作区签入/签出到perforce
这是我从perforce获取文件(步骤1)并在perforce中签入文件(步骤2)的代码 我能够成功地获取该文件。 但是当我把文件签回仓库时,我收到一条信息: 没有要提交的文件。 有人能帮我找到我可能丢失的东西吗使用p4v java将文件从本地工作区签入/签出到perforce,java,perforce,p4v,perforce-client-spec,Java,Perforce,P4v,Perforce Client Spec,这是我从perforce获取文件(步骤1)并在perforce中签入文件(步骤2)的代码 我能够成功地获取该文件。 但是当我把文件签回仓库时,我收到一条信息: 没有要提交的文件。 有人能帮我找到我可能丢失的东西吗 String serverUri = "p4java://my-perforce:1666"; IServer server; try { //getting server server = ServerFactory.getSe
String serverUri = "p4java://my-perforce:1666";
IServer server;
try {
//getting server
server = ServerFactory.getServer(serverUri, null);
//connecting to server
server.connect();
server.setUserName("username");
server.login("password");
//Step 1 -- GETTING FILE FROM PERFORCE.
//getting client (local workspace name)
IClient client = server.getClient("myPerforce");
//setting it as current workspace
server.setCurrentClient(client);
//getting the file from perforce depot
List<IFileSpec> fileList = server.getDepotFiles(FileSpecBuilder.makeFileSpecList("//myLocalWorkspaceLocation/up.json"), false);
//sync workspace with perforce depot
client.sync(fileList, null);
//STEP 2 -- CHECKING IN FILE IN PERFORCE
//creating a changelist
Changelist changeListImpl = new Changelist(
IChangelist.UNKNOWN,
client.getName(),
"username",
ChangelistStatus.NEW,
new Date(),
"Testing checking in file from JAVA",
false,
(Server) server);
IChangelist changelist = client.createChangelist(changeListImpl);
//Edit file options
EditFilesOptions editFilesOptions = new EditFilesOptions().setChangelistId(changelist.getId());
List<IFileSpec> editList = client.editFiles(FileSpecBuilder.makeFileSpecList("//myLocalWorkspaceLocation/up.json"), editFilesOptions);
//updating the changelist and submitting the changes.
changelist.update();
List<IFileSpec> submitFiles = changelist.submit(false);
//disconnecting
server.disconnect();
} catch (Exception e) {
System.out.println("ERROR!!!>> " + e.getMessage());
}
String serverUri=“p4java://my-perforce:1666";
iSeries服务器;
试一试{
//获取服务器
server=ServerFactory.getServer(serverUri,null);
//连接到服务器
connect();
setUserName(“用户名”);
服务器登录名(“密码”);
//步骤1——从PERFORCE获取文件。
//正在获取客户端(本地工作区名称)
IClient client=server.getClient(“myPerforce”);
//将其设置为当前工作区
setCurrentClient(客户端);
//从perforce depot获取文件
List fileList=server.getDepotFiles(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”),false);
//与perforce depot同步工作区
client.sync(文件列表,空);
//第2步--在PERFORCE中签入文件
//创建变更列表
Changelist changeListImpl=新变更列表(
天使主义者,未知,
client.getName(),
“用户名”,
ChangelistStatus.NEW,
新日期(),
“测试从JAVA签入文件”,
假,,
(服务器)服务器);
IChangelist changelist=client.createChangelist(changeListImpl);
//编辑文件选项
editFileOptions editFileOptions=new editFileOptions().setChangelistId(changelist.getId());
List editList=client.editFiles(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”),editFilesOptions);
//更新变更列表并提交变更。
changelist.update();
List submitFiles=changelist.submit(false);
//断开
server.disconnect();
}捕获(例外e){
System.out.println(“ERROR!!!>>”+e.getMessage());
}
您能否在changelist.update()之后添加代码>行changelist.refresh()代码>?已尝试。文件仍然没有被签入。没有错误。是否有任何方法通知文件已更改/编辑?您是否也可以尝试tmpClient.sync(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”)、false、false、true、false);tmpClient.editFiles(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”)、false、false、changelist.getId()、null
而不是您的客户端.editFiles()
您必须打开文件进行编辑才能提交新版本。@solorad,谢谢您的建议。我试过了,但还是无法输入文件。想知道为什么对于p4vjava来说chk out和check-in的基本操作变得如此复杂!能否在changelist.update()之后添加代码>行changelist.refresh()代码>?已尝试。文件仍然没有被签入。没有错误。是否有任何方法通知文件已更改/编辑?您是否也可以尝试tmpClient.sync(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”)、false、false、true、false);tmpClient.editFiles(FileSpecBuilder.makeFileSpecList(“//myLocalWorkspaceLocation/up.json”)、false、false、changelist.getId()、null
而不是您的客户端.editFiles()
您必须打开文件进行编辑才能提交新版本。@solorad,谢谢您的建议。我试过了,但还是无法输入文件。想知道为什么对于p4vjava来说chk out和check-in的基本操作变得如此复杂!