[refs #461] Merge master into to 461-rename_is_rpm_to_is_package. Again
After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
@ -21,7 +21,8 @@ class ApplicationController < ActionController::Base
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def set_locale
|
def set_locale
|
||||||
I18n.locale = check_locale( get_user_locale || request.env['HTTP_ACCEPT_LANGUAGE'] )
|
I18n.locale = check_locale( get_user_locale ||
|
||||||
|
request.env['HTTP_ACCEPT_LANGUAGE'] ? request.env['HTTP_ACCEPT_LANGUAGE'][0,2].downcase : nil )
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_user_locale
|
def get_user_locale
|
||||||
|
|
|
@ -8,7 +8,15 @@ class PagesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def tour_inside
|
def tour_inside
|
||||||
render "pages/tour/tour-inside-#{params[:id]}", :layout => 'tour'
|
@entries = case params[:id]
|
||||||
|
when 'projects'
|
||||||
|
%w(repo builds monitoring)
|
||||||
|
when 'sources'
|
||||||
|
%w(source history annotation edit)
|
||||||
|
when 'builds'
|
||||||
|
%w(control git tracker)
|
||||||
|
end
|
||||||
|
render "pages/tour/tour-inside", :layout => 'tour'
|
||||||
end
|
end
|
||||||
|
|
||||||
def forbidden
|
def forbidden
|
||||||
|
|
|
@ -137,8 +137,7 @@ class Platform < ActiveRecord::Base
|
||||||
|
|
||||||
def symlink_directory
|
def symlink_directory
|
||||||
# umount_directory_for_rsync # TODO ignore errors
|
# umount_directory_for_rsync # TODO ignore errors
|
||||||
system("sudo mkdir -p -m 0777 #{symlink_path}")
|
system("ln -s #{path} #{symlink_path}")
|
||||||
system("sudo ln -s #{path} #{symlink_path}")
|
|
||||||
Arch.all.each do |arch|
|
Arch.all.each do |arch|
|
||||||
str = "country=Russian Federation,city=Moscow,latitude=52.18,longitude=48.88,bw=1GB,version=2011,arch=#{arch.name},type=distrib,url=#{public_downloads_url}\n"
|
str = "country=Russian Federation,city=Moscow,latitude=52.18,longitude=48.88,bw=1GB,version=2011,arch=#{arch.name},type=distrib,url=#{public_downloads_url}\n"
|
||||||
File.open(File.join(symlink_path, "#{name}.#{arch.name}.list"), 'w') {|f| f.write(str) }
|
File.open(File.join(symlink_path, "#{name}.#{arch.name}.list"), 'w') {|f| f.write(str) }
|
||||||
|
@ -146,7 +145,7 @@ class Platform < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_symlink_directory
|
def remove_symlink_directory
|
||||||
system("sudo rm -Rf #{symlink_path}")
|
system("rm -Rf #{symlink_path}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_owner_relation
|
def update_owner_relation
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
.both
|
.both
|
||||||
/ Page
|
/ Page
|
||||||
.tour
|
.tour
|
||||||
=image_tag 'tour-top.png', :alt => 'ABF'
|
=image_tag "tour-top#{I18n.locale == :en ? '-eng' : ''}.png", :alt => 'ABF'
|
||||||
.both
|
.both
|
||||||
%article
|
%article
|
||||||
= yield
|
= yield
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
.feature-wrap
|
||||||
|
.feature
|
||||||
|
-if is_left
|
||||||
|
.left
|
||||||
|
%h1=t "tour.#{entry}"
|
||||||
|
%p
|
||||||
|
=raw t "tour.#{entry}_description"
|
||||||
|
.right
|
||||||
|
%a.pirobox{:href => image_path("tour/big/#{entry}.png"), :rel => "single", :title => t("tour.#{entry}")}
|
||||||
|
=image_tag "tour/#{entry}.png"
|
||||||
|
-else
|
||||||
|
.left
|
||||||
|
%a.pirobox{:href => image_path("tour/big/#{entry}.png"), :rel => "single", :title => t("tour.#{entry}")}
|
||||||
|
=image_tag "tour/#{entry}.png"
|
||||||
|
.right
|
||||||
|
%h1=t "tour.#{entry}"
|
||||||
|
%p
|
||||||
|
=raw t "tour.#{entry}_description"
|
||||||
|
.both
|
|
@ -0,0 +1,4 @@
|
||||||
|
%ul
|
||||||
|
-%w(projects sources builds).each do |entry|
|
||||||
|
%li
|
||||||
|
=link_to t("tour.#{entry}"), tour_inside_path(entry), :class => params[:id] == entry ? 'active' : ''
|
|
@ -1,43 +1,39 @@
|
||||||
.feature-wrap
|
.feature-wrap
|
||||||
.feature
|
.feature
|
||||||
.left
|
.left
|
||||||
%a.pirobox{:href => image_path('tour/big/control.png'), :rel => "single", :title => "Управление проектами"}
|
%a.pirobox{:href => image_path('tour/big/control.png'), :rel => "single", :title => t('tour.projects')}
|
||||||
=image_tag 'tour/1/control.png'
|
=image_tag 'tour/control.png'
|
||||||
.right
|
.right
|
||||||
%a{:href => tour_inside_path('projects')}
|
%a{:href => tour_inside_path('projects')}
|
||||||
%h1 Управление проектами
|
%h1=t 'tour.projects'
|
||||||
%p
|
%p
|
||||||
Каждый git-репозиторий на ABF поставляется с инструментами,
|
=t 'tour.projects_header'
|
||||||
необходимыми для управления проектами, вне зависимости от
|
%br
|
||||||
того, публичный или приватный проект.
|
=link_to t('tour.read_more'), tour_inside_path('projects')
|
||||||
%br/
|
|
||||||
=link_to 'Читать далее...', tour_inside_path('projects')
|
|
||||||
.both
|
.both
|
||||||
.feature-wrap
|
.feature-wrap
|
||||||
.feature
|
.feature
|
||||||
.left
|
.left
|
||||||
%a{:href => tour_inside_path('sources')}
|
%a{:href => tour_inside_path('sources')}
|
||||||
%h1 Исходный код
|
%h1=t 'tour.sources'
|
||||||
%p
|
%p
|
||||||
ABF — полноценный git-хостинг с удобным веб-интерфейсом.
|
=t 'tour.sources_header'
|
||||||
%br/
|
%br/
|
||||||
=link_to 'Читать далее...', tour_inside_path('sources')
|
=link_to t('tour.read_more'), tour_inside_path('sources')
|
||||||
.right
|
.right
|
||||||
%a.pirobox{:href => image_path('tour/big/source.png'), :rel => "single", :title => "Исходный код"}
|
%a.pirobox{:href => image_path('tour/big/source.png'), :rel => "single", :title => t('tour.sources')}
|
||||||
=image_tag 'tour/2/source.png'
|
=image_tag 'tour/source.png'
|
||||||
.both
|
.both
|
||||||
.feature-wrap
|
.feature-wrap
|
||||||
.feature
|
.feature
|
||||||
.left
|
.left
|
||||||
%a.pirobox{:href => image_path('tour/big/monitoring.png'), :rel => "single", :title => "Сборка пакетов"}
|
%a.pirobox{:href => image_path('tour/big/monitoring.png'), :rel => "single", :title => t('tour.builds')}
|
||||||
=image_tag 'tour/3/monitoring.png'
|
=image_tag 'tour/monitoring.png'
|
||||||
.right
|
.right
|
||||||
%a{:href => tour_inside_path('builds')}
|
%a{:href => tour_inside_path('builds')}
|
||||||
%h1 Сборка пакетов
|
%h1=t 'tour.builds'
|
||||||
%p
|
%p
|
||||||
ABF — это не только хостинг исходного кода, но и система сборки
|
=t 'tour.builds_header'
|
||||||
и хостинга пакетов. Собирайте свои проекты под множество
|
|
||||||
дистрибутивов и архитектур в свой персональный репозиторий.
|
|
||||||
%br/
|
%br/
|
||||||
=link_to 'Читать далее...', tour_inside_path('builds')
|
=link_to t('tour.read_more'), tour_inside_path('builds')
|
||||||
.both
|
.both
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
.sub-menu.tour
|
|
||||||
%nav
|
|
||||||
%ul
|
|
||||||
%li
|
|
||||||
=link_to 'Управление проектами', tour_inside_path('projects')
|
|
||||||
%li
|
|
||||||
=link_to 'Исходный код', tour_inside_path('sources')
|
|
||||||
%li
|
|
||||||
=link_to 'Сборка проектов', tour_inside_path('builds'), :class => 'active'
|
|
||||||
.both
|
|
||||||
/ Page
|
|
||||||
%article
|
|
||||||
/ Single page content
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%a.pirobox{:href => image_path('tour/big/repo.png'), :rel => "single", :title => "Персональный репозиторий"}
|
|
||||||
=image_tag 'tour/3/repo.png'
|
|
||||||
.right
|
|
||||||
%h1 Персональный репозиторий
|
|
||||||
%p
|
|
||||||
Персональный репозиторий — быстрый и легкий способ
|
|
||||||
распространить свое ПО множеству Linux пользователей
|
|
||||||
различных дистрибутивов, используя стандартный механизм
|
|
||||||
доставки ПО. ABF позаботится о зависимостях ПО из основных
|
|
||||||
репозиториев и/или дополнительных персональных репозиториев.
|
|
||||||
Опубликовали новую версию? Пользователи автоматически
|
|
||||||
получат оповещение о доступности обновления.
|
|
||||||
.both
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%h1 Сборка пакета
|
|
||||||
%p
|
|
||||||
ABF позволяет собрать ваши проекты под множество архитектур
|
|
||||||
и дистрибутивов, используя свои вычислительные мощности.
|
|
||||||
Никаких затрат с вашей стороны!
|
|
||||||
.right
|
|
||||||
%a.pirobox{:href => image_path('tour/big/build.png'), :rel => "single", :title => "Сборка пакета"}
|
|
||||||
=image_tag 'tour/3/build.png'
|
|
||||||
.both
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%a.pirobox{:href => image_path('tour/big/monitoring.png'), :rel => "single", :title => "Мониторинг"}
|
|
||||||
=image_tag 'tour/3/monitoring.png'
|
|
||||||
.right
|
|
||||||
%h1 Мониторинг
|
|
||||||
%p
|
|
||||||
В большом числе сборочных заданий легко потеряться, поэтому
|
|
||||||
мониторинг сборки фокусирует ваше внимание только на том,
|
|
||||||
что действительно важно.
|
|
||||||
.both
|
|
|
@ -1,61 +0,0 @@
|
||||||
/ Submenu
|
|
||||||
.sub-menu.tour
|
|
||||||
%nav
|
|
||||||
%ul
|
|
||||||
%li
|
|
||||||
=link_to 'Управление проектами', tour_inside_path('projects'), :class => 'active'
|
|
||||||
%li
|
|
||||||
=link_to 'Исходный код', tour_inside_path('sources')
|
|
||||||
%li
|
|
||||||
=link_to 'Сборка проектов', tour_inside_path('builds')
|
|
||||||
.both
|
|
||||||
/ Page
|
|
||||||
%article
|
|
||||||
/ Single page content
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%a.pirobox{:href => image_path('tour/big/control.png'), :rel => "single", :title => "Управление проектами"}
|
|
||||||
=image_tag 'tour/1/control.png'
|
|
||||||
.right
|
|
||||||
%h1 Управление проектами
|
|
||||||
%p
|
|
||||||
Существует 3 возможных роли для участника проекта: только
|
|
||||||
чтение, чтение/запись и административный уровень. Участником
|
|
||||||
проекта может выступать как пользователь, так и группа. Проект,
|
|
||||||
как и группа, может иметь неограниченное число участников
|
|
||||||
(пользователей, групп или всех вместе).
|
|
||||||
.both
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%h1 Git Wiki
|
|
||||||
%p
|
|
||||||
Вики проекта создана с помощью Gollum — открытого
|
|
||||||
вики-движка, созданного GitHub. В основе своей это полноценный
|
|
||||||
git-репозиторий, который можно клонировать, использовать в
|
|
||||||
режиме офлайн, изменять и загружать изменения обратно на
|
|
||||||
сервер, как в случае с обычным кодом. Удобный веб-редактор
|
|
||||||
позволит работать с ней в онлайн. Теперь данные о проекте не
|
|
||||||
пропадут и доступны для редактирования в любимом редакторе!
|
|
||||||
%br/
|
|
||||||
%br/
|
|
||||||
Примечание: для приватного проекта вики доступна только его
|
|
||||||
участникам. Для публичного — всем для чтения.
|
|
||||||
.right
|
|
||||||
%a.pirobox{:href => image_path('tour/big/git.png'), :rel => "single", :title => "Git Wiki"}
|
|
||||||
=image_tag 'tour/1/git.png'
|
|
||||||
.both
|
|
||||||
.feature-wrap
|
|
||||||
.feature
|
|
||||||
.left
|
|
||||||
%a.pirobox{:href => image_path('tour/big/tracker.png'), :rel => "single", :title => "Легкий трекер задач"}
|
|
||||||
=image_tag 'tour/1/tracker.png'
|
|
||||||
.right
|
|
||||||
%h1 Легкий трекер задач
|
|
||||||
%p
|
|
||||||
Каждый проект также может использовать легкий и простой
|
|
||||||
трекер задач. Метки и назначения позволят не потеряться среди
|
|
||||||
задач, а понятный интерфейс позволит сконцентрироваться на
|
|
||||||
работе, а не на заполнении огромных формуляров.
|
|
||||||
.both
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
.sub-menu.tour
|
||||||
|
%nav
|
||||||
|
=render 'pages/tour/submenu'
|
||||||
|
.both
|
||||||
|
/ Page
|
||||||
|
%article
|
||||||
|
/ Single page content
|
||||||
|
-@entries.each_with_index do |el, ind|
|
||||||
|
=render :partial => 'pages/tour/entry', :locals => {:entry => el, :is_left => ind.odd?}
|
|
@ -0,0 +1,51 @@
|
||||||
|
en:
|
||||||
|
tour:
|
||||||
|
read_more: more...
|
||||||
|
projects: Project Management
|
||||||
|
sources: Source Code
|
||||||
|
builds: Package Building
|
||||||
|
|
||||||
|
repo: Personal repository
|
||||||
|
monitoring: Task monitoring
|
||||||
|
source: Source code online
|
||||||
|
history: File history
|
||||||
|
annotation: File blame
|
||||||
|
edit: Online editor
|
||||||
|
control: Project Management
|
||||||
|
git: Git Wiki
|
||||||
|
tracker: Lightweight task tracker
|
||||||
|
|
||||||
|
projects_header: Every git repository in ABF is accompanied by tools necessary to manage a project, be it a public project or a private one.
|
||||||
|
sources_header: ABF is full-functional git-hosting with convenient Web interface.
|
||||||
|
builds_header: |
|
||||||
|
ABF is not just a hosting for source code, but a system to build and publish packages.
|
||||||
|
Build your projects for large variety of distributions and hardware platforms in your personal repository!
|
||||||
|
|
||||||
|
repo_description: |
|
||||||
|
Personal repository provides you with an easy way to distribute your software among great number of Linux users by means of standard ways of software delivery.
|
||||||
|
ABF will take care of package dependencies from both main repositories or extra and personal ones. Published a new package version?
|
||||||
|
Users will be automatically notified about available update.
|
||||||
|
builds_description: |
|
||||||
|
ABF provides you with power to build projects for large variety of distributions and hardware platforms. No additional efforts from your side!
|
||||||
|
monitoring_description: |
|
||||||
|
It is easy to get lost in large amount of tasks, but smart monitoring will focus your attention on those tasks that really matter for you.
|
||||||
|
source_description: |
|
||||||
|
We have focused on making access to the source code easy and transparent. Every file pushed to git repository will instantly become available for online access,
|
||||||
|
so you can share it with other developers even if they don't use Git. Home page of every project contains list of project files,
|
||||||
|
as well as information about recent changes. You can immediately see the most important part of your project: the code.
|
||||||
|
history_description: |
|
||||||
|
Every file in git repository has history of modifications which can be easily looked through using ABF to see who and when modified the file
|
||||||
|
and which changes were introduced by particular commits.
|
||||||
|
annotation_description: 'Looking for the author of a particular code fragment? Just open the file blame to see who modified that fragment for the last time and in which commit.'
|
||||||
|
edit_description: Need to quickly edit some file? Want to fix syntax error from your mobile phone? No problem. We provide you with a simple editor for every file in git repository.
|
||||||
|
control_description: |
|
||||||
|
There are 3 possible levels of privileges for project members: read-only, read/write, and administration level. A project member can designate a real user
|
||||||
|
or a group of developers. Both projects and groups may have unlimited number of members (every of which can be in turn a user or a group).
|
||||||
|
git_description: |
|
||||||
|
Project wiki is based on Gollum — open wiki engine developed by GitHub. In fact, this is a full-function git repository which can be cloned, used offline,
|
||||||
|
modified and pushed back to server, as if it were a usual source code. Convenient web editor allows to modify wiki online.
|
||||||
|
Now information about your project will be never lost and will be always available for modifications in any editor!
|
||||||
|
<br/><br/>Note: for private projects, wiki is accessible by project team only. Wiki of a public project can be read by everyone.
|
||||||
|
tracker_description: |
|
||||||
|
Every project may use a lightweight and simple task tracker. Labels and assignments will allow not to get lost in tasks,
|
||||||
|
while convenient interface will allow to concentrate on a real work, not filling huge forms.
|
|
@ -0,0 +1,61 @@
|
||||||
|
ru:
|
||||||
|
tour:
|
||||||
|
read_more: Читать далее...
|
||||||
|
projects: Управление проектами
|
||||||
|
sources: Исходный код
|
||||||
|
builds: Сборка пакетов
|
||||||
|
|
||||||
|
repo: Персональный репозиторий
|
||||||
|
monitoring: Мониторинг
|
||||||
|
source: Исходный код онлайн
|
||||||
|
history: История файла
|
||||||
|
annotation: Аннотация файла
|
||||||
|
edit: Редактирования онлайн
|
||||||
|
control: Управление проектами
|
||||||
|
git: Git Wiki
|
||||||
|
tracker: Легкий трекер задач
|
||||||
|
|
||||||
|
projects_header: |
|
||||||
|
Каждый git-репозиторий на ABF поставляется с инструментами, необходимыми для управления проектами,
|
||||||
|
вне зависимости от того, публичный или приватный проект.
|
||||||
|
sources_header: ABF — полноценный git-хостинг с удобным веб-интерфейсом.
|
||||||
|
builds_header: |
|
||||||
|
ABF — это не только хостинг исходного кода, но и система сборки и хостинга пакетов.
|
||||||
|
Собирайте свои проекты под множество дистрибутивов и архитектур в свой персональный репозиторий.
|
||||||
|
|
||||||
|
repo_description: |
|
||||||
|
Персональный репозиторий — быстрый и легкий способ распространить свое ПО множеству Linux пользователей
|
||||||
|
различных дистрибутивов, используя стандартный механизм доставки ПО.
|
||||||
|
ABF позаботится о зависимостях ПО из основных репозиториев и/или дополнительных персональных репозиториев.
|
||||||
|
Опубликовали новую версию? Пользователи автоматически получат оповещение о доступности обновления.
|
||||||
|
builds_description: |
|
||||||
|
ABF позволяет собрать ваши проекты под множество архитектур и дистрибутивов, используя свои вычислительные мощности.
|
||||||
|
Никаких затрат с вашей стороны!
|
||||||
|
monitoring_description: |
|
||||||
|
В большом числе сборочных заданий легко потеряться, поэтому мониторинг сборки фокусирует ваше внимание только на том,
|
||||||
|
что действительно важно.
|
||||||
|
source_description: |
|
||||||
|
Мы сфокусировались на том, чтобы сделать исходный код доступным и прозрачным. Все, что вы выложите в git-репозиторий,
|
||||||
|
мгновенно станет доступным для просмотра в режиме онлайн, чтобы вы могли поделиться им с людьми, даже если они не
|
||||||
|
используют Git. На главной странице каждого проекта есть список файлов проекта, а также информация о последнем изменении.
|
||||||
|
Вы можете сразу увидеть самое важное в вашем проекте: код.
|
||||||
|
history_description: 'Каждый файл в git-репозитории имеет историю, которую вы легко можете посмотреть: кто, когда и что в нем поменял.'
|
||||||
|
annotation_description: |
|
||||||
|
Ищете автора фрагмента кода? Откройте аннотацию файла (Blame), чтобы увидеть:
|
||||||
|
кто и в каком коммите последний изменял данный фрагмент.
|
||||||
|
edit_description: |
|
||||||
|
Вам нужно быстро внести изменение в файл? Исправить орфографические ошибки c вашего мобильного телефона?
|
||||||
|
Мы предлагаем простой редактор для каждого файла в git-репозитории.
|
||||||
|
control: |
|
||||||
|
Существует 3 возможных роли для участника проекта: только чтение, чтение/запись и административный уровень.
|
||||||
|
Участником проекта может выступать как пользователь, так и группа. Проект, как и группа, может иметь неограниченное
|
||||||
|
число участников (пользователей, групп или всех вместе).
|
||||||
|
git: |
|
||||||
|
Вики проекта создана с помощью Gollum — открытого вики-движка, созданного GitHub. В основе своей это полноценный
|
||||||
|
git-репозиторий, который можно клонировать, использовать в режиме офлайн, изменять и загружать изменения обратно на
|
||||||
|
сервер, как в случае с обычным кодом. Удобный веб-редактор позволит работать с ней в онлайн. Теперь данные о проекте не
|
||||||
|
пропадут и доступны для редактирования в любимом редакторе!
|
||||||
|
<br/><br/>Примечание: для приватного проекта вики доступна только его участникам. Для публичного — всем для чтения.
|
||||||
|
tracker: |
|
||||||
|
Каждый проект также может использовать легкий и простой трекер задач. Метки и назначения позволят не потеряться среди
|
||||||
|
задач, а понятный интерфейс позволит сконцентрироваться на работе, а не на заполнении огромных формуляров.
|
|
@ -304,6 +304,8 @@ ActiveRecord::Schema.define(:version => 20120515095324) do
|
||||||
t.integer "build_count", :default => 0, :null => false
|
t.integer "build_count", :default => 0, :null => false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true
|
||||||
|
|
||||||
create_table "register_requests", :force => true do |t|
|
create_table "register_requests", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "email"
|
t.string "email"
|
||||||
|
@ -367,9 +369,11 @@ ActiveRecord::Schema.define(:version => 20120515095324) do
|
||||||
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
||||||
t.string "password_salt", :default => "", :null => false
|
t.string "password_salt", :default => "", :null => false
|
||||||
t.string "reset_password_token"
|
t.string "reset_password_token"
|
||||||
|
t.datetime "reset_password_sent_at"
|
||||||
t.datetime "remember_created_at"
|
t.datetime "remember_created_at"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
|
t.text "ssh_key"
|
||||||
t.string "uname"
|
t.string "uname"
|
||||||
t.string "role"
|
t.string "role"
|
||||||
t.string "language", :default => "en"
|
t.string "language", :default => "en"
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
namespace :downloads do
|
||||||
|
|
||||||
|
desc "Migrate from mount to symlinks"
|
||||||
|
task :migrate => :environment do
|
||||||
|
Platform.opened.each do |pl|
|
||||||
|
system("sudo umount #{pl.symlink_path}")
|
||||||
|
system("sudo rm -Rf #{pl.symlink_path}")
|
||||||
|
|
||||||
|
pl.symlink_directory
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Groups::MembersController do
|
describe Groups::MembersController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@group = FactoryGirl.create(:group)
|
@group = FactoryGirl.create(:group)
|
||||||
@user = @group.owner
|
@user = @group.owner
|
||||||
set_session_for @user
|
set_session_for @user
|
||||||
|
|
|
@ -69,7 +69,7 @@ end
|
||||||
|
|
||||||
describe Groups::ProfileController do
|
describe Groups::ProfileController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@group = FactoryGirl.create(:group)
|
@group = FactoryGirl.create(:group)
|
||||||
@another_user = FactoryGirl.create(:user)
|
@another_user = FactoryGirl.create(:user)
|
||||||
@create_params = {:group => {:description => 'grp1', :uname => 'un_grp1'}}
|
@create_params = {:group => {:description => 'grp1', :uname => 'un_grp1'}}
|
||||||
|
|
|
@ -35,7 +35,7 @@ end
|
||||||
|
|
||||||
describe Platforms::PlatformsController do
|
describe Platforms::PlatformsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@platform = FactoryGirl.create(:platform)
|
@platform = FactoryGirl.create(:platform)
|
||||||
@personal_platform = FactoryGirl.create(:platform, :platform_type => 'personal')
|
@personal_platform = FactoryGirl.create(:platform, :platform_type => 'personal')
|
||||||
|
|
|
@ -26,7 +26,7 @@ end
|
||||||
|
|
||||||
describe Platforms::ProductBuildListsController do
|
describe Platforms::ProductBuildListsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'crud' do
|
context 'crud' do
|
||||||
|
|
|
@ -24,7 +24,7 @@ end
|
||||||
|
|
||||||
describe Platforms::ProductsController do
|
describe Platforms::ProductsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@another_user = FactoryGirl.create(:user)
|
@another_user = FactoryGirl.create(:user)
|
||||||
@platform = FactoryGirl.create(:platform)
|
@platform = FactoryGirl.create(:platform)
|
||||||
|
|
|
@ -67,7 +67,7 @@ end
|
||||||
|
|
||||||
describe Platforms::RepositoriesController do
|
describe Platforms::RepositoriesController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@platform = FactoryGirl.create(:platform)
|
@platform = FactoryGirl.create(:platform)
|
||||||
@repository = FactoryGirl.create(:repository, :platform => @platform)
|
@repository = FactoryGirl.create(:repository, :platform => @platform)
|
||||||
|
|
|
@ -64,7 +64,7 @@ describe Projects::BuildListsController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
before { stub_rsync_methods }
|
before { stub_symlink_methods }
|
||||||
|
|
||||||
context 'crud' do
|
context 'crud' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
|
|
|
@ -64,7 +64,7 @@ end
|
||||||
|
|
||||||
describe Projects::CollaboratorsController do
|
describe Projects::CollaboratorsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@another_user = FactoryGirl.create(:user)
|
@another_user = FactoryGirl.create(:user)
|
||||||
@member_user = FactoryGirl.create(:user)
|
@member_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -76,7 +76,7 @@ end
|
||||||
|
|
||||||
describe Projects::CommentsController do
|
describe Projects::CommentsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
%x(cp -Rf #{Rails.root}/spec/tests.git/* #{@project.git_repository.path}) # maybe FIXME ?
|
%x(cp -Rf #{Rails.root}/spec/tests.git/* #{@project.git_repository.path}) # maybe FIXME ?
|
||||||
@commit = @project.git_repository.commits.first
|
@commit = @project.git_repository.commits.first
|
||||||
|
|
|
@ -72,7 +72,7 @@ end
|
||||||
|
|
||||||
describe Projects::CommentsController do
|
describe Projects::CommentsController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue = FactoryGirl.create(:issue, :project_id => @project.id, :user => FactoryGirl.create(:user))
|
@issue = FactoryGirl.create(:issue, :project_id => @project.id, :user => FactoryGirl.create(:user))
|
||||||
|
|
|
@ -8,7 +8,7 @@ describe Projects::Git::TreesController do
|
||||||
end
|
end
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@another_user = FactoryGirl.create(:user)
|
@another_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -73,7 +73,7 @@ end
|
||||||
|
|
||||||
describe Projects::IssuesController do
|
describe Projects::IssuesController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue_user = FactoryGirl.create(:user)
|
@issue_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -4,7 +4,7 @@ require 'spec_helper'
|
||||||
describe Projects::ProjectsController do
|
describe Projects::ProjectsController do
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@another_user = FactoryGirl.create(:user)
|
@another_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -49,7 +49,7 @@ end
|
||||||
|
|
||||||
describe Projects::SubscribesController do
|
describe Projects::SubscribesController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue = FactoryGirl.create(:issue, :project_id => @project.id)
|
@issue = FactoryGirl.create(:issue, :project_id => @project.id)
|
||||||
|
|
|
@ -16,7 +16,7 @@ shared_examples_for 'not able search' do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe SearchController do
|
describe SearchController do
|
||||||
before { stub_rsync_methods }
|
before { stub_symlink_methods }
|
||||||
|
|
||||||
context 'as guest' do
|
context 'as guest' do
|
||||||
if APP_CONFIG['anonymous_access']
|
if APP_CONFIG['anonymous_access']
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Users::ProfileController do
|
describe Users::ProfileController do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@simple_user = FactoryGirl.create(:user)
|
@simple_user = FactoryGirl.create(:user)
|
||||||
@other_user = FactoryGirl.create(:user)
|
@other_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- encoding : utf-8 -*-
|
# -*- encoding : utf-8 -*-
|
||||||
FactoryGirl.define do
|
FactoryGirl.define do
|
||||||
factory :arch do
|
factory :arch do
|
||||||
name { FactoryGirl.generate(:string) }
|
name { FactoryGirl.generate(:unixname) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,7 +6,7 @@ describe UserMailer do
|
||||||
|
|
||||||
context 'On Issue create' do
|
context 'On Issue create' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue_user = FactoryGirl.create(:user)
|
@issue_user = FactoryGirl.create(:user)
|
||||||
|
@ -44,7 +44,7 @@ describe UserMailer do
|
||||||
|
|
||||||
context 'On Issue assign' do
|
context 'On Issue assign' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue_user = FactoryGirl.create(:user)
|
@issue_user = FactoryGirl.create(:user)
|
||||||
|
@ -80,7 +80,7 @@ describe UserMailer do
|
||||||
|
|
||||||
context 'On Comment create' do
|
context 'On Comment create' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
|
|
||||||
@project = FactoryGirl.create(:project)
|
@project = FactoryGirl.create(:project)
|
||||||
@issue_user = FactoryGirl.create(:user)
|
@issue_user = FactoryGirl.create(:user)
|
||||||
|
|
|
@ -25,7 +25,7 @@ describe CanCan do
|
||||||
let(:register_request) { FactoryGirl.create(:register_request) }
|
let(:register_request) { FactoryGirl.create(:register_request) }
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'Site admin' do
|
context 'Site admin' do
|
||||||
|
|
|
@ -23,7 +23,7 @@ def set_comments_data_for_commit
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Comment do
|
describe Comment do
|
||||||
before { stub_rsync_methods }
|
before { stub_symlink_methods }
|
||||||
context 'for global admin user' do
|
context 'for global admin user' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@user = FactoryGirl.create(:admin)
|
@user = FactoryGirl.create(:admin)
|
||||||
|
|
|
@ -15,7 +15,7 @@ def set_commentable_data
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Comment do
|
describe Comment do
|
||||||
before { stub_rsync_methods }
|
before { stub_symlink_methods }
|
||||||
context 'for global admin user' do
|
context 'for global admin user' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@user = FactoryGirl.create(:admin)
|
@user = FactoryGirl.create(:admin)
|
||||||
|
|
|
@ -4,7 +4,7 @@ require "cancan/matchers"
|
||||||
|
|
||||||
describe Group do
|
describe Group do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@group = FactoryGirl.create(:group)
|
@group = FactoryGirl.create(:group)
|
||||||
@ability = Ability.new(User.new)
|
@ability = Ability.new(User.new)
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Platform do
|
describe Platform do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
Platform.delete_all
|
Platform.delete_all
|
||||||
User.delete_all
|
User.delete_all
|
||||||
FileUtils.rm_rf(APP_CONFIG['root_path'])
|
FileUtils.rm_rf(APP_CONFIG['root_path'])
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe ProductBuildList do
|
describe ProductBuildList do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
end
|
end
|
||||||
|
|
||||||
it { should belong_to(:product) }
|
it { should belong_to(:product) }
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Product do
|
describe Product do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
Platform.delete_all
|
Platform.delete_all
|
||||||
User.delete_all
|
User.delete_all
|
||||||
Product.delete_all
|
Product.delete_all
|
||||||
|
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe ProjectToRepository do
|
describe ProjectToRepository do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@platform = FactoryGirl.create(:platform)
|
@platform = FactoryGirl.create(:platform)
|
||||||
@first_repo = FactoryGirl.create(:repository, :platform_id => @platform.id)
|
@first_repo = FactoryGirl.create(:repository, :platform_id => @platform.id)
|
||||||
@second_repo = FactoryGirl.create(:repository, :platform_id => @platform.id)
|
@second_repo = FactoryGirl.create(:repository, :platform_id => @platform.id)
|
||||||
|
|
|
@ -5,7 +5,7 @@ describe Repository do
|
||||||
|
|
||||||
context 'when create with same owner that platform' do
|
context 'when create with same owner that platform' do
|
||||||
before (:each) do
|
before (:each) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
@platform = FactoryGirl.create(:platform)
|
@platform = FactoryGirl.create(:platform)
|
||||||
@params = {:name => 'tst_platform', :description => 'test platform'}
|
@params = {:name => 'tst_platform', :description => 'test platform'}
|
||||||
end
|
end
|
||||||
|
@ -17,7 +17,7 @@ describe Repository do
|
||||||
end
|
end
|
||||||
|
|
||||||
before(:all) do
|
before(:all) do
|
||||||
stub_rsync_methods
|
stub_symlink_methods
|
||||||
Platform.delete_all
|
Platform.delete_all
|
||||||
User.delete_all
|
User.delete_all
|
||||||
Repository.delete_all
|
Repository.delete_all
|
||||||
|
|
|
@ -12,7 +12,7 @@ def set_testable_data
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Subscribe do
|
describe Subscribe do
|
||||||
before { stub_rsync_methods }
|
before { stub_symlink_methods }
|
||||||
context 'for global admin user' do
|
context 'for global admin user' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@user = FactoryGirl.create(:admin)
|
@user = FactoryGirl.create(:admin)
|
||||||
|
|
|
@ -33,9 +33,9 @@ def set_session_for(user=nil)
|
||||||
sign_in current_user
|
sign_in current_user
|
||||||
end
|
end
|
||||||
|
|
||||||
def stub_rsync_methods
|
def stub_symlink_methods
|
||||||
any_instance_of(Platform, :mount_directory_for_rsync => true)
|
any_instance_of(Platform, :symlink_directory => true)
|
||||||
any_instance_of(Platform, :umount_directory_for_rsync => true)
|
any_instance_of(Platform, :remove_symlink_directory => true)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_git_commit(project)
|
def test_git_commit(project)
|
||||||
|
|