
Vladislav
05.09.2016
11:50:31

Мерлин
05.09.2016
11:50:52

Vladislav
05.09.2016
11:51:55
ок, спасибо

Google

Phil
05.09.2016
16:49:19
У меня странный вопрос. Хочу просто и красиво. Есть пользователи. Они работают с сервисом. Каждый их них редактирует некий свой файл. Файл по определению небольшой, до мегабайта. По определению текстовый. Каждое сохранение файла я хочу откладывать в историю, чтобы можно было в любой момент вернуться. Простой VC без дифов. Сервис хочу на Go. Что использовать в качестве storage?
P.S. На github все подобное простите в монге хранят

Paul
05.09.2016
16:49:49
почему бы не использовать git и файловую систему?
я без подколок

Maxim
05.09.2016
16:50:23

Daniel
05.09.2016
16:50:32
до мегабайта - хоть в мускул складывай, с автоинкрементом и датой

Phil
05.09.2016
16:51:26
Может Leveldb как-то приспособить?

Maxim
05.09.2016
16:53:14
Тип того
Тогда строй систему хранящий изменения как в Git, либо фигачь локальные репозитории на каждого юзверя через сам Git, например

Paul
05.09.2016
16:54:35
я бы делал через сам гит, наверняка есть интерфейсы в го

Daniel
05.09.2016
16:58:09

Phil
05.09.2016
17:03:16

Google

Мерлин
05.09.2016
17:03:55

Phil
05.09.2016
17:22:49

Мерлин
05.09.2016
17:22:59

Phil
05.09.2016
17:32:01
?
ну просто если через утилиту делать, то это громоздко и мягко говоря теряется смысл го. мне легче через файлики и самописный индекс это тогда сделать

Daniel
05.09.2016
18:52:13
Так и сделай

Phil
05.09.2016
18:53:58
?

Дмитрий
05.09.2016
18:57:00
Можно без сложностей в sqlite

Daniel
05.09.2016
18:58:40
не нужно
нужно сделать на гите, но самым простым образом

Дмитрий
05.09.2016
19:00:37
Самым простым образом git это exec. Три команды то всего надо.
А чтобы интересно было, то можно взять libgit2 и go-биндинг к ней.

Daniel
05.09.2016
19:03:12
и иббануццо

Дмитрий
05.09.2016
19:08:25
На самом деле от цели зависит. Например, если надо метаданные по изменению файла хранить, то git это уже неудобно.
А если файлы редактируются нечасто, то вообще можно в одном json-массиве всю историю хранить :)

Мерлин
05.09.2016
19:16:47
Можно свилопедить и писать в файлы пожатые диффы в base64

Phil
05.09.2016
19:23:19

Мерлин
05.09.2016
19:24:20
git add .
git commit -m "очень умный комментарий"
git push
ну и git pull

Phil
05.09.2016
19:24:50

Google

Phil
05.09.2016
19:25:30
Или плюнуть и сделать тупой WSGI с exec'ами?

Daniel
05.09.2016
19:25:33
git log еще

Мерлин
05.09.2016
19:25:54
Чисто из интереса

Phil
05.09.2016
19:26:22
Или тупо MySQL и не мучать бабушку?

Мерлин
05.09.2016
19:26:42

Дмитрий
05.09.2016
19:27:23
Если у тебя уже есть БД в проекте, то странно её не использовать

Phil
05.09.2016
19:28:02

Мерлин
05.09.2016
19:28:34
https://github.com/sergi/go-diff

Дмитрий
05.09.2016
19:28:37
Так ты юзерам же баланс считаешь и хранишь где-то

Phil
05.09.2016
19:29:54
Или так
Но велосипед зато позволит держать открытыми индексы с открытыми сессиями. Хоть mmap'ом. Кстати, а что в Go с mmap?

Мерлин
05.09.2016
19:30:28

