2016-07-21 16 views
3

Это мой первый проект с другими разработчиками (только два, прямо сейчас). Наша идея - отредактировать файлы прямо с сервера, используя программное обеспечение FTP/SFTP, такое как FileZilla. Мы хотим, чтобы любой файл, открытый для редактирования, блокировался, поэтому другой пользователь не может редактировать его одновременно. Это возможно? Если не с FileZilla, возможно, с использованием другого программного обеспечения? Я посмотрел на Git, Codiad и другие подобные решения, но они слишком сложны (слияние параллельных выпусков в GitHub не является тривиальным) или имеют ошибки (Codiad не сохраняет файлы). Мы думали, что блокировка файлов примитивна, но достаточно хороша для нас (мы в одной комнате). Вопрос в том, как мы его реализуем?Как заблокировать файл на сервере Ubuntu при редактировании

ответ

2
  • В FTP нет блокировки файлов.
  • В SFTP есть блокировка, но в целом она не поддерживается, см. SFTP file lock mechanism.
  • В WebDAV есть блокировка, но общие реализации, такие как mod_dav, фактически блокируют файл, имеющий только «мир» WebDAV, фактический базовый файл не заблокирован каким-либо образом.

Так что я не знаю какого-либо общедоступного механизма блокировки файлов удаленно.

+0

Так вы предлагаете использовать что-то вроде Git? – Rodrigo

+0

Apache Subversion (SVN) кажется хорошим выбором, но трудно поверить, что нет более простых альтернатив! Все, что мне нужно - это блокировка файлов, отсутствие элементарного управления под версией! – Rodrigo

+0

Git - хороший вариант, но, конечно, это может быть излишним для вас. –

3

Если вы являетесь владельцем машины, вы можете установить Koding для команды (максимум 4 бесплатно) и использовать webide в режиме совместной работы.

+1

Да, я могу попробовать. Тем не менее, я поражен тем, что серверу не хватает классических функций! – Rodrigo

2

Beeing небольшая команда loking в порядке (она не должна использоваться на больших проектах), но вы должны посмотреть в git, я обнаружил, что она становится беспорядочной, если вы оба работаете над одним и тем же фрагментом кода одновременно. Чтобы удалить часть сложности в Git GUI, я использую sourcetree, но есть много других, они просто помогают вам визуализировать то, что вы делаете, и какие изменения происходят.

Теперь, чтобы ответить на ваш вопрос, я не знаю ни одного автономного программного обеспечения, которое будет делать то, что вам нужно, но у Dreamweaver есть способ заблокировать файлы для себя. Это было сделано путем создания файла с именем filename.lock, это был текстовый файл с подробными сведениями о том, кто его заблокировал. Вы можете сделать что-то подобное вручную, поэтому, когда вы хотите заблокировать файл, вы создаете файл блокировки, а затем, чтобы разблокировать его, вы удаляете его, и вы обе обещаете не редактировать файлы с файлом блокировки.

Это не лучшее решение или неэтет, но в зависимости от того, как вы работаете, оно может работать.

7

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

Все, что вам нужно, чтобы начать работать с git является:
git clone URL_OF_REPOSITORY - загрузить копию хранилища и начать работать с ним
git add PATH_TO_EDITED_FILE_OR_FOLDER - пометить файлы или/и папки в постановке для фиксации
git commit -m 'DESCRIPTION OF CHANGES' - совершить/принять изменения в файлах и папках, отмеченные на предыдущем шаге, и сохранить информацию об этих изменениях локально.
git push - загрузить внесенные изменения в удаленный репозиторий
git pull - загрузить изменения, совершенные и оттолкнутые другими от re mote repository

Как вы можете видеть, команды не ожидают, что вы предоставите любую сложную информацию. Просто URL удаленного репо, файлы, которые вы считаете готовыми для совместного использования с другими, и желаемое описание сделанных изменений. На самом деле это не сложно. И нужно действительно начинать знакомство с системами управления версиями, поскольку в наши дни это одно из основных навыков разработки программного обеспечения.

+2

Это. Я использую git даже в проектах с одним разработчиком. – MirMasej

+0

Спасибо. Но иметь файлы в одном месте не означает, что у нас нет ежедневной резервной копии. Во-вторых, в других ответах говорится, что «это только становится беспорядочным, если вы оба одновременно работаете над одним и тем же кодом», это именно моя проблема. Не хочу ничего грязного. Просто хочу, чтобы старые технологии снова работали. И да, я знаю, что мне нужно узнать Гит (немного поработали с ним), но я все еще думаю, что это слишком много для нашей работы. – Rodrigo

+0

@Rodrigo, говорящий «тот же бит кода», мы имеем в виду действительно те же строки, а не только один и тот же файл. Даже если это произойдет, git предупредит вас и добавит хороший diff вместо противоречивых строк. Все, что вам нужно сделать, это выбрать правильную часть кода, удалить другую и зафиксировать изменения. То, что вы получите, работая через FTP в удаленном файле, просто перезаписывает изменения, внесенные другим разработчиком без предупреждения. – ElmoVanKielmo