Closed keedi closed 9 years ago
진행합니다.
처리한 내역은 다음과 같습니다.
cpanfile
과 Makefile.PL
두 파일을 저장소에서 관리.mailmap
을 이용한 커미터 관리현재 사용하고 있는 dist.ini
를 잠깐 살펴보면 다음과 같습니다.
name = OpenCloset-Schema
author = 김도형 - Keedi Kim <keedi@cpan.org>
author = 홍형석 - Hyungsuk Hong <aanoaa@cpan.org>
license = Perl_5
copyright_holder = SILEX
[@DAGOLDEN]
fake_release = 1
CopyFilesFromBuild.copy[] = cpanfile
SILEX 내부 프로젝트가 아닌 공개 프로젝트기 때문에 굳이 Dist::Zilla::PluginBundle::SILEX
를 사용하지 않고, 해당 모듈이 참고한 원래 모듈인 Dist::Zilla::PluginBundle::DAGOLDEN
모듈을 그대로 사용했습니다. 특별히 열린옷장용 모듈이어서 처리해야 할 내역이 많다면 별도의 플러그인을 만들겠지만 아직은 DAGOLDEN의 모듈을 그대로 써도 충분합니다. 해당 플러그인의 정보는 다음 링크에서 확인할 수 있습니다.
유심히 볼 부분은 다음과 같습니다.
fake_release
: CPAN에 업로드하지 않을 계획이므로 참으로 설정합니다.CopyFilesFromBuild.copy[]
: 해당 플러그인 번들에서 Dist::Zilla::Config::Slicer 모듈을 사용하기 때문에 지원하는 기능입니다. Dist::Zilla::Plugin::CopyFilesFromBuild 플러그인의 기능 중 copy
기능을 이용하는 것이며, 다수 값(multi value)을 입력하려면 []
기호를 사용해야 합니다. 사용하지 안을 경우 Dist::Zilla
에서 중복 입력이라는 오류가 발생합니다.기본적으로 DAGOLDEN의 플러그인 번들은 auto_version
을 사용할 경우 cpanfile
을 저장소에 관리하고, 아닐 경우 Makefile.PL
을 저장소에서 관리합니다. 이는 꽤 합리적인 방법이며, 그대로 따라가면 좋겠으나, @aanoaa 님께서는 cpanfile
이 저장소에서 관리되는 것을 선호하시기 때문에 추가로 cpanfile
도 프로젝트 루트 디렉터리에서 관리할 수 있도록 CopyFilesFromBuild.copy[]
옵션을 사용해서 추가했습니다.
처리한 내역은 다음과 같습니다.
dist.ini
에 추가한 후 cpanfile
및 Makefile.PL
파일 갱신stopwords
를 추가해서 pod 검증 테스트를 통과하도록 수정모듈의 모든 파일에 dzil 관련 메타 태그를 추가했으며 지금까지 해오던 방식과 조금 다르게 모든 모듈에 VERSION
값을 명시했습니다. 즉 다음과 같은 식입니다.
use utf8;
package OpenCloset::Schema;
# ABSTRACT: OpenCloset Database Schema Class
our $VERSION = '0.001';
이제 dzil release
를 수행하면 자동으로 모든 파일의 our $VERSION
부분의 값이 바뀝니다. 즉 develop
상태의 소스에서는 다음 릴리스 버전 번호를 가지고 있게 됩니다. :)
릴리스 과정을 위해서는 다음 두 모듈이 필요합니다. 단순히 코드를 수정하거나 모듈을 사용하는데는 필요 없습니다. 따라서 dist.ini
나 cpanfile
, Makefile.PL
에 추가하면 안됩니다.
평범한 모듈이므로 버전 번호는 0.XYZ
형식으로 사용할 예정입니다. 특별한 이유가 없다면 버전은 0.001
단위로 증가시키려고 합니다. 스키마가 변경되어 더이상 호환이 불가능할 경우 Changes
파일에 최대한 상세하게 기록해야 합니다.
0.001 버전 릴리스 완료했습니다.
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git merge --no-ff develop
Merge made by the 'recursive' strategy.
.gitignore | 16 ++
.mailmap | 30 +++
Changes | 4 +
Makefile.PL | 76 +++++++
cpanfile | 44 ++++
db/init.sql | 442 +++++++++++++++++++++++++++++++++++++++
db/schema-loader.pl | 87 ++++++++
db/test-data.sql | 86 ++++++++
dist.ini | 21 ++
lib/OpenCloset/Schema.pm | 27 +++
lib/OpenCloset/Schema/Base.pm | 40 ++++
lib/OpenCloset/Schema/Result/Booking.pm | 161 +++++++++++++++
lib/OpenCloset/Schema/Result/Clothes.pm | 377 ++++++++++++++++++++++++++++++++++
lib/OpenCloset/Schema/Result/ClothesTag.pm | 117 +++++++++++
lib/OpenCloset/Schema/Result/Donation.pm | 143 +++++++++++++
lib/OpenCloset/Schema/Result/Group.pm | 91 +++++++++
lib/OpenCloset/Schema/Result/Order.pm | 556 ++++++++++++++++++++++++++++++++++++++++++++++++++
lib/OpenCloset/Schema/Result/OrderDetail.pm | 206 +++++++++++++++++++
lib/OpenCloset/Schema/Result/OrderStatusLog.pm | 122 +++++++++++
lib/OpenCloset/Schema/Result/SMS.pm | 149 ++++++++++++++
lib/OpenCloset/Schema/Result/Satisfaction.pm | 168 +++++++++++++++
lib/OpenCloset/Schema/Result/Status.pm | 158 ++++++++++++++
lib/OpenCloset/Schema/Result/Tag.pm | 123 +++++++++++
lib/OpenCloset/Schema/Result/User.pm | 244 ++++++++++++++++++++++
lib/OpenCloset/Schema/Result/UserBooking.pm | 192 +++++++++++++++++
lib/OpenCloset/Schema/Result/UserInfo.pm | 329 +++++++++++++++++++++++++++++
26 files changed, 4009 insertions(+)
create mode 100644 .gitignore
create mode 100644 .mailmap
create mode 100644 Changes
create mode 100644 Makefile.PL
create mode 100644 cpanfile
create mode 100644 db/init.sql
create mode 100644 db/schema-loader.pl
create mode 100644 db/test-data.sql
create mode 100644 dist.ini
create mode 100644 lib/OpenCloset/Schema.pm
create mode 100644 lib/OpenCloset/Schema/Base.pm
create mode 100644 lib/OpenCloset/Schema/Result/Booking.pm
create mode 100644 lib/OpenCloset/Schema/Result/Clothes.pm
create mode 100644 lib/OpenCloset/Schema/Result/ClothesTag.pm
create mode 100644 lib/OpenCloset/Schema/Result/Donation.pm
create mode 100644 lib/OpenCloset/Schema/Result/Group.pm
create mode 100644 lib/OpenCloset/Schema/Result/Order.pm
create mode 100644 lib/OpenCloset/Schema/Result/OrderDetail.pm
create mode 100644 lib/OpenCloset/Schema/Result/OrderStatusLog.pm
create mode 100644 lib/OpenCloset/Schema/Result/SMS.pm
create mode 100644 lib/OpenCloset/Schema/Result/Satisfaction.pm
create mode 100644 lib/OpenCloset/Schema/Result/Status.pm
create mode 100644 lib/OpenCloset/Schema/Result/Tag.pm
create mode 100644 lib/OpenCloset/Schema/Result/User.pm
create mode 100644 lib/OpenCloset/Schema/Result/UserBooking.pm
create mode 100644 lib/OpenCloset/Schema/Result/UserInfo.pm
$ dzil release
[DZ] beginning to build OpenCloset-Schema
[DZ] guessing dist's main_module is lib/OpenCloset/Schema.pm
[DZ] writing OpenCloset-Schema in OpenCloset-Schema-0.001
[@DAGOLDEN/CopyFilesFromBuild] Copied OpenCloset-Schema-0.001/Makefile.PL to ./Makefile.PL
[@DAGOLDEN/CopyFilesFromBuild] Copied OpenCloset-Schema-0.001/cpanfile to ./cpanfile
[DZ] building archive with Archive::Tar; install Archive::Tar::Wrapper 0.15 or newer for improved speed
[DZ] writing archive to OpenCloset-Schema-0.001.tar.gz
[@DAGOLDEN/PromptIfStale] checking for stale modules...
[@DAGOLDEN/Git::CheckFor::CorrectBranch] Current branch (master) and release branch match (master)
[@DAGOLDEN/Git::Check] branch master is in a clean state
[@DAGOLDEN/CheckMetaResources] Checking META resources
[@DAGOLDEN/CheckMetaResources] META resources OK
[@DAGOLDEN/CheckPrereqsIndexed] all prereqs appear to be indexed
[@DAGOLDEN/CheckChangesHasContent] Checking Changes
[@DAGOLDEN/CheckChangesHasContent] Changes OK
[@DAGOLDEN/TestRelease] Extracting /home/askdna/workspace/opencloset/OpenCloset-Schema/OpenCloset-Schema-0.001.tar.gz to .build/ZKls7NtFuG
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for OpenCloset::Schema
Wide character in print at /opt/perl5/perlbrew/perls/perl-5.20.1/lib/5.20.1/ExtUtils/MakeMaker.pm line 1167.
Wide character in print at /opt/perl5/perlbrew/perls/perl-5.20.1/lib/5.20.1/ExtUtils/MakeMaker.pm line 1167.
Wide character in print at /opt/perl5/perlbrew/perls/perl-5.20.1/lib/5.20.1/ExtUtils/MakeMaker.pm line 1167.
Writing MYMETA.yml and MYMETA.json
cp lib/OpenCloset/Schema.pm blib/lib/OpenCloset/Schema.pm
cp lib/OpenCloset/Schema/Result/Status.pm blib/lib/OpenCloset/Schema/Result/Status.pm
cp lib/OpenCloset/Schema/Result/OrderDetail.pm blib/lib/OpenCloset/Schema/Result/OrderDetail.pm
cp lib/OpenCloset/Schema/Result/Clothes.pm blib/lib/OpenCloset/Schema/Result/Clothes.pm
cp lib/OpenCloset/Schema/Result/SMS.pm blib/lib/OpenCloset/Schema/Result/SMS.pm
cp lib/OpenCloset/Schema/Result/Donation.pm blib/lib/OpenCloset/Schema/Result/Donation.pm
cp lib/OpenCloset/Schema/Result/Satisfaction.pm blib/lib/OpenCloset/Schema/Result/Satisfaction.pm
cp lib/OpenCloset/Schema/Result/Group.pm blib/lib/OpenCloset/Schema/Result/Group.pm
cp lib/OpenCloset/Schema/Result/Booking.pm blib/lib/OpenCloset/Schema/Result/Booking.pm
cp lib/OpenCloset/Schema/Result/Order.pm blib/lib/OpenCloset/Schema/Result/Order.pm
cp lib/OpenCloset/Schema/Result/User.pm blib/lib/OpenCloset/Schema/Result/User.pm
cp lib/OpenCloset/Schema/Result/Tag.pm blib/lib/OpenCloset/Schema/Result/Tag.pm
cp lib/OpenCloset/Schema/Result/UserBooking.pm blib/lib/OpenCloset/Schema/Result/UserBooking.pm
cp lib/OpenCloset/Schema/Result/OrderStatusLog.pm blib/lib/OpenCloset/Schema/Result/OrderStatusLog.pm
cp lib/OpenCloset/Schema/Result/UserInfo.pm blib/lib/OpenCloset/Schema/Result/UserInfo.pm
cp lib/OpenCloset/Schema/Result/ClothesTag.pm blib/lib/OpenCloset/Schema/Result/ClothesTag.pm
cp lib/OpenCloset/Schema/Base.pm blib/lib/OpenCloset/Schema/Base.pm
PERL_DL_NONLAZY=1 /opt/perl5/perlbrew/perls/perl-5.20.1/bin/perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
#
# Versions for all modules listed in MYMETA.json (including optional ones):
#
# === Configure Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker 6.17 6.98
#
# === Build Requires ===
#
# Module Want Have
# ------------------- ---- ----
# ExtUtils::MakeMaker any 6.98
#
# === Test Requires ===
#
# Module Want Have
# ------------------- ---- --------
# ExtUtils::MakeMaker any 6.98
# File::Spec any 3.48
# Test::More any 1.001002
#
# === Test Recommends ===
#
# Module Want Have
# ---------- -------- --------
# CPAN::Meta 2.120900 2.142690
#
# === Runtime Requires ===
#
# Module Want Have
# ------------------------------------ ---- -------
# DBIx::Class::Core any undef
# DBIx::Class::EncodedColumn any 0.00013
# DBIx::Class::InflateColumn::DateTime any undef
# DBIx::Class::Schema any undef
# DBIx::Class::TimeStamp any 0.14
# base any 2.22
# overload any 1.22
# strict any 1.08
# utf8 any 1.13_01
# warnings any 1.23
#
# === Develop Requires ===
#
# Module Want Have
# ----------------------------------- ---- --------
# Dist::Zilla 5 5.031
# Dist::Zilla::Plugin::Prereqs any 5.031
# Dist::Zilla::PluginBundle::DAGOLDEN any 0.073
# File::Spec any 3.48
# File::Temp any 0.2304
# IO::Handle any 1.35
# IPC::Open3 any 1.16
# Pod::Coverage::TrustPod any 0.100003
# Test::CPAN::Meta any 0.24
# Test::More any 1.001002
# Test::Pod 1.41 1.48
# Test::Pod::Coverage 1.08 1.10
# Test::Spelling 0.12 0.20
# Test::Version 1 1.004001
#
t/00-report-prereqs.t .. ok
All tests successful.
Files=1, Tests=1, 1 wallclock secs ( 0.01 usr 0.00 sys + 0.08 cusr 0.00 csys = 0.09 CPU)
Result: PASS
xt/author/critic.t ............ skipped: Test::Perl::Critic required to criticise code
xt/release/distmeta.t ......... ok
xt/release/portability.t ...... ok
xt/release/test-version.t ..... ok
xt/release/pod-syntax.t ....... ok
xt/release/pod-coverage.t ..... ok
xt/author/pod-spell.t ......... ok
xt/author/00-compile.t ........ ok
xt/release/minimum-version.t .. ok
All tests successful.
Files=9, Tests=126, 2 wallclock secs ( 0.04 usr 0.05 sys + 4.76 cusr 0.21 csys = 5.06 CPU)
Result: PASS
[@DAGOLDEN/TestRelease] all's well; removing .build/ZKls7NtFuG
[@DAGOLDEN/ConfirmRelease] *** Preparing to release OpenCloset-Schema-0.001.tar.gz with @DAGOLDEN/FakeRelease ***
Do you want to continue the release process? [y/N]: y
[@DAGOLDEN/FakeRelease] Fake release happening (nothing was really done)
[@DAGOLDEN/Git::Tag] Tagged release-0.001
[@DAGOLDEN/Commit_Changes] Committed Changes lib/OpenCloset/Schema.pm lib/OpenCloset/Schema/Base.pm lib/OpenCloset/Schema/Result/Booking.pm lib/OpenCloset/Schema/Result/Clothes.pm lib/OpenCloset/Schema/Result/ClothesTag.pm lib/OpenCloset/Schema/Result/Donation.pm lib/OpenCloset/Schema/Result/Group.pm lib/OpenCloset/Schema/Result/Order.pm lib/OpenCloset/Schema/Result/OrderDetail.pm lib/OpenCloset/Schema/Result/OrderStatusLog.pm lib/OpenCloset/Schema/Result/Satisfaction.pm lib/OpenCloset/Schema/Result/SMS.pm lib/OpenCloset/Schema/Result/Status.pm lib/OpenCloset/Schema/Result/Tag.pm lib/OpenCloset/Schema/Result/User.pm lib/OpenCloset/Schema/Result/UserBooking.pm lib/OpenCloset/Schema/Result/UserInfo.pm Makefile.PL
[@DAGOLDEN/Git::Push] pushing to origin
$ git checkout develop
Switched to branch 'develop'
Your branch is up-to-date with 'origin/develop'.
$ git merge --no-ff master
Merge made by the 'recursive' strategy.
Changes | 2 ++
Makefile.PL | 2 +-
lib/OpenCloset/Schema.pm | 2 +-
lib/OpenCloset/Schema/Base.pm | 2 +-
lib/OpenCloset/Schema/Result/Booking.pm | 2 +-
lib/OpenCloset/Schema/Result/Clothes.pm | 2 +-
lib/OpenCloset/Schema/Result/ClothesTag.pm | 2 +-
lib/OpenCloset/Schema/Result/Donation.pm | 2 +-
lib/OpenCloset/Schema/Result/Group.pm | 2 +-
lib/OpenCloset/Schema/Result/Order.pm | 2 +-
lib/OpenCloset/Schema/Result/OrderDetail.pm | 2 +-
lib/OpenCloset/Schema/Result/OrderStatusLog.pm | 2 +-
lib/OpenCloset/Schema/Result/SMS.pm | 2 +-
lib/OpenCloset/Schema/Result/Satisfaction.pm | 2 +-
lib/OpenCloset/Schema/Result/Status.pm | 2 +-
lib/OpenCloset/Schema/Result/Tag.pm | 2 +-
lib/OpenCloset/Schema/Result/User.pm | 2 +-
lib/OpenCloset/Schema/Result/UserBooking.pm | 2 +-
lib/OpenCloset/Schema/Result/UserInfo.pm | 2 +-
19 files changed, 20 insertions(+), 18 deletions(-)
$ git push
Counting objects: 1, done.
Writing objects: 100% (1/1), 231 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:opencloset/OpenCloset-Schema.git
1954749..a9e9a24 develop -> develop
$ git tag -n
release-0.001 v0.001
$
GitHub는 지난 2012년 이후부터 다운로드 탭 및 기능 지원을 종료했기 때문에 어떤식으로 타르볼을 저장하거나 배포할지 조금 고민해보겠습니다.
일단 릴리스 완료했으므로 이슈 닫습니다.
OpenCloset::Schema 를 사용하는 서비스는 설치해서 사용하고, include
되고 있는 staff 의 lib
디렉토리를 제외시켜야 합니다.
monitor 는 schema 모듈을 tarball 로 설치하고, ubic 설정에서 PERL5LIB
을 수정해야 합니다.
opencloset/opencloset#193 항목에서 데이터베이스 관련 코드를 모두 기존 저장소의 로그 내역과 함께 분리했습니다. 이 상태에서 Dist::Zilla를 이용해 CPAN 모듈 형태로 패키징 할 수 있도록 기본 구조를 완성해야 합니다.