home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1999 September / pcp155a.iso / linux / aegis / aegis-3.17.faq < prev    next >
Encoding:
Internet Message Format  |  1999-06-23  |  27.4 KB

  1. Subject: Aegis Frequently Asked    Questions (FAQ)
  2. From: Peter Miller <millerp@canb.auug.org.au>
  3. Newsgroups: comp.software-eng,comp.software.config-mgmt,comp.software.testing,comp.sources.d,alt.sources.d
  4.  
  5. Submitted-by: Peter Miller <millerp@canb.auug.org.au>
  6. Archive-name: aegis.3.17/FAQ
  7.  
  8. This message contains answers to a number of frequently    asked
  9. questions about    Aegis.    If you don't know what Aegis is, read on.
  10.  
  11. Suggestions for    additions or improvements to this FAQ are most
  12. welcome.
  13.  
  14.                    Contents
  15. 1.   What is Aegis?
  16. 1.1.   What operating systems are supported?
  17. 1.1.1.     Cygwin
  18. 1.1.2.     Windows NT
  19. 1.2.   Where can I get Aegis?
  20. 1.3.   Is Aegis    actively being maintained?
  21. 1.4.   Is there    an Aegis mailing list?
  22. 1.5.   How does    Aegis compare with program X?
  23. 2.   Configuration and initial build problems
  24. 2.1.   Changing    Makefile and common/config.h
  25. 2.2.   RCS
  26. 2.3.   SCCS
  27. 3.   Testing
  28. 3.1.   Can I use something besides a shell script?
  29. 3.2.   Testing curses programs
  30. 3.2.1.     Expect
  31. 3.3.   Testing X11 programs
  32. 3.3.1.     replayXt
  33. 3.4.   Testing embedded    systems
  34. 3.5.   Do I really need    to test    my software?
  35. 4.   Miscellaneous
  36. 4.1.   How do you pronounce ``Aegis''?
  37. 4.2.   How do I    automate the integration queue?
  38. 4.3.   How do I    enforce    coding standards?
  39. 4.4.   How do I    get dates printed before and after build commands?
  40. 4.5.   How do I    stop Aegis automatically merging?
  41. 4.6.   How do I    modify which developer is assigned to a    change?
  42. 4.7.   Do I have to type all the config    examples in the    User Guide?
  43. 4.8.   Is there    a way to recreate a previous baseline?
  44. 4.9.   How do I    stop it    using the pager?
  45. 4.10.    Why does develop end complain about builds?
  46. 4.10.1.      Build    Time Stamps
  47. 4.10.2.      Build    Architectures
  48. 5.   Internationalization
  49. 5.1.   Say What?
  50. 5.2.   So why are the error messages So    Bad, now?
  51. 5.3.   What controls which language is used?
  52. 5.4.   What localizations are available?
  53. 5.5.   So can I    change the text    of error messages?
  54. 6.   Branches
  55. 6.1.   What is a Branch?
  56. 6.2.   What is an Anabranch?
  57. 6.3.   Do branches have    to end?
  58. 6.4.   Why are branches    called projects?
  59. 6.5.   Why must    aed be used when integrating a branch?
  60. 6.6.   How come    the branch baseline is incomplete?
  61.  
  62. ----------------------------------------------------------------------
  63.  
  64. Subject: 1.  What is Aegis?
  65.  
  66. Aegis is a transaction-based software configuration management system.
  67. It provides a framework    within which a team of developers may work on
  68. many changes to    a program independently, and Aegis coordinates
  69. integrating these changes back into the    master source of the program,
  70. with as    little disruption as possible.
  71.  
  72. For a more complete description, see the README    file or    the User
  73. Guide.    Both are available from    the anonymous FTP site (see below).
  74.  
  75. ------------------------------
  76.  
  77. Subject: 1.1.  What operating systems are supported?
  78.  
  79. Aegis will run on almost any version of    UNIX.  The distribution
  80. contains a configure script generate by    GNU autoconf to    adapt to your
  81. site.
  82.  
  83. There is no Aegis port to NT, OS/2, MS-DOS or VMS.  The    author has no
  84. expertise is these operating systems.  If you do have such expertise,
  85. you are    welcome    to donate a port of Aegis, and I will try to include
  86. your work in the next release.
  87.  
  88. ------------------------------
  89.  
  90. Subject: 1.1.1.     Cygwin
  91.  
  92. There is a very    capable    UNIX emulation layer known as Cygwin available
  93. from Cygnus.  Please see http://sourceware.cygnus.com/cygwin/ for more
  94. information.  But before you get too excited, see the next item.
  95.  
  96. ------------------------------
  97.  
  98. Subject: 1.1.2.     Windows NT
  99.  
  100. Aegis depends on the underlying    security provided by the operating
  101. system (rather than re-invent yet another security mechanism).
  102. However, in order to do    this, Aegis uses the POSIX seteuid system
  103. call, which has    no direct equivalent on    Windows    NT.  This makes
  104. porting    difficult.  Single-user    ports are possible (e.g. using
  105. Cygwin), but are not usually what folks    want.
  106.  
  107. Compounding this is the    fact that many sites want to develop their
  108. software for both Unix and Windows NT simultaneously.  This means that
  109. the security of    the repository needs to    be guaranteed to be handled in
  110. the same way by    both operating systems,    otherwise one can act as a
  111. ``back door'' into the repository.  Many sites do not have the same
  112. users and permissions (sourced from the    same network register of
  113. users) on both Unix and    Windows    NT, making the mapping almost
  114. impossible even    if the security    models did actually correspond.
  115.  
  116. Most sites using Aegis and Windows NT together do so by    running    Aegis
  117. on the Unix systems, but building and testing on the NT    systems.  The
  118. work areas and repository are accessed via Samba or NFS.
  119.  
  120. ------------------------------
  121.  
  122. Subject: 1.2.  Where can I get Aegis?
  123.  
  124. Aegis is available by WWW from
  125.     URL:    http://www.canb.auug.org.au/~millerp/
  126.     File:   aegis.3.17.README      # the    README file from the tar set
  127.     File:   aegis.3.17.faq      # Frequently Asked Questions
  128.     File:   aegis.3.17.lsm      # description    in LSM format
  129.     File:   aegis.3.17.rm.ps.gz      # PostScript of the Reference    Manual
  130.     File:   aegis.3.17.tar.gz      # the    complete source
  131.  
  132.     File:   aegis.3.17.ug.ps.gz      # PostScript of the User Guide
  133.  
  134. The above site has a very slow network link to the outside world.
  135. Aegis is also carried by sunsite.unc.edu in its    Linux archives.     You
  136. will be    able to    find Aegis on any of its mirrors.
  137.     Host:   sunsite.unc.edu
  138.     Dir:    /pub/Linux/devel/vc
  139.     File:   aegis.3.17.README      # the    README file from the tar set
  140.     File:   aegis.3.17.faq      # Frequently Asked Questions
  141.     File:   aegis.3.17.lsm      # description    in LSM format
  142.     File:   aegis.3.17.rm.ps.gz      # PostScript of the Reference    Manual
  143.     File:   aegis.3.17.tar.gz      # the    complete source
  144.     File:   aegis.3.17.ug.ps.gz      # PostScript of the User Guide
  145.  
  146. For those of you without FTP, I    recommend the use of a local ftp-by-
  147. email server.  Here is a list of a few (there are many more):
  148.     ftpmail@cs.uow.edu.au       Australia
  149.     ftpmail@grasp.insa-lyon.fr       France
  150.     ftpmail@ftp.uni-stuttgart.de   Germany
  151.     ftpmail@doc.ic.ac.uk       Great Britain
  152.     ftpmail@ieunet.ie           Ireland
  153.     ftpmail@decwrl.dec.com       USA
  154.     ftpmail@ftp.uu.net           USA
  155.     ftpmail@sunsite.unc.edu       USA
  156.  
  157. In general, you    can get    a help message about how to use    each system by
  158. sending    email with a subject of    "help" and a message body containing
  159. just the word "help".
  160.  
  161. ------------------------------
  162.  
  163. Subject: 1.3.  Is Aegis    actively being maintained?
  164.  
  165. Yes, Aegis is actively being maintained    by the author.    You can
  166. contact    him by email
  167.            Peter Miller <millerp@canb.auug.org.au>
  168.  
  169. ------------------------------
  170.  
  171. Subject: 1.4.  Is there    an Aegis mailing list?
  172.  
  173. Yes.  Discussion may include, but is not limited to: bugs,
  174. enhancements, and applications.     The list is not moderated.
  175.  
  176. The address of the mailing list    is
  177.     aegis-users@canb.auug.org.au
  178.  
  179. DO NOT send email to the list if you wish to subscribe.
  180.  
  181. To subscribe to    this mailing list, send    an email message to
  182. majordomo@canb.auug.org.au with    a message body containing the single
  183. line
  184.     subscribe aegis-users
  185. If you have an address which is    not readily derived from your mail
  186. headers    (majordomo is only a Perl program, after all) you will need to
  187. use a message of the form:
  188.     subscribe aegis-users address
  189. where address is an email address to which you want messages sent.
  190.  
  191. The software which handles this    mailing    list CANNOT send you a copy of
  192. Aegis.    Please use FTP or ftp-by-email,    instead.
  193.  
  194. ------------------------------
  195.  
  196. Subject: 1.5.  How does    Aegis compare with program X?
  197.  
  198. For all    X, ``The author    has no experience with X.  If you wish to
  199. contribute a comparison    between    Aegis and X, it    will be    considered for
  200. addition here.''
  201.  
  202. ------------------------------
  203.  
  204. Subject: 2.  Configuration and initial build problems
  205.  
  206. Aegis is accompanied by    a set of regression tests, and the BUILDING
  207. instructions included in the distribution detail how to    run these
  208. tests.
  209.  
  210. ------------------------------
  211.  
  212. Subject: 2.1.  Changing    Makefile and common/config.h
  213.  
  214. It is a    Bad Idea to change the Makefile    or the common/config.h file by
  215. hand.  This is because much of the work    done by    the configure script
  216. is inter-related.
  217.  
  218. In particular, if you change the C compiler (CC) you absolutely    must
  219. do this    with the involvement of    the configure script.
  220.  
  221. ------------------------------
  222.  
  223. Subject: 2.2.  RCS
  224.  
  225. The tests distributed with Aegis use RCS as their history tool.     It is
  226. important that you use version 5.6 or later.
  227.  
  228. There seems to be a problem with the version of    RCS distributed    with
  229. HP/UX, even though it claims to    be RCS-5.6.0.1.     You will need to get
  230. the latest GNU RCS if you are on a HP box.
  231.  
  232. ------------------------------
  233.  
  234. Subject: 2.3.  SCCS
  235.  
  236. The tests do not automatically detect that you have SCCS.  You will
  237. need to    go out and grab    RCS even if you    already    have SCCS installed at
  238. your site.
  239.  
  240. ------------------------------
  241.  
  242. Subject: 3.  Testing
  243.  
  244. One of the things many sites like about    Aegis, is that it provides
  245. mandatory testing.  This enforcement of    testing    is optional, and is
  246. configurable per-project.
  247.  
  248. Please note that even if Aegis'    testing    framework is not useful    to
  249. your project, the other    aspects    of Aegis' process still    are (e.g.
  250. concurrent development,    mandatory reviews, etc.).
  251.  
  252. ------------------------------
  253.  
  254. Subject: 3.1.  Can I use something besides a shell script?
  255.  
  256. Yes, the ``test_command'' field    of the project config file may be set
  257. to whatever command you    like, see aepconf(5) for more information.
  258.  
  259. A shell    script is the default, because you can run anything out    of the
  260. shell script.  In particular, you can set up a temporary directory
  261. within which to    run the    tests.    If you ``cd'' into this    temporary
  262. directory when running tests, cleanup, no matter what the fallout,
  263. even a core dump, is thus a simple matter of ``rm -rf''    of the
  264. temporary directory.
  265.  
  266. ------------------------------
  267.  
  268. Subject: 3.2.  Testing curses programs
  269.  
  270. I don't    have a curses program tester, nor do I know of one.  It    seems
  271. to me that the ``screen'' program contains all the necessary elements,
  272. however    additional code    would be required to make it a suitable    test
  273. harness.
  274.  
  275. If anyone has found suitable curses testers, even commercial ones, I
  276. would be happy to list (FTP) locations here.
  277.  
  278. ------------------------------
  279.  
  280. Subject: 3.2.1.     Expect
  281.  
  282. Some sites have    been using ``expect'' to test curses programs.    You
  283. need to    be careful about terminal types.  The author is    Don Libes
  284. <libes@nist.gov>
  285.  
  286. expect is available by anonymous FTP from
  287.     Host:   sunsite.unc.edu
  288.     Dir:    pub/Linux/system/Shells
  289.     File:   expect-5.12.tgz
  290.  
  291. The author has not personally used this    system,    and so can make    no
  292. comment    on it.
  293.  
  294. ------------------------------
  295.  
  296. Subject: 3.3.  Testing X11 programs
  297.  
  298. I don't    have an    X11 program tester, however several commercial ones
  299. seem to    be advertised heavily.
  300.  
  301. If anyone has found suitable X11 testers, even commercial ones,    I
  302. would be happy to list additional (FTP)    locations here.
  303.  
  304. ------------------------------
  305.  
  306. Subject: 3.3.1.     replayXt
  307.  
  308. ReplayXt is a library that allows Intrinsics (or Xt) based application
  309. to be executed from a script file.  In particular, applications    based
  310. on the Athena and the Motif toolkits can be played.  The author    is Jan
  311. Newmarch <jan@pandonia.canberra.edu.au>
  312.  
  313. replayXt is available by anonymous FTP from
  314.     Host:   ftp.x.org
  315.     Dir:    /contrib/devel_tools
  316.     File:   replayXt.README
  317.     File:   replayXt.1.1.tar.z
  318.  
  319. The author has not personally used this    system,    and so can make    no
  320. comment    on it.    This entry originated from Simon Pickup
  321. <simon@adacel.com.au>
  322.  
  323. ------------------------------
  324.  
  325. Subject: 3.4.  Testing embedded    systems
  326.  
  327. Yes, embedded system can be developed with Aegis.  Naturally, you will
  328. need a suitable    cross compiler.
  329.  
  330. To test    embedded software, you will need suitable testing hardware:
  331.  
  332. 1. you will need to be able to (automatically) download    the software
  333. into suitable hardware - probably with RAM emulating the ROM of    the
  334. distributed product.
  335.  
  336. 2. you will need to be able to simulate    the various inputs and capture
  337. the various outputs, if    you don't want to do manual testing.
  338.  
  339. 3. you will probably have to write the testing program yourself, to
  340. allow scripting    the inputs and outputs.
  341.  
  342. 4. The gotcha is that in diverting input and output, you will need to
  343. manually test the device drivers, because the tests will probably not
  344. exercise them.
  345.  
  346. The author has worked in an environment    like this, and Aegis is
  347. definitely intended to be useful in this situation.
  348.  
  349. ------------------------------
  350.  
  351. Subject: 3.5.  Do I really need    to test    my software?
  352.  
  353. No, you    do not.     There are alternatives, as this quote demonstrates:
  354.  
  355.     New    York, NJ, Sept.    24 -- People for the Ethical Treatment of
  356.     Software (PETS) announced today that seven more software companies
  357.     have been added to the group's "watch list"    of companies that
  358.     regularly practice software    testing.
  359.  
  360.     "There is no need for software to be mistreated in this way    so
  361.     that companies like    these can market new products,"    said Ken
  362.     Granola, spokesperson for PETS.  "Alternative methods of testing
  363.     these products are available."
  364.  
  365.     According to PETS, these companies force software to undergo
  366.     lengthly and arduous tests,    often without rest for hours or    days
  367.     at a time.    Employees are assigned to "break" the software by any
  368.     means necessary, and inside    sources    report that they often joke
  369.     about "torturing" the software.
  370.  
  371.     "It's no joke," said Granola.  "Innocent programs, from the    day
  372.     they are compiled, are cooped up in    tiny rooms and 'crashed' for
  373.     hours on end.  They    spend their whole lives    on dirty, ill-
  374.     maintained computers, and are unceremoniously deleted when they're
  375.     not    needed anymore."
  376.  
  377.     Granola said the software is kept in unsanitary conditions and is
  378.     infested with bugs.
  379.  
  380.     "We    know alternatives to this horror exist," he said, citing
  381.     industry giant Microsoft Corp. as a    company    that has become
  382.     extremely successful without resorting to software testing.
  383.  
  384. If anyone has an accurate attribution for the above quote, I would
  385. like to    include    it here.
  386.  
  387. ------------------------------
  388.  
  389. Subject: 4.  Miscellaneous
  390.  
  391. This section contains a    whole bunch of things which do not yet belong
  392. anywhere else.
  393.  
  394. ------------------------------
  395.  
  396. Subject: 4.1.  How do you pronounce ``Aegis''?
  397.  
  398. There are many alternatives for    pronouncing this word, and all focus
  399. on the myriad of sounds    available for the "ae" vowel.  Alternatives
  400. include: maestro, aerial, algae, etc.  The author has chosen the
  401. pronunciation found in the majority of dictionaries: ee.j.iz.  That is
  402. "ee" as    in "tree", a "j" as in "job", and "iz" as in "prism".
  403.  
  404. ------------------------------
  405.  
  406. Subject: 4.2.  How do I    automate the integration queue?
  407.  
  408. There is a shell script    in the aegis library directory (usually
  409. /usr/local/lib/aegis/integrate_q.sh) which can be run from cron(1)
  410. daily, or whatever.  This shell    script is a good starting point    for
  411. customizing automatic integrations.
  412.  
  413. Please note that the integration phase also serves to answer the
  414. question ``who reviews the reviewers?''     Monitoring review quality is
  415. essential to maintain product quality.
  416.  
  417. ------------------------------
  418.  
  419. Subject: 4.3.  How do I    enforce    coding standards?
  420.  
  421. The ``diff_command'' field of the project config file need not only
  422. difference the file, it    can also be overloaded to do other things.  If
  423. the difference command fails for any source file, the change may not
  424. leave the being    developed state.
  425.  
  426. For example, if    you wanted to check that line lengths were always 80
  427. characters or less, you    could run the hypothetical ``cklinlen''
  428. command    at diff    time, using
  429.     diff_command = "cklinlen $in &&    fcomp -w -s $orig $in -o $out";
  430. Checking other coding standards    are also possible using    the same basic
  431. method.
  432.  
  433. ------------------------------
  434.  
  435. Subject: 4.4.  How do I    get dates printed before and after build
  436.     commands?
  437.  
  438. Just as    the diff_command file of the project config file can be
  439. extended, so can the build_command field.
  440.     build_command =    "set +e; date; cook ...; x=$?; date; exit $x";
  441. You need to be careful about the -e flag, because Aegis    invokes    the
  442. shell to run the commands with the -e option, to abort after the first
  443. error.
  444.  
  445. You may    want to    upgrade    to Aegis 3.0.  In this version,    the times are
  446. automatically printed as part of the verbose commencement and
  447. completion messages.
  448.  
  449. ------------------------------
  450.  
  451. Subject: 4.5.  How do I    stop Aegis automatically merging?
  452.  
  453. The merging behavior is    controlled by the ``diff_preference'' field of
  454. the user config    file.  See aeuconf(5) for more information.  There are
  455. also three command line    options    to the aed(1) command which can
  456. override the preferences, see aed(1) for more information.
  457.  
  458. To stop    the automatic merging, add the line
  459.     diff_preference    = no_merge;
  460. to the .aegisrc    file in    your more directory.  To specifically perform
  461. a merge    after that, you    will need to use the ``aed -merge_only''
  462. command.  There    is an ``aem'' alias for    your convenience.
  463.  
  464. ------------------------------
  465.  
  466. Subject: 4.6.  How do I    modify which developer is assigned to a
  467.     change?
  468.  
  469. There have been    times when we have one developer working on a change
  470. and, for one reason or another,    we need    assign that change to
  471. different developer before the change is at a point where it can be
  472. integrated.  Is    there a    way to tell Aegis that a new developer has
  473. been assigned to the change so that it would change files permissions
  474. accordingly?  (My thanks to Mark Meuer <markm@endo.com>    for this
  475. question.)
  476.  
  477. Yes, you need to use the aechown(1) command.  This command may be run
  478. by a project administrator to reassign a change    to a different
  479. developer.  Because chown(2) does not work over    NFS, a new development
  480. directory owned    by the new developer is    created, and the change    files
  481. are copied, before the old development directory is deleted.
  482.  
  483. ------------------------------
  484.  
  485. Subject: 4.7.  Do I have to type all the config    examples in the    User
  486.     Guide?
  487.  
  488. No, you    do not.     The lib/config.example    directory contains a number of
  489. files with the config command from the User Guide ready    for inserting
  490. into your project config file.
  491.  
  492. ------------------------------
  493.  
  494. Subject: 4.8.  Is there    a way to recreate a previous baseline?
  495.  
  496. For example, let's say we have shipped one version to a    customer and
  497. since then made    30 changes to the baseline.  When the customer calls
  498. in with    a failure report that we can't reproduce, how can I easily
  499. rebuild    the baseline from 30 changes ago to help track down the    error?
  500.  
  501. Yes, it    is possible to recreate    a previous baseline.  You need to
  502. follow these steps:
  503.  
  504. 1. Determine which delta was shipped to    the customer.  This is easiest
  505. if you embed the version supplied by Aegis into    your executables at
  506. build time.
  507.  
  508. 2. Create a change a change (you want to fix the bug, right?)  and
  509. start developing it.
  510.  
  511. 3. Copy    all of the project files into the change, using    the delta
  512. number determined in step 1.  Use these    commands:
  513.     aecd
  514.     aecp . -delta N
  515. where N    is the delta number from the first step.  Files    created    since
  516. the delta will be copied into your change as empty files, leave    them
  517. alone for a while.
  518.  
  519. Note that you need Aegis 2.3 for directory copying to work correctly.
  520. Earlier    versions will need to use
  521.     aecd
  522.     aecp `aegis -list project_files    -terse`    -delta N
  523. Note the backward quotes.  The above can be abbreviated, its just long
  524. so you can see what it is doing.
  525.  
  526. 4. Build the change as normal.    This will completely rebuild the
  527. version    sent to    the customer.  Note that a number of things are    beyond
  528. Aegis' scope, like operating system updates and    compiler updates.
  529. These can have an effect in accurately reproducing what    was sent to
  530. the customer.
  531.  
  532. 5. Find    the bug    and fix    it, as you would normally do.
  533.  
  534. 5. Merge the change.  This will    bring the files    up to the most recent
  535. version, and merge the bug fix with the    current    version.
  536.  
  537. 6. You can now uncopy all of the files which are unchanged.  Aegis
  538. provides a fast    way to do this
  539.     aecpu -unchanged
  540. This command behaves like aecpu, but it    goes hunting for files which
  541. are the    same between the baseline and the development directory.  Note
  542. that you must do this step after the merge.
  543.  
  544. ------------------------------
  545.  
  546. Subject: 4.9.  How do I    stop it    using the pager?
  547.  
  548. Aegis automatically redirects the output of listing and    help into the
  549. pager program described    in the $PAGER environment variable, or more if
  550. not set.  This is only done if aegis is    running    in the foreground and
  551. the output is a    terminal.
  552.  
  553. The simplest way to stop the use of the    pager is to pipe the output
  554. through    cat.  A    more elegant method is to use the -No_Pager option.
  555.  
  556. If you want to permanently disable the pager, set the following    line
  557. in your    .aegisrc file:
  558.     pager_preference = never;
  559. If you want to use the pager now, you will need    to use the -PAGer
  560. option.
  561.  
  562. ------------------------------
  563.  
  564. Subject: 4.10.    Why does develop end complain about builds?
  565.  
  566. Why does aede complain that "this change must successfully complete an
  567. 'aegis -Build' before it can end development" but I have just done a
  568. successful build?
  569.  
  570. There are two possibilities: time stamps and architectures.
  571.  
  572. ------------------------------
  573.  
  574. Subject: 4.10.1.  Build    Time Stamps
  575.  
  576. Aegis tracks time stamps on files and builds, etc, to determine    when
  577. files are out of date.    If time    clocks on various networked machines
  578. disagree, it is    possible for Aegis to conclude that a file or files
  579. are logically out of date.
  580.  
  581. This problem is    mentioned in the User Guide.  Essentially, you need to
  582. install    NTP or XNTP.  If you can't do that, run    rdate(1) on your
  583. client machines    from cron, to sync their clocks    with the file server's
  584. clock.
  585.  
  586. ------------------------------
  587.  
  588. Subject: 4.10.2.  Build    Architectures
  589.  
  590. The ``aede'' can also complain about builds when you have changed the
  591. architecture field of the project "config" file, but have not yet
  592. updated    the change's attributes    to match.  This    can also happen    when a
  593. separate change    updates    the architecture field,    and all    existing
  594. changes    suddenly get this mystery error.
  595.  
  596. It happens because the default architecture is "unspecified" in    the
  597. change attributes (use ``aeca -l'' to take a look).  When the config
  598. file changes, the required architecture, according to the change's
  599. attributes, is still "unspecified".  To    fix, use ``aeca    -e'' and edit
  600. the change's attributes    to match the architecture names    in the
  601. "config" file.
  602.  
  603. You may    wish to    upgrade    to version 3.0,    which checks for this, and
  604. prints a suitable error    message, with a    suggestion to edit either the
  605. project    ``config'' file    or the change attributes.
  606.  
  607. ------------------------------
  608.  
  609. Subject: 5.  Internationalization
  610.  
  611. This section discusses a number    of issues surrounding
  612. internationalization, and the effect it    has has    upon Aegis and its
  613. error messages.
  614.  
  615. ------------------------------
  616.  
  617. Subject: 5.1.  Say What?
  618.  
  619. Internationalization is    the process of modifying code so that it may
  620. produce    messages in the    native language    of the user.  A    data file is
  621. supplied for each supported language, containing the strings to    be
  622. substituted for    error messages and other text produces by a program.
  623.  
  624. ------------------------------
  625.  
  626. Subject: 5.2.  So why are the error messages So    Bad, now?
  627.  
  628. There is a set of default error    messages in the    code itself.  These
  629. error messages are used    if the localization file cannot    be found, or
  630. if the message is absent from the localization file for    some reason.
  631. These messages tend to be in the ``programmer cryptic''    language, and
  632. the English localization has probably not been installed correctly.
  633. The English localization *needs* to be installed.
  634.  
  635. There is also a    small, slight, tiny (cough) possibility    that the
  636. necessary code changes have introduced bugs into some error reporting.
  637. (And we    need bugs there    like we    need a third arm pit.)    Please report
  638. any problems immediately to the    author.
  639.  
  640. ------------------------------
  641.  
  642. Subject: 5.3.  What controls which language is used?
  643.  
  644. There are a range of environment variables, depending on your
  645. operating system.  The most common is the LANG environment variable.
  646. The default is ``en'' (for English) if nothing is specified.
  647.  
  648. ------------------------------
  649.  
  650. Subject: 5.4.  What localizations are available?
  651.  
  652. Only English is    available at this writing.
  653.  
  654. More may become    available if there are any generous bilingual Aegis
  655. users out there, who want to provide a localization file in another
  656. language.
  657.  
  658. ------------------------------
  659.  
  660. Subject: 5.5.  So can I    change the text    of error messages?
  661.  
  662. Yes, you can, but it is    not advised.  Seriously.  (I'm going to    regret
  663. admitting this,    so I'm not going to tell you how.)  If you have
  664. suggestions for    improving error    messages, please email them to the
  665. author.
  666.  
  667. ------------------------------
  668.  
  669. Subject: 6.  Branches
  670.  
  671. This section discusses a number    of issued surrounding branching.
  672.  
  673. ------------------------------
  674.  
  675. Subject: 6.1.  What is a Branch?
  676.  
  677. Aegis treats branches as ``big changes''.  This    allows much of Aegis'
  678. development model be be    applied    unchanged, but still allow the
  679. development of projects    to be broken down into fine grained pieces, or
  680. aggregated into    large ``release    sized''    chunks.
  681.  
  682. ------------------------------
  683.  
  684. Subject: 6.2.  What is an Anabranch?
  685.  
  686. Aegis' branches    can end.  This is a consequence    of treating branches
  687. as ``big changes''.  Logical places to end branches are    times like
  688. when a release of the software is made.     The geographic    term for a
  689. stream which breaks off    and rejoins downstream is an anabranch.
  690.  
  691. Because    branches can end, combined with    the fact that branches are
  692. ``big changes'', this means that you use ``aede'' to end development
  693. of the branch.    After that, it is just like any    other change on    its
  694. parent branch.
  695.  
  696. ------------------------------
  697.  
  698. Subject: 6.3.  Do branches have    to end?
  699.  
  700. No.  You are not required to end development of    a branch, just as you
  701. are not    required to end    development of a change.  In particular, the
  702. project    trunk is an unnumbered branch which never ends.     How you
  703. manage your project is up to you.
  704.  
  705. ------------------------------
  706.  
  707. Subject: 6.4.  Why are branches    called projects?
  708.  
  709. In order for the branches to be    ``big changes'', there are times when
  710. you will refer to the branch as    a change to its    parent project.     In
  711. order for branches to have changes, there are times when you will
  712. refer to them as a project.
  713.  
  714. The conversion between the two is intended to be simple.  When you
  715. need to    refer to a branch in its project role, join the    branch's
  716. parent project name to the branch's number with    a dot; e.g. ``-p
  717. aegis.1.2''.  When you need to refer to    a branch in its    change role,
  718. separate the branch's project name from    the branch's number at the
  719. last dot; e.g. ``-p aegis.1 -c 2''.
  720.  
  721. ------------------------------
  722.  
  723. Subject: 6.5.  Why must    aed be used when integrating a branch?
  724.  
  725. Because    branches are ``big changes'' and follow    all of the things a
  726. change must do,    including aed.    The only time a    branch is writable is
  727. at integration time for    a change on that branch.  Thus,    the aed    for
  728. the branch is done between aeib    and aeipass.  The trunk    doesn't
  729. require    it, because you    never say aede to the trunk.
  730.  
  731. ------------------------------
  732.  
  733. Subject: 6.6.  How come    the branch baseline is incomplete?
  734.  
  735. The branch baseline is the development directory for the ``big
  736. change'' represented by    the branch.  Just as a developers development
  737. directory only contains    the things being worked    on, and    their
  738. implications, so does the branch baseline.
  739.  
  740. This means that    wherever you specify a search path (-I,    VPATH, etc) to
  741. look first in your development directory and then in the baseline, it
  742. must also look in each of the branch's ancestors' baselines.  Aegis
  743. provides a ``$search_path'' substitution telling you where to search;
  744. this is    usually    used in    the ``build_command'' field of the project
  745. config file.
  746.  
  747. The ``aefind'' command may also    be used    to perform actions similar to
  748. use usual Unix find(1),    but across the Aegis search path.
  749.  
  750. ------------------------------
  751.  
  752. End of aegis.3.17.faq Digest
  753. ***************************
  754.