我正在尝试将版本控制添加到我的 Web 服务器(在 Windows 上,我知道......),我需要使用批处理脚本来自动添加和提交。这是我现在拥有的:
public static void bzr_add(String path, String commit) throws IOException {
ProcessBuilder pb = new ProcessBuilder(scripts + "bzr_add.bat", storage, path, "\"" + commit + "\"");
Process p = pb.start();
String line;
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = r.readLine()) != null) {
System.out.println(line);
}
r.close();
try {
p.waitFor();
} catch (InterruptedException ex) {
Logger.getLogger(local.class.getName()).log(Level.SEVERE, null, ex);
}
}
“scripts”是可以找到脚本的目录,“storage”是存储目录,“path”是新文件的路径。
批处理脚本:
cd %1
bzr add %2
bzr commit -m %3
我得到了什么:
Infos: C:\Program Files\glassfish-3.1.2\glassfish\domains\domain1>cd c:\storage_dir\
Infos: C:\storage_dir>bzr add dir\file.ext
Infos: C:\storage_dir>bzr commit -m "commit_message"
所以看起来没问题,当我在 cmd shell 中复制它时它可以工作(当我在 shell 中执行 bzr_add.bat par1 par2 par3 时它也可以工作)。如果我修改脚本以创建新文件,它们会在正确的目录中创建,因此可以正确执行某些内容。
但是当我通过 java 执行脚本时,bazaar 似乎并不同意这一点,有什么猜测吗?