сбои cvs2svn с “xxx не являются допустимым, v файл”

Если вы уверены, что a и b оба присутствуют (как, по-видимому, подсказывает ваш последний вызов get в решении 1), я думаю, что это довольно просто:

    return f(getA().orElseThrow(() -> new NoSuchElementException("a not present")),
             getB().orElseThrow(() -> new NoSuchElementException("b not present")));

Если вы не Не уверен, что оба присутствуют, я бы предпочел ваше решение 1. Он использует Optional лучше всего. Только я бы не назвал get в конце, а скорее orElse или что имеет смысл в вашей ситуации, например:

    return getA()
            .flatMap(a -> getB().map(b -> f(a,b)))
            .orElse("Not both present");
5
задан Rick Copeland 21 April 2009 в 18:34
поделиться

1 ответ

Как оказалось, CVSNT пропускает последние 0xa в некоторых файлах, где они нужны cvs2svn. Это можно легко исправить с помощью следующего кода C #:

static void Main(string[] args)
{
  foreach (string file in Directory.GetFiles(args[0], "*,v", SearchOption.AllDirectories))
  {
    using (FileStream sin=File.Open(file, FileMode.Open, FileAccess.ReadWrite))
    {
      sin.Position=sin.Length-1;
      if (sin.ReadByte()==0x40)
      {
        Console.WriteLine("fixed "+file);
        sin.WriteByte(0xa);
      }
    }
  }
}
3
ответ дан 15 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: