Re: Should MANIFEST go in the repository?

2008-08-21 Thread Shawn Boyette ☠
On Wed, Aug 20, 2008 at 12:57 PM, David Golden [EMAIL PROTECTED] wrote:
 Anyway. I am in the Keep MANIFEST in repo and manually update camp.

 Me, too, usually.

Me three.

-- 
Shawn Boyette
[EMAIL PROTECTED]


Should MANIFEST go in the repository?

2008-08-20 Thread Jeffrey Thalhammer

Hi everyone-

At my current $job, the Perl code is organized into a handful of cpan- 
style distros.  We use Module::Build to build each distro, and then  
use CPAN.pm to orchestrate the deployment of the application from a  
local CPAN repository.  This all works like a charm.


But there is some debate about whether the MANIFEST and other  
metafiles should be put in the source code repository.  My gut feeling  
is that MANIFEST is a generated file, therefore it does not go in the  
repository.  Instead, the MANIFEST.SKIP file should be carefully  
crafted to ensure that the MANIFEST is correct.  However, this raises  
a question: How do you ensure that *unexpected* cruft files don't end  
up in the MANIFEST?


My colleagues prefer to have the MANIFEST file in the repository so  
they can run distcheck to see what's been added or removed before  
committing some work.  And then they manually edit MANIFEST or just  
run ./Build manifest whenever MANIFEST gets out of sync.  But we  
frequently forget to do this and it results in build failures in our  
continuous integration system.


In my own distros (Perl-Critic), non of the metafiles are in the  
repository.  I only worry about the MANIFEST when I'm about to  
actually make a dist.  We have Module::Build wired up so that the test  
target depends on the manifest target.  The implication is that we  
would always run tests before making a dist.  And only then do I  
really look inside the MANIFEST.  If something seems amiss, then I add  
a line to MANIFEST.SKIP or do whatever is necessary at that point.  I  
don't run continuous integration on Perl-Critic, but I feel this has  
worked well.  At least I'm never bothered with spurious warnings about  
my MANIFEST being out of sync.


So what are the best practices for managing distro metafiles (MANIFEST  
in particular)?


Jeffrey Thalhammer
Imaginative Software Systems
vcard: http://www.imaginative-software.com/contact/jeff.vcf






Re: Should MANIFEST go in the repository?

2008-08-20 Thread Gabor Szabo
First of all thanks for Perl::Critic!

I am quite sure this question has the potential of a nice holy war.
Anyway. I am in the Keep MANIFEST in repo and manually update camp.

I think MANIFEST is and should be the tool you control what gets in the
distro and the failures and warnings you might get during continuous
integration are just the way to err, warn you about forgetting something.

Gabor


Re: Should MANIFEST go in the repository?

2008-08-20 Thread David Golden
On Wed, Aug 20, 2008 at 12:50 PM, Gabor Szabo [EMAIL PROTECTED] wrote:
 I am quite sure this question has the potential of a nice holy war.

Likewise.

 Anyway. I am in the Keep MANIFEST in repo and manually update camp.

Me, too, usually.  I like to have the repository tag for a release
contain exactly the files in the tarball on CPAN. This includes things
like META.yml.

David


Re: Should MANIFEST go in the repository?

2008-08-20 Thread David E. Wheeler

On Aug 20, 2008, at 09:57, David Golden wrote:


Anyway. I am in the Keep MANIFEST in repo and manually update camp.


Me, too, usually.  I like to have the repository tag for a release
contain exactly the files in the tarball on CPAN. This includes things
like META.yml.


+1, although I recently stopped including META.yml, I always want to  
have MANIFEST in the repo.


Best,

David


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Eric Wilhelm
# from David E. Wheeler
# on Wednesday 20 August 2008 10:39:

+1, although I recently stopped including META.yml, I always want to  
have MANIFEST in the repo.

Same here.  The reason, for me, is that generating META.yml is almost 
always predictable but generating MANIFEST very often reveals that 
something should have been done to MANIFEST.SKIP.

There is the caveat that regenerating needs to be done consistently.  
For instance, `rm MANIFEST` and `MANIFEST` yield different results 
(and of course you *must* empty or delete the file before ./Build 
manifest to pickup on the fact that a file was removed.)  The MANIFEST 
provided by Module::Starter also doesn't match the generated order, 
comments, etc.  But once you get through all of that, you can see a 
nice diff whenever you change it ;-)

--Eric
-- 
But you can never get 3n from n, ever, and if you think you can, please
email me the stock ticker of your company so I can short it.
--Joel Spolsky
---
http://scratchcomputing.com
---


Re: Should MANIFEST go in the repository?

2008-08-20 Thread David Golden
On Wed, Aug 20, 2008 at 1:53 PM, Eric Wilhelm
[EMAIL PROTECTED] wrote:
 The reason, for me, is that generating META.yml is almost always predictable

My view:

* META.yml is an evolving spec
* The build tools are periodically updated to produce the latest current spec
* Storing META.yml in the repository has almost zero marginal cost[1]

-- David

[1] assuming sufficient automation of the release process


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Ricardo SIGNES
* Jeffrey Thalhammer [EMAIL PROTECTED] [2008-08-20T12:42:49]
 But there is some debate about whether the MANIFEST and other  
 metafiles should be put in the source code repository.  My gut feeling  
 is that MANIFEST is a generated file, therefore it does not go in the  
 repository.  Instead, the MANIFEST.SKIP file should be carefully  
 crafted to ensure that the MANIFEST is correct.  However, this raises  
 a question: How do you ensure that *unexpected* cruft files don't end  
 up in the MANIFEST?

I don't store MANIFEST, I store MANIFEST.SKIP.

In fact, on my latest dists, I only include the MANIFEST as a couresty to
stupid software that expects it.  I don't see any value in having a MANIFEST
file in the dist, let alone in my repo.

I have other tools for managing what ends up in the tarball; I configure those
instead of MANIFEST, which I find to be a fairly anemic tool.

-- 
rjbs


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Paul Johnson
On Wed, Aug 20, 2008 at 02:56:45PM -0400, Ricardo SIGNES wrote:

 In fact, on my latest dists, I only include the MANIFEST as a couresty to
 stupid software that expects it.  I don't see any value in having a MANIFEST
 file in the dist, let alone in my repo.

My .zshrc includes the following lines:

mf() { perl -MExtUtils::Manifest=maniread -le 'print for sort keys 
%{maniread()}' }
tg() { tcgrep -brun $@ }
mg() { tg $@ `mf | perl -lne 'print if -T'` }

This allows me to say something like

 $ mg -iw bodge

to find all occurrences of bodge in the original distribution, which I
have found to be quite helpful.

I also keep my MANIFEST under revision control.  It annoys me to do so,
and I suspect that a good 5% of my checkins are along the lines of
update MANIFEST, but I don't yet trust myself not to mess things up if
I don't check it in.  This, of course, says more about me than it does
about what should be considered best practice.

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Aristotle Pagaltzis
* Jeffrey Thalhammer [EMAIL PROTECTED] [2008-08-20 18:45]:
 My colleagues prefer to have the MANIFEST file in the
 repository so they can run distcheck to see what's been added
 or removed before committing some work.

Err. Shouldn’t that be your VCS’s job? Every single one I’ve used
has a `status` command that tells me what I’ve touched, and in my
experience it is be much more reliable than `MANIFEST`. So is this
discussion in your workplace actually a tooling issue?

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Michael G Schwern
Jeffrey Thalhammer wrote:
 At my current $job, the Perl code is organized into a handful of
 cpan-style distros.  We use Module::Build to build each distro, and then
 use CPAN.pm to orchestrate the deployment of the application from a
 local CPAN repository.  This all works like a charm.
 
 But there is some debate about whether the MANIFEST and other metafiles
 should be put in the source code repository.  My gut feeling is that
 MANIFEST is a generated file, therefore it does not go in the
 repository.  Instead, the MANIFEST.SKIP file should be carefully crafted
 to ensure that the MANIFEST is correct.  However, this raises a
 question: How do you ensure that *unexpected* cruft files don't end up
 in the MANIFEST?

This seems to be a subset of the should the repository contain all the
release files? argument.  Should the repo contain just the files which build
a release, or should they contain all the files that go into a release?

One side would argue that everything should be in version control so you can
track down bugs.  The other side argues that keeping generated files up to
date is annoying.

The pragmatic answer to this question depends largely on your release process
and how much stuff you generate.


 My colleagues prefer to have the MANIFEST file in the repository so they
 can run distcheck to see what's been added or removed before committing
 some work.  And then they manually edit MANIFEST or just run ./Build
 manifest whenever MANIFEST gets out of sync.  But we frequently forget
 to do this and it results in build failures in our continuous
 integration system.

Regardless of whether it's checked in, you should not be updating MANIFEST by
hand.  It's rote work better done by the monkeys inside your computer.  Keep a
properly maintained MANIFEST.SKIP and generate MANIFEST.

Also, there is a disttest target which will simulate testing a distribution
by copying all the files in MANIFEST to a subdir and run tests in that.  I run
it as part of my release process.


-- 
Look at me talking when there's science to do.
When I look out there it makes me glad I'm not you.
I've experiments to be run.
There is research to be done
On the people who are still alive.
-- Jonathan Coulton, Still Alive


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Aristotle Pagaltzis
* Michael G Schwern [EMAIL PROTECTED] [2008-08-20 23:05]:
 This seems to be a subset of the should the repository contain
 all the release files? argument. Should the repo contain just
 the files which build a release, or should they contain all the
 files that go into a release?
 
 One side would argue that everything should be in version
 control so you can track down bugs. The other side argues that
 keeping generated files up to date is annoying.
 
 The pragmatic answer to this question depends largely on your
 release process and how much stuff you generate.

Idle musing: if you have a sufficiently able VCS, couldn’t you
have it both ways? Keep a main branch that contains just the
essentials, and for a release merge it over to the release branch
where the generated files are then refreshed and also checked
back in. No?

I can’t currently think of any reason for which this would fail,
although I might be missing something obvious.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/


Re: Should MANIFEST go in the repository?

2008-08-20 Thread Aristotle Pagaltzis
* Michael G Schwern [EMAIL PROTECTED] [2008-08-21 01:50]:
 is it worth the administrative effort

The administrative effort of all of three commands? (Switch
branch then merge, plus check in – with the usual release
procedure being performed inbetween, prior to check-in.)

 just to keep trunk clean of one generated file?

As I indicated by “idle musing,” I was thinking in general terms
about the keep-everything vs ignore-generated debate. If it’s
only `MANIFEST`, the overhead of that particular approach is
wasted, no doubt.

 It also presumes that the generated files aren't of any use
 to day to day development.

No it doesn’t, each branch can keep a different list in
`.fooignore`.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/