мерзавец-svn не команда мерзавца?

Я не видел такого конкретного подхода, поэтому я хотел бы использовать метод сравнения, который мне нравится использовать как для string, так и для number:

const objs = [ 
  { first_nom: 'Lazslo', last_nom: 'Jamf'     },
  { first_nom: 'Pig',    last_nom: 'Bodine'   },
  { first_nom: 'Pirate', last_nom: 'Prentice' }
];

const sortBy = fn => (a, b) => -(fn(a) < fn(b)) || +(fn(a) > fn(b))
const getLastName = o => o.last_nom
const sortByLastName = sortBy(getLastName)

objs.sort(sortByLastName)
console.log(objs.map(getLastName))

Вот объяснение sortBy():

sortBy() принимает параметр fn, который выбирает какое значение для объекта для использования в качестве сравнения и возвращает функцию, которая может передаются непосредственно на Array.prototype.sort(). В этом примере мы используем o.last_nom как значение для сравнения, поэтому всякий раз, когда мы получаем два объекта через Array.prototype.sort(), такие как

{ first_nom: 'Lazslo', last_nom: 'Jamf' }

и

{ first_nom: 'Pig', last_nom: 'Bodine' }

мы используем

(a, b) => -(fn(a) < fn(b)) || +(fn(a) > fn(b))

для их сравнения.

Вспоминая, что fn = o => o.last_nom, мы можем развернуть функцию сравнения с эквивалентом

(a, b) => -(a.last_nom < b.last_nom) || +(a.last_nom > b.last_nom)

. Логическое Оператор OR || имеет функцию короткого замыкания, которая здесь очень полезна. Из-за того, как это работает, тело функции выше означает

if (a.last_nom < b.last_nom) return -1
return +(a.last_nom > b.last_nom)

Итак, если a < b мы возвращаем -1, в противном случае, если a > b, то мы возвращаем +1, но если a == b, тогда a < b и a > b являются ложными, поэтому он возвращает +0.

В качестве дополнительного бонуса здесь эквивалент в ECMAScript 5.1 без функций стрелок, что, к сожалению, не совсем так:

var objs = [ 
  { first_nom: 'Lazslo', last_nom: 'Jamf'     },
  { first_nom: 'Pig',    last_nom: 'Bodine'   },
  { first_nom: 'Pirate', last_nom: 'Prentice' }
];

var sortBy = function (fn) {
  return function (a, b) {
    return -(fn(a) < fn(b)) || +(fn(a) > fn(b))
  }
}

var getLastName = function (o) { return o.last_nom }
var sortByLastName = sortBy(getLastName)

objs.sort(sortByLastName)
console.log(objs.map(getLastName))

100
задан Cristián Romo 9 February 2009 в 03:20
поделиться

6 ответов

Я не уверен, что мерзавец svn когда-либо работал с недавним распределением Windows Мерзавца (отправьте 1.5.6).

о Многих проблемах сообщили прежде, таким образом git svn может не очень быть включен в текущие выпуски msysGit.

Другой текущий активный "Мерзавец в Windows" разработка mingw.git действительно указывает в README, что svn не работает.

Этот поток Msysgit действительно предполагает, что мерзавец svn может повторно интегрироваться в некоторых точках, но прогресс является все еще медленным.

<час>

Обновление: от MSysGit1.6.2 (в начале марта 2009), git-svn работы снова . Посмотрите это ТАК вопрос .

<час>

Обновление: с современный (2017) уже включен Мерзавец для Windows 2.x , git svn.
Никакая потребность в sudo apt-get install git-svn, который только был бы возможен в WSL (Windows Subsystem для Linux) сессия оболочки так или иначе.

17
ответ дан VonC 5 November 2019 в 11:49
поделиться

Под моей системой я испытал эти затруднения:

$ git svn
Can't locate SVN/Core.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.10.0
/usr/lib/perl5/5.10.0/i486-linux-thread-multi
/usr/lib/perl5/5.10.0
/usr/lib/perl5/site_perl/5.10.0/i486-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.10.0/i486-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.10.0
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl .) at
/usr/libexec/git-core/git-svn line 29.

, потому что мне не установили привязку Perl Подверсии. Попытайтесь установить их и выполнить команду снова.

5
ответ дан Uli Köhler 5 November 2019 в 11:49
поделиться

Я просто проверяю свое недавно установленное поле человечности, и оно не было установлено даже с установленным ядром мерзавца. Простое:

sudo apt-get install git-svn

или Ваш эквивалентный дистрибутив должен зафиксировать его.

256
ответ дан Pigueiras 5 November 2019 в 11:49
поделиться

Если мерзавец-svn не является частью mSysGit, я рекомендую использовать маленький сервер UNIX для хостинга репозитория шлюза, который клонирует репозиторий SVN, и затем клонируйте тот репозиторий на машину Windows. Это - подход, который я использую для взаимодействия с CVS от мерзавца.

1
ответ дан skiphoppy 24 November 2019 в 04:25
поделиться

Это не было установлено на моей новой установке Ubuntu на WSL -

sudo apt install git-svn

, отсортировал его:

❯ git svn
git-svn - bidirectional operations between a single Subversion tree and git
...
0
ответ дан 24 November 2019 в 04:25
поделиться

У меня была такая же ошибка в Cygwin 1.7.

4
ответ дан 24 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

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