Дмитрий
05.09.2016
19:32:22
А ещё вот погуглил насчёт libgit2 и нашёл вот такой примерчик:
https://blog.gopheracademy.com/advent-2014/git2go-tutorial/
Выглядит несложно совсем...

Phil
05.09.2016
20:20:41

Daniel
05.09.2016
20:21:18
нет

Google

Дмитрий
06.09.2016
07:32:51
Вот ещё нашёл, что можно пользоваться для тех же целей git cat-file и git show.
Но я "интуитивно" использую git checkout и мне хватает.
http://stackoverflow.com/questions/2071288/equivalent-in-git-of-hg-cat-or-svn-cat

Phil
06.09.2016
07:44:03

Дмитрий
06.09.2016
07:51:25
Я прямо сейчас проверял и всё умеет
Или мы фантастическим образом говорим о разных вещах

Admin
ERROR: S client not available

Phil
06.09.2016
07:56:28

Дмитрий
06.09.2016
07:59:42
Интересует версия из Initial Commit?
Тогда вот так:
git checkout ece2f9df0325d3a172c782a1b6967457bbed96d4 LICENSE
и тогда в рабочем каталоге получается файлик из того коммита

Kirill
06.09.2016
12:57:51
а, погодите-ка, я же уже делал PR
никто не ответил. ладно, пойду смёрджу

Zver
06.09.2016
13:09:26
Тоже хочется с кем-нибудь смержиться. ?

Phil
06.09.2016
13:09:53
Чтобы потом есмть детей?

Kirill
06.09.2016
13:10:55
готово, смёрджил
не знаю, упоминали ли тут это, но вот хорошая подборка упражнений для начинающих и не очень: https://github.com/fluency-in/go

Andrew
06.09.2016
13:31:28

Gregory
06.09.2016
17:45:26
Чем то напоминает {js,python}-koans

Denis
06.09.2016
20:16:54
Я слышал в одном из подкастов голанг шоу . Ребята кажется из медузы рассказывали что у них есть софт , который позволяет записывать запросы и ответы сервисов что бы потом тестировать софт эмулируя работу сервисов по заранее записанным данным

Gregory
07.09.2016
06:19:26
https://www.manning.com/books/go-in-practice - кто-то смотрел эту книгу?

Google

Pavel
07.09.2016
07:33:03
Вопрос по го (нубский) :)
Я вот читаю содержимое каталога через fileInfos, err := dir.Readdir(-1)
Смотрю что в fileInfos есть данные по полному пути к файлу, но как его получить не вижу в описании библиотеки os
type FileInfo interface {
Name() string // base name of the file
Size() int64 // length in bytes for regular files; system-dependent for others
Mode() FileMode // file mode bits
ModTime() time.Time // modification time
IsDir() bool // abbreviation for Mode().IsDir()
Sys() interface{} // underlying data source (can return nil)
}
а если делаю PrintF("%v+", fileInfos) - то вижу в дампе полный путь
точнее fmt.Printf("%v+", fi) в цикле уже
ВОт структура fi
d:\>go run erase_p.go
&{123.xml {32 {1583654949 30542040} {1583654949 30542040} {3159407046 30541824} 0 452453} {0 0} d:\test\123.xml 0 0 0}
есть методы для доступа к значению d:\test\123.xml ?


Zver
07.09.2016
08:20:11
Можно конечно привести к объекту реализующему интерфейс или посмотреть, что там Sys() возвращает, но я бы не стал, так как нет гарантии, что в дальнейшем не поменяется структура. Но надо смотреть, сейчас такой возможности нет, с телефона сижу.

Pavel
07.09.2016
08:35:54
просто странно что в переменной данные есть, а метода нет
а лезть без метода - это не по феншуй

Sergey
07.09.2016
08:49:37
а с симлинками как быть?

Zver
07.09.2016
08:53:54
Ну переменные могут быть платформозависимые и может, к примеру, для каких-то платформ не быть полного пути.