netch80: (Default)
[personal profile] netch80
- Функция loop получает кучу параметров, внутри неё if, и только в одной ветке
надо поменять значение одного параметра, а в остальные он должен прийти
неизменённым. Как это удобно сделать?
- Вызови в этом месте loop() с новым параметром и заверши работу.
- Но у меня дальше большая общая часть работы.
- Вынеси её в отдельную функцию, вызови loop() из неё.
- Это неудобно. Почему бы не сделать что-то вроде Xout=ifdef(X1, X1, X),
loop(...,Xout)?
- Ты хочешь неправильного. Здесь делают именно так.




- Как это нормально делается? Я же не могу отдать параметр обратно.
- Сложи его значение в ets.
- Но это уже побочный эффект, это неправильная практика. Надо избавляться
от побочных эффектов.
- Здесь делают так.
- Но ets дорого, и неуникально. Я не могу изобретать атом для каждого
процесса, они плодятся по одному для внешнего объекта согласно конфигурации.
Почему бы не использовать словарь процесса?
- Это неправильно. Словарь процесса - костыль, его скоро отменят.
- Но ets - такой же костыль, причём менее удобный, потому что надо использовать
левые сущности вроде имён-атомов.
- Здесь делают так.
- Почему я не могу использовать в качестве идентификатора таблицы текстовую
строку?
- Здесь так не принято.




- Мне нужно сделать общий репозиторий, в который все будут складывать свои
изменения.
- Ты хочешь неправильно. Это распределённая система.
- Я и использую её как распределённую. Каждый тащит изменения к себе, делает
что хочет в любом количестве своих копий и репозиториев, затем, когда решил,
что всё окончательно правильно - делает push.
- Ты хочешь неправильно. Каждый должен коммитить в свою ветку в центральном
репозитории. Дальше у него остальные забирают изменения.
- Я не хочу разводить бардак, особенно когда таких источников будет два
десятка. Каждый обязан влить свои изменения и за это отвечает.
- Ты хочешь неправильно. Здесь так не делают. Приходи, получай ченжсеты
от своих сотрудников и вливай это в общий репозиторий, есть стандартная
поддержка приёма и применения по почте и иными средствами.
- Мне надо чтобы они это делали сами. И это неудобно ещё по целому ряду
параметров - например, надо держать на сервере полный шелл.
- Ты хочешь неправильно. Это распределённая система.




- Если я хочу один репозиторий, но две рабочих копии?
- Ты хочешь неправильно. Это распределённая система. Каждая рабочая копия
получает полную копию репозитория со всей историей.
- Я не хочу каждый раз переливать между двумя репозиториями у себя в home.
- Ты хочешь неправильно. Это распределённая система.




- Лог коммитов сортируется по дате исходного коммита. Если кто-то поставил
дату коммита 70-м годом, его будет очень долго и нудно искать.
- Да, дата коммита и авторство не меняются при слиянии.
- Тогда почему у коммита нет нескольких дат и авторов? Ведь тот, кто влил
набор изменений, тоже сделал существенное действие, которое должно быть
отражено. Он выбрал источник вливания, он выбрал набор изменений.
- Ты хочешь странного.

Date: 2008-12-20 09:06 am (UTC)
From: [identity profile] netch80.livejournal.com
Неее, дядьку, вы мозги НЕ докомпостировали:)) Потому что у вас тогда не было бы "пушнуть другому" в принципе, а должно быть только "пульни из меня из ветки XX"

Date: 2008-12-20 09:23 am (UTC)
From: [identity profile] egorfine.livejournal.com
ну пульнул, а потом что? а потом пуш обратно:)

Date: 2008-12-20 09:44 am (UTC)
From: [identity profile] netch80.livejournal.com
Нет!! Никак не "обратно". Или по email всем остальным, или в _свою_ ветку в "центральном" репозитории, откуда все остальные делают pull, чтобы принять твои изменения.

Я удивлялся так же как и ты сейчас, когда мне это доказывали два дня подряд:))

Date: 2008-12-20 09:47 am (UTC)
From: [identity profile] egorfine.livejournal.com
Фишка гита в том, что он позволяет тебе самому выбирать тот процесс, который ты считаешь нужным. Есть рекомендации и их писали умные люди, и имеет смысл прислушиваться. Но есть также и твой собственный проект, где имеют место быть твои собственные правила и практики:)

Date: 2008-12-20 09:56 am (UTC)
From: [identity profile] netch80.livejournal.com
push, если это не git-server, требует дурной игры с правами доступа. На многопользовательский push система просто не рассчитана. Так что не позволяет он тебе настолько выбирать процесс... или позволяет только с дурными костылями.

Date: 2008-12-20 10:05 am (UTC)
From: [identity profile] egorfine.livejournal.com
Какие костыли? g+w у каждого и досвидания. Все просто как в юниксе.

Date: 2008-12-20 10:13 am (UTC)
From: [identity profile] netch80.livejournal.com
Ладно, перепроверю. У нас могло наложиться на еженощный кроновый gc.

Date: 2008-12-20 11:11 am (UTC)
From: [identity profile] anatoly borodin (from livejournal.com)
у вас там так много мусора накапливается?

Date: 2009-05-04 05:21 pm (UTC)
From: [identity profile] netch80.livejournal.com
Вспомнил на перечитке. g+w недостаточно. Оно регулярно создаёт новые файлы и не ставит на них адекватные права. Даже umask не сработал (или скриворучили).

В общем, сейчас работает под общим uid'ом.

Date: 2009-05-04 07:53 pm (UTC)
From: [identity profile] egorfine.livejournal.com
мы решили так:

* * * * * chgrp -R git /var/git; chmod -R g+w /var/git/

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 12th, 2026 10:41 am
Powered by Dreamwidth Studios