Dit is de opdracht aenf die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
aegis nieuw bestand - voeg nieuwe bestanden toe die door een wijziging moeten worden aangemaakt
KORTE INHOUD
aegis -Nieuw bestand bestandsnaam... [ optie...]
aegis -Nieuw bestand -Lijst [ optie...]
aegis -Nieuw bestand -Helpen
PRODUCTBESCHRIJVING
De aegis -Nieuw bestand commando wordt gebruikt om nieuwe bestanden aan een wijziging toe te voegen. De genoemde bestanden zullen
worden toegevoegd aan de lijst met bestanden in de wijziging.
Voor elk genoemd bestand wordt een nieuw bestand gemaakt in de ontwikkelingsmap, als dit niet het geval is
bestaan al. Als het bestand al bestaat, wordt het niet gewijzigd.
Als u wilt dat een nieuw bronbestand uitvoerbaar is (shellscripts bijvoorbeeld), dan kunt u dat doen
gebruik gewoon de normale chmod(1) opdracht. Als een van de uitvoerbare bits van het bestand is ingesteld op
aede(1) keer dat het bestand wordt onthouden als uitvoerbaar bestand en dat alle uitvoerbits (minus de
umask van het project) wordt ingesteld door next acp(1) commando's.
Als u een directory een naam geeft op de opdrachtregel, wordt de volledige directorystructuur doorzocht
voor nieuwe bestanden. (Let op: absoluut alles wordt toegevoegd, inclusief puntbestanden en
binaire bestanden, dus u moet eerst alle ongewenste bestanden opruimen.) Bestanden onder deze naam
directory die zich al in de wijziging of in het project bevinden, worden genegeerd. De
bestandsnaam_accepteren en bestandsnaam_afwijzen patronen in het project auspiciën.conf bestand zal dat ook doen
toegepast worden, zie aepconf(5) voor meer informatie.
Directory Voorbeeld
Er zijn momenten waarop een commando zoals
$ aenf fubar/*
aegis: project "voorbeeld": verandering 42: "fubar/glorp" al in verandering
aegis: project "voorbeeld": wijziging 42: 1 fatale fout gevonden, geen nieuwe bestanden toegevoegd
$
zal mislukken, zoals weergegeven. Er zijn verschillende manieren om hiermee om te gaan, waarvan de gemakkelijkste is:
noem eenvoudigweg de map:
$ aenf fubar
aegis: project "voorbeeld": wijziging 42: bestand "fubar/smiley" toegevoegd
aegis: project "voorbeeld": wijziging 42: bestand "fubar/frownie" toegevoegd
$
Je zou ook de vinden(1) opdracht voor willekeurig complexe bestandsselectie, maar jij
moet eerst bestanden uitsluiten die de bovenstaande opdracht automatisch uitsluit:
$ aelcf > uitsluiten
$ aelpf >> uitsluiten
$ vinden fubar -Type f |
grep -v -f uitsluiten |
xargs aegis --nieuw bestand -v
aegis: project "voorbeeld": wijziging 42: bestand "fubar/smiley" toegevoegd
aegis: project "voorbeeld": wijziging 42: bestand "fubar/frownie" toegevoegd
$
Als u de uitsluitingslijst niet gebruikt, wordt de vinden(1) De opdracht heeft een fijnafstemming nodig voor uw
stijl van de ontwikkelingsdirectory. Als u de symlink-stijl gebruikt, moet u toevoegen
the vinden -nlink 1 optie naast de vinden -Type f optie.
$ vinden fubar -Type f -nlinks 1 |
xargs aegis --nieuw bestand -v
aegis: project "voorbeeld": wijziging 42: bestand "fubar/smiley" toegevoegd
aegis: project "voorbeeld": wijziging 42: bestand "fubar/frownie" toegevoegd
$
Als u de volledige ontwikkelmapstijl gebruikt, moet u de
lijstmethode uitsluiten, hierboven.
Dien in Sjablonen
Wanneer een nieuw bestand wordt gemaakt in de ontwikkelingsmap, wordt het project config bestand is
gezocht naar een sjabloon voor het nieuwe bestand. Als er een sjabloon wordt gevonden, wordt het nieuwe bestand
geïnitialiseerd op de sjabloon, anders wordt deze leeg gemaakt. Zien aepconf(5) voor meer
informatie.
De eenvoudigste vorm is het gebruik van sjabloonbestanden, zoals
bestandssjabloon =
[
{
patroon = [ "*.c" ];
body = "${read_file ${bronsjabloon/c abs}}";
},
{
patroon = [ "test/*/.sh" ];
body = "${read_file ${bronsjabloon/test abs}}";
},
];
Zoals u kunt zien, maken de sjabloonbestanden deel uit van de projectbron, dus u kunt de
passende copyrightkennisgevingen en omslagen, etc. De $bron vervanging lokaliseert ze,
als ze geen deel uitmaken van de huidige verandering (en dat zijn ze meestal niet).
De sjabloonbestanden zelf bevatten vervangingen. De $bestandsnaam vervanging is
beschikbaar en bevat de naam van het bestand dat wordt gemaakt. Hierin kan gemanipuleerd worden
verschillende manieren bij het samenstellen van de juiste bestandsinhoud. Zien aesub(5) voor meer
informatie over vervangingen.
Het is ook mogelijk om een opdracht uit te voeren om het nieuwe bestand te maken. Je kunt dit doen in plaats van
een bodystring specificeren, namelijk:
bestandssjabloon =
[
{
patroon = [ "*" ];
body_command = "perl ${source template.pl abs} $bestandsnaam";
},
];
De opdracht wordt uitgevoerd met een huidige map bovenaan de ontwikkelingsmap.
Er is sprake van een fout als de opdracht er niet in slaagt het bestand te maken. Je kunt de twee mixen en matchen
technieken, lichaam string en body_commando, als je wil.
Dien in Naam Beperkingen
Er zijn een aantal besturingselementen beschikbaar om de vorm van projectbestandsnamen te beperken. Alles van
deze besturingselementen zijn te vinden in het projectconfiguratiebestand, zie aepconf(5) voor meer
informatie. De belangrijkste worden hier kort beschreven:
maximale_bestandsnaam_lengte = geheel getal;
Dit veld wordt gebruikt om de lengte van bestandsnamen te beperken. Het is mogelijk dat niet alle nieuwe bestanden dit hebben
padcomponenten langer dan dit. Standaard ingesteld op 255 indien niet ingesteld. Voor maximaal
draagbaarheid moet u dit op 14 zetten.
posix_filename_charset = booleaans;
Dit veld kan worden gebruikt om het aantal toegestane tekens in bestandsnamen te beperken tot alleen die tekens
uitdrukkelijk toegestaan door POSIX. Standaard ingesteld op vals indien niet ingesteld, wat betekent wat uw ook is
besturingssysteem tolereert, behalve witruimte en tekens met veel bits.
Voor maximale draagbaarheid moet u dit instellen waar.
dos_bestandsnaam_required = boolean;
Dit veld kan worden gebruikt om bestandsnamen te beperken, zodat ze voldoen aan DOS 8+3
bestandsnaamlimieten en de DOS-bestandsnaamtekenset. Standaard ingesteld op vals als niet
in te stellen.
windows_filename_required = booleaans;
Dit veld kan worden gebruikt om bestandsnamen te beperken, zodat ze voldoen aan Windows98
en WindowsNT-bestandsnaamlimieten en tekenset. Standaard ingesteld op vals indien niet ingesteld.
shell_safe_filenames = boolean;
Dit veld kan worden gebruikt om bestandsnamen te beperken, zodat ze geen shell bevatten
speciale karakters. Standaard ingesteld op waar indien niet ingesteld. Als dit veld is ingesteld op vals,
je moet de gebruiken ${quote} vervanging rond bestandsnamen in opdrachten, to
Zorg ervoor dat bestandsnamen die speciale shell-tekens bevatten, geen onbedoelde tekens bevatten
bijwerkingen. Vreemde tekens in bestandsnamen kunnen uw afhankelijkheid ook verwarren
onderhoudsmiddel.
allow_white_space_in_filenames = booleaans;
Dit veld kan worden gebruikt om witruimtetekens in bestandsnamen toe te staan. Dit zal
toestaan dat de volgende tekens in bestandsnamen verschijnen: backspace (BS, \b, 0x08),
horizontale tab (HT, \t, 0x09), nieuwe regel (NL, \n, 0x0A), verticale tab (VT, \v,
0x0B), formulierinvoer (FF, \f, 0x0C) en regelterugloop (CR, \r, 0x0D). Standaard ingesteld op
false indien niet ingesteld.
Houd er rekening mee dat dit veld andere bestandsnaamfilters niet overschrijft. Het zal zijn
noodzakelijk om expliciet in te stellen shell_safe_bestandsnamen = vals ook. Het zal zijn
nodig om in te stellen dos_bestandsnaam_vereist = vals (de standaard) ook. Het zal zijn
nodig om in te stellen posix_bestandsnaam_charset = vals (de standaard) ook.
De gebruiker moet er goed op letten dat de vervanging van ${quote} in alle bestanden wordt gebruikt
namen in opdrachten in de projectconfiguratie. En zelfs dan: vervangingen
die een door spaties gescheiden lijst met bestandsnamen verwachten, zullen ongedefinieerde resultaten opleveren.
allow_non_ascii_filenames = booleaans;
Dit veld kan worden gebruikt om bestandsnamen met niet-ASCII-afdrukbare tekens toe te staan
hen. Normaal gesproken zou dit een UTF8 of een soort internationale tekenset betekenen.
Standaard ingesteld op false als deze niet is ingesteld.
Houd er rekening mee dat dit veld andere bestandsnaamfilters niet overschrijft. Het zal zijn
noodzakelijk om expliciet in te stellen shell_safe_bestandsnamen = vals ook. Het zal zijn
nodig om in te stellen dos_bestandsnaam_vereist = vals (de standaard) ook. Het zal zijn
nodig om in te stellen posix_bestandsnaam_charset = vals (de standaard) ook.
bestandsnaam_patroon_accept = [tekenreeks];
Dit veld wordt gebruikt om een lijst met patronen van acceptabele bestandsnamen op te geven.
Standaard ingesteld op "*" indien niet ingesteld.
bestandsnaam_patroon_reject = [tekenreeks];
Dit veld wordt gebruikt om een lijst met patronen van onaanvaardbare bestandsnamen op te geven.
Alstublieft Opmerking: Aegis raadpleegt ook het onderliggende bestandssysteem om zijn notie van te bepalen
maximale bestandsgrootte. Waar de maximale bestandsgrootte van het bestandssysteem kleiner is dan
maximale_bestandsnaam_lengte, het bestandssysteem wint. Dit kan bijvoorbeeld gebeuren wanneer u dat bent
met behulp van het Linux UMSDOS-bestandssysteem, of wanneer je een NFS hebt gekoppeld met een oude V7
bestandssysteem. Instelling maximale_bestandsnaam_lengte tot 255 verandert in deze gevallen niets aan de
feit dat de limieten van de onderliggende bestandssystemen veel kleiner zijn (respectievelijk 12 en 14).
Als uw ontwikkelingsmappen (of uw hele project) zich op bestandssystemen bevinden met bestandsnaam
beperkingen, of een deel van de heterogene builds vindt plaats in een dergelijke omgeving,
het helpt om Aegis te vertellen wat ze zijn (met behulp van het project config bestandsvelden) zodat u
kom niet in de situatie terecht waarin het project voortbouwt op de meer tolerante
omgevingen, maar faalt met mysterieuze fouten in de meer beperkte omgevingen.
Als uw ontwikkelingsmappen routinematig op een Linux UMSDOS-bestandssysteem staan, zou u dat doen
waarschijnlijk beter af zijn dos_bestandsnaam_vereist = waar, en ook het wijzigen van de
ontwikkelingsmap_sjabloon veld. Heterogene ontwikkeling met verschillende Windows
omgevingen kunnen dit ook vereisen.
Dien in Naam Interpretatie
Het aegis-programma zal proberen de projectbestandsnamen te bepalen uit de bestandsnamen
gegeven op de opdrachtregel. Alle bestandsnamen worden binnen aegis-projecten als relatief opgeslagen
naar de hoofdmap van de basismapstructuur. De ontwikkelmap en de
integratiemap zijn schaduwen van deze basismap, en dus zijn deze relatieve namen
ook hier toepassen. Bestanden die op de opdrachtregel worden genoemd, worden eerst geconverteerd naar absolute paden
indien nodig. Ze worden vervolgens vergeleken met het basispad, de ontwikkelingsdirectory
pad en het pad van de integratiedirectory om een relatieve naam aan de basislijn te bepalen. Het is
een fout als het genoemde bestand zich buiten een van deze directorystructuren bevindt.
De -BAse_RElatief optie kan worden gebruikt om ervoor te zorgen dat relatieve bestandsnamen worden geïnterpreteerd als
ten opzichte van het basislijnpad; absolute bestandsnamen worden nog steeds vergeleken met de verschillende
paden om een basislijn-relatieve naam te bepalen.
De relatieve_bestandsnaam_voorkeur in het gebruikersconfiguratiebestand kan worden gebruikt om te wijzigen
dit standaardgedrag. Zien aeuconf(5) voor meer informatie.
De wereld the Type of a Dien in
Als u het type bestand wilt wijzigen (bijvoorbeeld van een testbestand naar een bronbestand, of vice
versa) je zou het als twee wijzigingen kunnen doen, door eerst te gebruiken aerm(1) in één verandering en dan
gebruik aenf(1) of aent(1) in een tweede wijziging, of u kunt beide stappen in dezelfde combineren
verandering. Vergeet niet om de te gebruiken aerm -geenwituit optie of je krijgt een zeer eigenaardige nieuwe
bestandssjabloon.
Dien in Actie Aanpassing
Wanneer deze opdracht wordt uitgevoerd, worden eerst de wijzigingsbestanden vergeleken met de projectbestanden. Indien
er inconsistenties zijn, worden de bestandsacties als volgt aangepast:
create Als een bestand wordt aangemaakt, maar een andere wijzigingsset is geïntegreerd die ook
het bestand maakt, is de bestandsactie in de wijzigingsset die nog wordt ontwikkeld:
aangepast naar "wijzigen".
wijzigen Als een bestand wordt gewijzigd, maar een andere wijzigingsset is geïntegreerd die verwijdert
het bestand, de bestandsactie in de wijzigingsset die nog wordt ontwikkeld, is:
aangepast naar "creëren".
verwijderen Als een bestand wordt verwijderd, maar een andere wijzigingsset is geïntegreerd die verwijdert
het bestand, wordt het bestand verwijderd uit de wijzigingsset die nog wordt ontwikkeld.
Kennisgeving
De nieuw_bestandscommando in het projectconfiguratiebestand wordt uitgevoerd, indien ingesteld. De project_‐
bestand_opdracht wordt ook uitgevoerd, indien ingesteld, en als er recentelijk een integratie heeft plaatsgevonden. Zien
aepconf(5) voor meer informatie.
TEST CORRELATIES
De opdracht "aegis -Test -SUGgest" kan worden gebruikt om auspiciën geschikte regressie te laten voorstellen
test voor uw wijziging, op basis van de bronbestanden in uw wijziging. Dit automatisch
richt de testinspanning op relevante tests, waardoor het aantal regressietests wordt verminderd
nodig om er zeker van te zijn dat u geen bug hebt geïntroduceerd.
De testcorrelaties worden gegenereerd door de opdracht "aegis -Integrate_Pass", die
koppelt elke test in de wijziging aan elk bronbestand in de wijziging. Dus elk
bronbestand verzamelt een lijst met tests die er in het verleden aan zijn gekoppeld.
Dit is niet zo exact als codedekkingsanalyse, maar is een redelijke benadering in
praktijk.
De acp(1) en aenf(1) commando's worden gebruikt om bestanden aan een wijziging te koppelen. Terwijl ze
voer de koppeling niet actief uit, dit zijn de bestanden die worden gebruikt door aeipas(1) en
aet(1) om te bepalen welke bronbestanden aan welke tests zijn gekoppeld.
test Correlatie Nauwkeurigheid
Ervan uitgaande dat de testcorrelaties nauwkeurig zijn en dat de tests gelijkmatig zijn
verdeeld over de functieruimte komt er een kleiner dan 1/nummer kans dat een
relevante test is niet uitgevoerd door de "aegis -Test -SUGgest aantal” commando. Een kleine
hoeveelheid ruis wordt toegevoegd aan de toetsweging, zodat er soms onverwachte zaken zijn
getest en worden niet elke keer dezelfde tests uitgevoerd.
De nauwkeurigheid van de testcorrelatie kan worden verbeterd door ervoor te zorgen dat:
· Elke verandering moet sterk gefocust zijn, zonder onnodige bestandsinsluitingen. Dit
vermijdt valse correlaties.
· Elk item met nieuwe functionaliteit moet worden toegevoegd in een individuele wijziging, in plaats van
meerdere bij elkaar. Dit correleert testen sterk met functionaliteit.
· Elke bug moet worden opgelost in een individuele wijziging, in plaats van meerdere samen. Dit
correleert tests sterk met functionaliteit.
· Testcorrelaties gaan verloren als bestanden worden verplaatst. Dit komt omdat correlaties door zijn
naam.
De beste manier voor tests om nauwkeurig te correleren met bronbestanden is wanneer er een wijziging is
bevat een test en precies die bestanden die betrekking hebben op de geteste functionaliteit. Te
veel valse bestanden zullen het nut van de testcorrelaties verzwakken.
OPTIES
De volgende opties worden begrepen
-Bouwen
Deze optie kan worden gebruikt om te specificeren dat het bestand tijdens een build wordt opgebouwd
(vaak alleen een geïntegreerde build), zodat de geschiedenis ervan bewaard kan blijven. Dit is
handig voor het genereren van patchbestanden, waar een geschiedenis van gegenereerde bestanden is
belangrijk. Bestanden die op deze manier zijn gemaakt, mogen echter niet naar een wijziging worden gekopieerd
ze kunnen worden verwijderd. Vermijd indien mogelijk het gebruik van dit soort bestanden.
-BAse_RElatief
Deze optie kan worden gebruikt om ervoor te zorgen dat relatieve bestandsnamen worden beschouwd als relatief ten opzichte van
de basis van de bronboom. Zien aeuconf(5) voor de corresponderende gebruiker
voorkeur.
-CUrrent_RElatief
Deze optie kan worden gebruikt om ervoor te zorgen dat relatieve bestandsnamen worden beschouwd als relatief ten opzichte van
de huidige map. Dit is meestal de standaardinstelling. Zien aeuconf(5) voor de
overeenkomstige gebruikersvoorkeur.
-Verandering aantal
Deze optie kan worden gebruikt om een bepaalde wijziging binnen een project te specificeren. Zien
aegis(1) voor een volledige beschrijving van deze optie.
-GECONFIGUREERD
Deze optie kan worden gebruikt om aan te geven dat het bestand een Aegis-project is
configuratiebestand. Het standaardprojectconfiguratiebestand wordt aangeroepen auspiciën.conf,
elke bestandsnaam kan echter worden gebruikt. U kunt ook meer dan één bestand gebruiken,
het splitsen van de inhoud over verschillende bestanden, die allemaal van dit type moeten zijn.
-Helpen
Deze optie kan worden gebruikt om meer informatie te verkrijgen over het gebruik van de aegis
programma.
-Houden
Deze optie kan worden gebruikt om bestanden en/of mappen te behouden die gewoonlijk worden verwijderd of
vervangen door de opdracht. Standaard ingesteld op die van de gebruiker verwijder_bestand_voorkeur als niet
opgegeven, zie aeuconf(5) voor meer informatie.
-Nee_Keep
Deze optie kan worden gebruikt om ervoor te zorgen dat de bestanden en/of mappen worden verwijderd
of vervangen door de opdracht. Standaard ingesteld op die van de gebruiker verwijder_bestand_voorkeur als niet
opgegeven, zie aeuconf(5) voor meer informatie.
-Lijst
Deze optie kan worden gebruikt om een lijst met geschikte onderwerpen voor deze opdracht te verkrijgen.
De lijst is mogelijk algemener dan verwacht.
-Niet_Loggen
Deze optie kan worden gebruikt om het automatisch loggen van uitvoer en fouten uit te schakelen naar:
een bestand. Dit is vaak handig wanneer verschillende aegis-commando's in een shell worden gecombineerd
scripts.
-Project naam
Deze optie kan worden gebruikt om het gewenste project te selecteren. wanneer nee? -Project
optie is opgegeven, de AEGIS_PROJECT omgevingsvariabele wordt geraadpleegd. Indien
die niet bestaat, die van de gebruiker $HOME/.aegisrc bestand wordt onderzocht op een standaard
projectveld (zie aeuconf(5) voor meer informatie). Als dat niet bestaat,
wanneer de gebruiker alleen aan wijzigingen binnen een enkel project werkt, wordt het project
naam is standaard voor dat project. Anders is het een fout.
-Sjabloon
Deze optie kan worden gebruikt om te specificeren dat er zelfs een nieuw bestandssjabloon moet worden gebruikt
als het bestand al bestaat.
-Geen_TEMPplate
Deze optie kan worden gebruikt om te specificeren dat er geen nieuw bestandssjabloon mag worden gebruikt.
zelfs als het bestand niet bestaat (er wordt een leeg bestand aangemaakt).
-TERZ
Deze optie kan worden gebruikt om ervoor te zorgen dat vermeldingen het absolute minimum aan
informatie. Het is meestal handig voor shellscripts.
Verbaasd
Deze optie kan worden gebruikt om ervoor te zorgen dat aegis meer output produceert. Standaard aegis
produceert alleen output bij fouten. Bij gebruik met de -Lijst optie deze optie
zorgt ervoor dat kolomkoppen worden toegevoegd.
-Wachten Deze optie kan worden gebruikt om Aegis-commando's te laten wachten op toegangsvergrendelingen, als:
ze kunnen niet onmiddellijk worden verkregen. Standaard ingesteld op de gebruiker lock_wait_preference
indien niet gespecificeerd, zie aeuconf(5) voor meer informatie.
-Nee wacht
Deze optie kan worden gebruikt om te eisen dat Aegis-commando's een fatale fout afgeven als toegang:
sloten kunnen niet direct worden verkregen. Standaard ingesteld op de gebruiker
lock_wait_preference indien niet gespecificeerd, zie aeuconf(5) voor meer informatie.
Zie ook aegis(1) voor opties die alle aegis-commando's gemeen hebben.
Alle opties kunnen worden afgekort; de afkorting is gedocumenteerd als de hoofdletters,
alle kleine letters en underscores (_) zijn optioneel. U moet opeenvolgend . gebruiken
reeksen van optionele letters.
Alle opties zijn niet hoofdlettergevoelig, u kunt ze typen in hoofdletters of kleine letters of a
combinatie van beide, case is niet belangrijk.
Bijvoorbeeld: de argumenten "-project, "-PROJ" en "-p" worden allemaal geïnterpreteerd als de
-Project optie. Het argument "-prj" wordt niet begrepen, omdat consecutief
optionele tekens zijn niet meegeleverd.
Opties en andere opdrachtregelargumenten kunnen willekeurig worden gemengd op de opdrachtregel,
na de functiekiezers.
De GNU lange optienamen worden begrepen. Aangezien alle optienamen voor aegis zijn lang,
dit betekent het negeren van de extra leidende '-'. De "--optie=waarde"conventie is ook"
begrepen.
AANBEVOLEN ALIAS
De aanbevolen alias voor deze opdracht is
csh% alias aenf 'aegis -nf \!* -v'
sh$ aenf(){aegis -nf "$@" -v}
FOUTEN
Het is een fout als de wijziging niet in de wezen ontwikkelde staat.
Het is een fout als de wijziging niet is toegewezen aan de huidige gebruiker.
Het is een fout als het bestand al deel uitmaakt van de wijziging.
Het is een fout als het bestand al deel uitmaakt van de basislijn.
Het is een fout als de bestanden die op de opdrachtregel worden genoemd geen normale bestanden zijn
mappen. (Als u symbolische koppelingen of speciale bestanden nodig heeft, kunt u deze tijdens het bouwen maken.)
EXIT STATUS
De aegis commando wordt afgesloten met een status van 1 bij elke fout. De aegis commando zal alleen
sluit af met een status van 0 als er geen fouten zijn.
MILIEU VARIABELEN
Bekijk aegis(1) voor een lijst met omgevingsvariabelen die van invloed kunnen zijn op deze opdracht. Zien
aepconf(5) voor de projectconfiguratiebestanden project_specifiek veld voor hoe in te stellen
omgevingsvariabelen voor alle opdrachten die door Aegis worden uitgevoerd.
Gebruik aenf online met behulp van onworks.net-services