Управление версиями и управление версиями

Должен хорошо работать.

$data = array('name' => 'Ross', 'php_master' => true);

// You can POST a file by prefixing with an @ (for  fields)
$data['file'] = '@/home/user/world.jpg';

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
curl_close($handle)

у Нас есть две опции здесь, CURLOPT_POST, который включает POST HTTP, и CURLOPT_POSTFIELDS, который содержит массив наших данных сообщения для представления. Это может использоваться для представления данных POST

с.

важно отметить, что curl_setopt($handle, CURLOPT_POSTFIELDS, $data); берет $data в двух форматах, и что это определяет, как данные сообщения будут закодированы.

  1. $data как array(): данные будут отправлены как [1 110], который не всегда принимается сервером.

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
    
  2. $data, поскольку URL закодировал строку: данные будут отправлены как [1 112], который является кодировкой по умолчанию для отправленных данных формы HTML.

    $data = array('name' => 'Ross', 'php_master' => true);
    curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
    

я надеюсь, что это поможет другим сэкономить свое время.

См.:

6
задан Erwin Smout 11 November 2009 в 12:36
поделиться

6 ответов

Это абсолютно неверно. Любой современный инструмент управления версиями поддерживает хуки как до, так и после фиксации, после чего вы можете запускать любой код, который хотите.

В Subversion мы используем ловушку после фиксации для развертывания копии приложения на сервере разработки каждый раз разработчик проверяет код.

На наших реальных производственных серверах у нас есть код, который проверяет и затем развертывает стабильные теги младших версий по мере их внесения в репозиторий менеджерами выпуска.

5
ответ дан 9 December 2019 в 20:45
поделиться

Контроль версий имеет мало общего с управлением выпусками или развертыванием, поэтому логично, что VCS не пытаются делать это тоже.

Что я видел в этой области являются сборками или серверами непрерывной интеграции (CI) . Они слушают изменения в VCS, производят новую проверку любого коммита, а затем пытаются все построить. Таким образом, они интегрируют VCS и инструменты сборки, собирают из них журналы и представляют все в удобном веб-интерфейсе.

Таким образом, каждый инструмент может оставаться простым.

[РЕДАКТИРОВАТЬ] Дополнительные преимущества CI-сервера:

  1. Он может анализировать вывод ваших сценариев сборки и представлять обзор по электронной почте или на веб-странице.

  2. Он гарантирует, что все тесты выполняются после совершить. Больше никаких «но он работает для меня».

  3. Некоторые из них поддерживают отложенную фиксацию (она фиксирует изменения в VCS только при выполнении всех тестов)

  4. Он может запускать сборки для нескольких проектов, которые зависят друг от друга.

6
ответ дан 9 December 2019 в 20:45
поделиться

Это зависит от того, сколько денег и времени вы хотите вложить в такую ​​систему. многие люди используют простой контроль версий - например, svn, и управляют выпусками вручную (используя ярлыки и ветки) Существуют и другие (бесплатные) инструменты для непрерывной интеграции (постоянного создания приложения), например, cruisecontrol.

В поле базы данных я не знаю ничего хорошего в свободном мире, но кто-то здесь может завершить это. так что теперь я вручную управляю версиями базы данных ....

1
ответ дан 9 December 2019 в 20:45
поделиться

В мире рубинов на рельсах наиболее предпочтительным инструментом развертывания является Capistrano.

http://www.capify.org/index.php/Capistrano

0
ответ дан 9 December 2019 в 20:45
поделиться

-> Насколько я понимаю, «более современные» инструменты контроля версий поддерживают только часть управления исходным кодом. Правильно ли это понимание?

VCS имеет дело только с частью управления исходным кодом, и это бессмысленно, если вы не можете получать уведомления об изменениях (и после того, как кто-то внедрил основы vcs, это не составит труда обеспечить это; - ))

-> Магазин мэйнфреймов, в котором я работал, имел автоматизированный инструмент управления выпусками, который не только контролировал одновременные модификации исходных текстов, но также заботился о запуске компиляторов, прекомпиляторов, утилит привязки баз данных и т. Д. ., что делает его также нашим полностью автоматизированным инструментом развертывания.

Это называется автоматизацией сборки, и да, очень желательно, чтобы лучшие части проекта были «готовы к отправке». когда кто-то вносит изменения, но в этом нет необходимости. Вы можете делайте все, что хотите, с помощью упомянутых ранее инструментов (они расширяемы).

Практика непрерывной интеграции - это интерполяция этих точек в пути таким образом, чтобы в репозиториях был только чистый, стабильный и благородный код. Существуют так называемые серверы CI, которые соединяют части VC и BA.

проверьте эту страницу на наличие CI http://martinfowler.com/articles/continuousIntegration.html

и если кому-то нужен сервер CI совместим со многими инструментами BA и многими VCS взгляните на JetBrains TeamCity

, надеюсь, это поможет

0
ответ дан 9 December 2019 в 20:45
поделиться

Я думаю, кто вы Вызов управления выпуском здесь чаще называют автоматизацией сборки . В этом пространстве есть различные инструменты (make, ant, Nant и т. Д.), Но они, как правило, существуют как отдельные инструменты. Часто они могут извлекать код из отдельной системы управления версиями, и вы получаете продукты, предназначенные для наблюдения за процессом (что называется непрерывной интеграцией, когда это делается автоматически).

Некоторые поставщики поставляют сквозные инструменты, которые подпадают под заголовок Управление жизненным циклом приложений

0
ответ дан 9 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

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