java
  • git
  • 2016-02-24 2 views 0 likes 
    0

    У меня проблема с форматом даты для похвалы - после - до. мерзавецGit log commended date format java

    "git -C " + RepositoryConstants.root + reponame + " log --pretty=format:\"%h|%an|%ad|%s\" --after='" + dateFrom___ + "' --before='" + dateTo___ + "' --date=iso"); 
    

    Это то, что происходит в моей программе. и это не сработает. Но когда я копирую его, чтобы настроить его, точно так же, как когда у меня есть даты в формате «2016-02-05», но не с часами и минутами.

    final Process p = Runtime.getRuntime().exec(string from upstair); 
    
    new Thread(new Runnable() { 
         public void run() { 
          BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
          String line = null; 
          try { 
           while ((line = input.readLine()) != null) { 
             Commit commit = new Commit(); 
             System.out.println(">>> " + line); 
             String split[] = line.split("\\|"); 
             ... 
             } 
           } catch (IOException e) { 
            e.printStackTrace(); 
           } 
          } 
         }).start(); 
    
         p.waitFor(); 
         Thread.sleep(1000); 
        return stuff; 
    
    
    private DateFormat outputFormatter = new SimpleDateFormat("YYYY-MM-dd HH:mm"); 
        String dateFrom___ = "'" + outputFormatter.format(dateFrom__) + "'"; 
        String dateTo___ = "'" + outputFormatter.format(dateTo__) + "'"; 
    final Process p = Runtime.getRuntime().exec(new String[]{"git", " -C ", RepositoryConstants.REPOSITORY_ROOT + repo, " log"," --pretty=format:\"%h|%an|%ad|%s\"", " --after=", dateFrom___, " --before=", dateTo___, " --date=iso"}); 
    
    +1

    Можете ли вы показать, как вы используете его в Java? – Ferrybig

    ответ

    2

    Java использует StringTokenizer для разбора команды аргументы в exec вызова. Этот класс не учитывает кавычки, как это делает оболочка.

    Вы должны вручную разбить строку, и передать массив методу:

    final Process p = Runtime.getRuntime().exec(new String[]{"-C","C:\test\repo","log","--pretty=format:%h|%an|%ad|%s", "--after=2016-02-05 15:24:00 +0100", "--before=2016-02-24 10:32:00 +0100" "--date=iso"}); 
    
    +0

    Есть ли проблема в том, что существуют проблемы с пробелом между датами и днями? Couse я использую этот exec и все еще не получаю результат, но String [] работает, когда я копирую его в консоль. – qusqui21

    +0

    Я вижу, что вы отредактировали 'git' до начала команды в более позднем редактировании сообщения, добавили ли вы это в команду здесь, когда вы это попробовали? – Ferrybig

    +0

    Я добавил, как он выглядит прямо сейчас в нижней части сообщения. Все еще не работает. – qusqui21

    Смежные вопросы